From f33359fb0c56fe88e0ae3c564b7847f90889eac2 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 9 Aug 2010 20:50:45 +0200 Subject: Doc: Fixes to Qt Quick documentation. Reviewed-by: Trust Me To-be-verified-by: Qt Doc Team --- doc/src/declarative/declarativeui.qdoc | 99 +- doc/src/declarative/dynamicobjects.qdoc | 2 +- doc/src/declarative/elements.qdoc | 6 +- doc/src/declarative/qml-intro.qdoc | 414 +--- doc/src/declarative/qtprogrammers.qdoc | 3 +- doc/src/external-resources.qdoc | 15 + doc/src/getting-started/demos.qdoc | 18 +- doc/src/getting-started/gettingstartedqml.qdoc | 2044 ++++++++++---------- doc/src/getting-started/gettingstartedqt.qdoc | 6 +- doc/src/qt4-intro.qdoc | 8 +- .../ui-components/dialcontrol/content/Dial.qml | 2 + .../ui-components/dialcontrol/dialcontrol.qml | 4 +- src/declarative/qml/qdeclarativecomponent.cpp | 2 +- src/declarative/qml/qdeclarativeengine.cpp | 6 +- 14 files changed, 1159 insertions(+), 1470 deletions(-) diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index 42189c0..ed8b734 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -33,7 +33,7 @@ dynamic, custom user interfaces. Qt Quick provides a declarative framework for building highly dynamic, -custom user interfaces from a rich set of \l {QML Elements}{QML elements}. +custom user interfaces from a rich set of \l{QML Elements}{QML elements}. Qt Quick helps programmers and designers collaborate to build the fluid user interfaces that are becoming common in portable consumer devices, such as mobile phones, media players, set-top boxes @@ -41,73 +41,74 @@ and netbooks. Qt Quick consists of the QtDeclarative C++ module, QML, and the integration of both of these into the Qt Creator IDE. Using the QtDeclarative C++ module, you can load and interact with QML files from your Qt application. -QML is an extension to \l -{http://www.ecma-international.org/publications/standards/Ecma-262.htm} -{JavaScript}, that provides a mechanism to declaratively build an -object tree of \l {QML Elements}{QML elements}. QML improves the -integration between JavaScript and Qt's existing QObject based type -system, adds support for automatic \l {Property Binding}{property -bindings} and provides \l {Network Transparency}{network transparency} -at the language level. +QML is an extension to \l{About JavaScript}{JavaScript}, that provides +a mechanism to declaratively build an object tree of +\l{QML Elements}{QML elements}. QML improves the integration between +JavaScript and Qt's existing QObject-based type system, adds support for +automatic \l{Property Binding}{property bindings} and provides +\l{Network Transparency}{network transparency} at the language level. -The \l {QML Elements}{QML elements} are a sophisticated set of +The \l{QML Elements}{QML elements} are a sophisticated set of graphical and behavioral building blocks. These different elements -are combined together in \l {QML Documents}{QML documents} to build +are combined together in \l{QML Documents}{QML documents} to build components ranging in complexity from simple buttons and sliders, to -complete internet-enabled applications like a \l -{http://www.flickr.com}{Flickr} photo browser. +complete Internet-enabled applications like a photo browser for the +popular \l{http://www.flickr.com}{Flickr} photo-sharing site. -Qt Quick builds on \l {QML for Qt programmers}{Qt's existing -strengths}. QML can be be used to incrementally extend an existing -application or to build completely new applications. QML is fully \l -{Extending QML in C++}{extensible from C++} through the QtDeclarative Module. +Qt Quick builds on \l{QML for Qt programmers}{Qt's existing strengths}. +QML can be be used to incrementally extend an existing application or +to build completely new applications. QML is fully +\l{Extending QML in C++}{extensible from C++} through the QtDeclarative +Module. \section1 Getting Started \list -\o \l {Introduction to the QML language} -\o \l {QML Tutorial}{Tutorial: 'Hello World'} -\o \l {QML Advanced Tutorial}{Tutorial: 'Same Game'} -\o \l {QML Examples and Demos} -\o \l {QML for Qt programmers} +\o \l{Introduction to the QML language} +\o \l{QML Tutorial}{Tutorial: 'Hello World'} +\o \l{QML Advanced Tutorial}{Tutorial: 'Same Game'} +\o \l{QML Examples and Demos} +\o \l{QML for Qt Programmers} +\o \l{Getting Started Programming with QML} +\o \l{Beginning Qt Quick} \endlist \section1 Core QML Features \list -\o \l {QML Documents} -\o \l {Property Binding} -\o \l {Network Transparency} -\o \l {QML Scope} -\o \l {Integrating JavaScript} -\o \l {Data Models} -\o \l {anchor-layout.html}{Anchor-based Layout} -\o \l {qdeclarativestates.html}{States} -\o \l {qdeclarativeanimation.html}{Animation} -\o \l {qdeclarativefocus.html}{Keyboard Focus} -\o \l {qdeclarativemodules.html}{Modules} -\o \l {Extending types from QML} -\o \l {qdeclarativedynamicobjects.html}{Dynamic Object Creation} -\o \l {qmlruntime.html}{The Qt Declarative Runtime} +\o \l{QML Documents} +\o \l{Property Binding} +\o \l{Network Transparency} +\o \l{QML Scope} +\o \l{Integrating JavaScript} +\o \l{Data Models} +\o \l{Anchor-based Layout in QML} +\o \l{QML States} +\o \l{QML Animation} +\o \l{Keyboard Focus in QML} +\o \l{QML Modules} +\o \l{Extending types from QML} +\o \l{Dynamic Object Management in QML} +\o \l{Qt Declarative UI Runtime} \endlist \section1 Using QML with C++ \list -\o \l {Using QML in C++ Applications} -\o \l {Integrating QML with existing Qt UI code} -\o \l {Tutorial: Writing QML extensions with C++} -\o \l {Extending QML in C++} +\o \l{Using QML in C++ Applications} +\o \l{Integrating QML with existing Qt UI code} +\o \l{Tutorial: Writing QML extensions with C++} +\o \l{Extending QML in C++} \endlist \section1 Reference \list -\o \l {QML Elements} -\o \l {QML Global Object} -\o \l {QML Internationalization} -\o \l {QML Security} -\o \l {QtDeclarative Module} -\o \l {Debugging QML} -\o \l {QML Viewer} -\o \l {QML Performance} -\o \l {QML Coding Conventions} +\o \l{QML Elements} +\o \l{QML Global Object} +\o \l{QML Internationalization} +\o \l{QML Security} +\o \l{QtDeclarative Module} +\o \l{Debugging QML} +\o \l{QML Viewer} +\o \l{QML Performance} +\o \l{QML Coding Conventions} \endlist */ diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc index 997f601..e735bce 100644 --- a/doc/src/declarative/dynamicobjects.qdoc +++ b/doc/src/declarative/dynamicobjects.qdoc @@ -27,7 +27,7 @@ /*! \page qdeclarativedynamicobjects.html -\title Dynamic Object Management +\title Dynamic Object Management in QML QML provides a number of ways to dynamically create and manage QML objects. The \l{Loader}, \l{Repeater}, \l{ListView}, \l{GridView} and \l{PathView} elements diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index c2930b3..55b71e1 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -26,11 +26,11 @@ ****************************************************************************/ /*! -\page qdeclarativeelements.html +\page qmlelements.html \target elements \title QML Elements -The following table lists the QML elements provided by the \l {QtDeclarative}{Qt Declarative} module. +The following table lists the QML elements provided by the \l{QtDeclarative} module. \table \header \o {2,1} \bold {Basic Visual Items} @@ -54,7 +54,7 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt \row \o \l {Flickable} \o Provides a surface that can be "flicked" \row \o \l {Flipable} \o Provides a surface that produces flipping effects \row \o \l {GestureArea} (experimental) \o Enables simple gesture handling - + \header \o {2,1} \bold {States} \row \o \l {State} \o Defines sets of configurations of objects and properties \row \o \l {PropertyChanges} \o Describes property changes within a state diff --git a/doc/src/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc index fbab001..69dd500 100644 --- a/doc/src/declarative/qml-intro.qdoc +++ b/doc/src/declarative/qml-intro.qdoc @@ -28,14 +28,11 @@ /*! - -\page qml-intro.html +\page qml-intro.html \title Beginning Qt Quick - \section1 Overview - QML is a high level, scripted language. Its commands, more correctly \e elements, leverage the power and efficiency of the Qt libraries to make easy to use commands that perform intuitive functions. Draw a rectangle, display an image at @@ -61,12 +58,7 @@ would be a property. The basic syntax of an \l {QML Elements}{element} is - \code - SomeElement { - id: myObject - ... some other things here ... - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/basic-syntax.qml basic syntax Here we are defining a new object. We specify its 'type' first as SomeElement. Then within matching braces { ... } we specify the various parts of our @@ -90,61 +82,38 @@ want a rectangle that is 500 pixels by 400 pixels in the x and y directions We can implement this \l Rectangle with these properties this way - \code - import Qt 4.7 - - // This is a comment. And below myRectangle is defined. - Rectangle { - id: myRectangle - width: 500 - height: 400 - } - \endcode +\quotefile doc/src/snippets/declarative/qml-intro/rectangle.qml This is a valid QML script. To run it, copy it and save it to a file, say -myexample.qml, and on the command line run the command +myexample.qml, and on the command line run the following command: - \code - qmlviewer myexample.qml - \endcode +\code +qmlviewer myexample.qml +\endcode On Mac OS X, open the "QMLViewer" application instead and open the \c myexample.qml file, or run it from the command line: - \code - QMLViewer.app/Contents/MacOS/QMLViewer myexample.qml - \endcode - +\code +QMLViewer.app/Contents/MacOS/QMLViewer myexample.qml +\endcode It will create a very boring rectangle in its own window. - \section1 Hello World! We can now add some color and text to make a Hello World QML program. -\l Rectangle has the property \l {Rectangle::color}{color} to produce a +\l Rectangle has the property \l{Rectangle::color}{color} to produce a background color. Text is handled by a different element called \l Text. We need to create a -\l Text object inside the \l Rectangle and set its \l {Text::text}{text} -property to "Hello World!". So to set the text to 'Hello world' and the +\l Text object inside the \l Rectangle and set its \l{Text::}{text} +property to "Hello World!". So to set the text to "Hello world" and the background colour to light gray, - \code - import Qt 4.7 - - Rectangle { - id: myRectangle - width: 500 - height: 400 - - Text { text: "Hello World!" } - - color: "lightgray" - } - \endcode +\quotefile doc/src/snippets/declarative/qml-intro/hello-world1.qml \section1 Hello World Again @@ -158,12 +127,7 @@ position belongs to the \l Text element so we set the position inside its definition. Note that we separate different QML statements on the same line with a semi-colon, or we could have simply put each statement on a new line - \code - Text { - text: "

Hello World

"; color: "darkgreen" - x: 100; y:100 - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/hello-world2.qml updated text Not only did we reposition the text, but the text was altered by adding HTML tags to change the font size. The text color was also changed from the @@ -174,13 +138,7 @@ We could also have used a hexadecimal string for the RGB (red-green-blue, as #rrggbb) values of the color similar to the method used in HTML. For example, mostly blue with a green tint, - \code - Text { - text: "

Hello world again

" - color: "#002288" - x: 100; y: 100 - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/hello-world3.qml updated text All of these changes occurred within the \l Text object which is the scope of these property changes. @@ -198,11 +156,7 @@ source of the image, the path to the file, is a URL. Therefore the file can be local: \e {mydir/myimage1.png}. Or it can be remote: \e {"http://www.example.com/images/myimage1.png"}. - \code - Image { - source: "images/qt-logo.png" - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/hello-world4.qml added an image This displays the image, as we would expect, at the top left of the window. The position of the default x = 0, y = 0 coordinate. The example here uses @@ -213,44 +167,12 @@ Let us reposition the image and enlarge it. Place it at the same 'x' offset as the "Hello world again" text, but put it another 50 pixels below the text, also make it 150 by 150 pixels in size, - \code - Image { - source: "images/qt-logo.png" - x: 100; y: 150 - width: 150; height: 150 - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/hello-world5.qml positioning the image Adding the Hello World example, with the text and the image example we can write a simple piece of QML that starts to look a bit better. - \code - import Qt 4.7 - - Rectangle { - id: myRectangle - width: 500 - height: 400 - - // A light gray background - color: "lightgray" - - // Position and color some text - Text { - text: "

Hello world again

" - color: "darkgreen" - x: 100; y: 100 - } - - // Using the opportunity to resize the image. - Image { - source: "images/qt-logo.png" - x: 100; y: 150 - width: 150; height: 150 - } - - } - \endcode +\quotefile doc/src/snippets/declarative/qml-intro/hello-world5.qml The result is still quite simple @@ -281,22 +203,7 @@ If we want to position an image at the bottom of the rectangle it is inside. I have to specify that the bottom of the image is also at the bottom of the rectangle - \code - import Qt 4.7 - - Rectangle { - id: myWin - width: 500 - height: 400 - - Image { - id: image1 - source: "images/qt-logo.png" - width: 150; height: 150 - anchors.bottom: myWin.bottom - } - } - \endcode +\quotefile doc/src/snippets/declarative/qml-intro/anchors1.qml This places the logo at the bottom left of the window. @@ -315,25 +222,7 @@ the bottomMargin property is used. So the new actions for the script are Encoded into QML the script becomes - \code - import Qt 4.7 - - Rectangle { - id: myWin - width: 500 - height: 400 - - Image { - id: image1 - source: "images/qt-logo.png" - width: 150; height: 150 - anchors.bottom: myWin.bottom - anchors.horizontalCenter: myWin.horizontalCenter - anchors.bottomMargin: 10 - } - } - \endcode - +\quotefile doc/src/snippets/declarative/qml-intro/anchors2.qml Run this and resize the window. You will see that now the position of the image adjusts during the resize. @@ -344,14 +233,7 @@ You can also add another object say a block of descriptive text and place it above or below the image or to the side. This code places some text just above the image - \code - Text { - text: "

The Qt Logo

" - anchors.bottom: image1.top - anchors.horizontalCenter: myWin.horizontalCenter - anchors.bottomMargin: 15 - } - \endcode +\snippet doc/src/snippets/declarative/qml-intro/anchors3.qml adding some text \image qml-intro-anchors3.png @@ -359,17 +241,15 @@ above the image referencing these properties from another object we use the property directly, instead of saying: - \code - myRectangle.anchors.top // Wrong - \endcode +\qml +myRectangle.anchors.top // Wrong +\endqml we use - \code - myRectangle.top // Correct - \endcode - - +\qml +myRectangle.top // Correct +\endqml \section1 Transformations @@ -391,9 +271,9 @@ Rotation of text was also suggested. It could also be useful to scale the text. We can do both. The \l {Item::transform}{transform} property is a \e list of \l Transform elements, so using the list syntax - \code - myList: [ listElement1, listElement2, ... } ] - \endcode +\qml +myList: [ listElement1, listElement2, ... } ] +\endqml we can produce a list of transformations. @@ -402,46 +282,7 @@ vertically by a factor of 1.5 and by 1.2 horizontally. Using the example above as the basis for this we have, - \code - import Qt 4.7 - - Rectangle { - id: myWin - width: 500 - height: 400 - - Image { - id: image1 - source: "images/qt-logo.png" - width: 150; height: 150 - anchors.bottom: myWin.bottom - anchors.horizontalCenter: myWin.horizontalCenter - anchors.bottomMargin: 10 - - transform: Rotation { - origin.x: 75; origin.y: 75 - axis{ x: 0; y: 0; z:1 } angle: -90 - } - - } - - Text { - text: "

The Qt Logo -- taking it easy

" - anchors.bottom: image1.top - anchors.horizontalCenter: myWin.horizontalCenter - anchors.bottomMargin: 15 - - transform: [ - Scale { xScale: 1.5; yScale: 1.2 } , - - Rotation { - origin.x: 75; origin.y: 75 - axis{ x: 0; y: 0; z:1 } angle: -45 - } - ] - } - } - \endcode +\quotefile doc/src/snippets/declarative/qml-intro/transformations1.qml The code block in \c image1 starting with \c transform specifies that the \l {Item::transform}{transform} property will be a Rotation through -90 @@ -479,30 +320,7 @@ from \l Item. The rotation property is a real number that specifies the angle in a clockwise direction for the rotation of the object. Here is the code for our animated rotating image. - \code - import Qt 4.7 - - Rectangle { - id: mainRec - width: 600 - height: 400 - - Image { - id: image1 - source: "images/qt-logo.png" - x: 200; y: 100 - width: 100; height: 100 - - // Animate a rotation - transformOrigin: Item.Center - NumberAnimation on rotation { - from: 0; to: 360 - duration: 2000 - loops: Animation.Infinite - } - } - } - \endcode +\quotefile doc/src/snippets/declarative/number-animation1.qml The \c {transformOrigin: Item.Center} is redundant since this is the default axis of rotation anyway. But if you change \c Center to \c BottomRight you @@ -515,32 +333,7 @@ combination. For example, if the task had been to animate the rotation about the y-axis passing through the center of the image then the following code would do it. - \code - import Qt 4.7 - - Rectangle { - id: mainRec - width: 600 - height: 400 - - Image { - id: image1 - source: "images/qt-logo.png" - x: 200; y: 100 - width: 100; height: 100 - - // Animate a rotation - transform: Rotation { - origin.x: 50; origin.y: 50; axis {x:0; y:1; z:0} angle:0 - NumberAnimation on angle { - from: 0; to: 360; - duration: 3000; - loops: Animation.Infinite - } - } - } - } - \endcode +\quotefile doc/src/snippets/declarative/number-animation2.qml Here there is a rectangle 600 by 400 pixels. Placed within that rectangle is an image 100 by 100 pixels. It is rotated about the center of the image @@ -569,31 +362,7 @@ will be animating the position and the size of the image. First create two images - \code - import Qt 4.7 - - Rectangle { - id: mainRec - width: 600 - height: 400 - z: 0 - - Image { - id: image1 - source: "images/qt-logo.png" - x: 20; y: 20 ; z: 1 - width: 100; height: 100 - } - - Image { - id: image2 - source: "images/qt-logo.png" - width: 100; height: 100 - x: (mainRec.width - 100)/2; y: (mainRec.height - 100)/2 - z: 2 - } - } - \endcode +\quotefile doc/src/snippets/declarative/sequential-animation1.qml We will add to 'image1' a SequentialAnimation from x = 20 to the target of x = 450. The 'from' values will be used because we will be repeating the @@ -606,14 +375,7 @@ between the x values and over a given duration. After the NumberAnimation there will be a PauseAnimation that will pause the animation for 500 milliseconds (half a second) simply for the visual effect. - \code - SequentialAnimation on x { - loops: Animation.Infinite - NumberAnimation { from: 20; to: 450; easing.type: "InOutQuad"; -duration: 2000 } - PauseAnimation { duration: 500 } - } - \endcode +\snippet doc/src/snippets/declarative/sequential-animation2.qml adding a sequential animation A similar block of code is written for the animation of the 'y' value of the position. @@ -628,54 +390,7 @@ and image1 to 1 and image2 to 2 then image2 will be in the foreground and image1 in the background. When image1 passes image2 it will pass behind it. The completed code looks like - \code - Rectangle { - id: mainRec - width: 600 - height: 400 - z: 0 - - Image { - id: image2 - source: "images/qt-logo.png" - width: 100; height: 100 - x: (mainRec.width - 100)/2; y: (mainRec.height - 100)/2 - z: 2 - } - - Image { - id: image1 - source: "images/qt-logo.png" - x: 20; y: 20 ; z: 1 - width: 100; height: 100 - - SequentialAnimation on x { - loops: Animation.Infinite - NumberAnimation { - from: 20; to: 450 - easing.type: "InOutQuad"; duration: 2000 - } - PauseAnimation { duration: 500 } - } - - SequentialAnimation on y { - loops: Animation.Infinite - NumberAnimation { - from: 20; to: 250 - easing.type: "InOutQuad"; duration: 2000 - } - PauseAnimation { duration: 500 } - } - - SequentialAnimation on scale { - loops: Animation.Infinite - NumberAnimation { from: 1; to: 0.5; duration: 1000 } - NumberAnimation { from: 0.5; to: 1; duration: 1000 } - PauseAnimation { duration: 500 } - } - } - } - \endcode +\quotefile doc/src/snippets/declarative/sequential-animation3.qml The \c {easing.type} has many options, expressed as a string. It specifies the kind of equation that describes the acceleration of the property value, not @@ -756,60 +471,7 @@ will be the default state. We will just go to 'night' by clicking and holding the left mouse button down, releasing the mouse button will reverse the process - \code - import Qt 4.7 - - Rectangle { - id: mainRectangle - width: 600 - height: 400 - color: "black" - - Rectangle { - id: sky - width: 600 - height: 200 - y: 0 - color: "lightblue" - } - - Rectangle { - id: ground - width: 600; height: 200 - y: 200 - color: "green" - } - - MouseArea { - id: mousearea - anchors.fill: mainRectangle - } - - states: [ State { - name: "night" - when: mousearea.pressed == true - PropertyChanges { target: sky; color: "darkblue" } - PropertyChanges { target: ground; color: "black" } - }, - State { - name: "daylight" - when: mousearea.pressed == false - PropertyChanges { target: sky; color: "lightblue" } - PropertyChanges { target: ground; color: "green" } - } - ] - - transitions: [ Transition { - from: "daylight"; to: "night" - ColorAnimation { duration: 1000 } - }, - Transition { - from: "night"; to: "daylight" - ColorAnimation { duration: 500 } - } - ] - } - \endcode +\quotefile doc/src/snippets/declarative/states1.qml Several new things appear in this sample. Firstly, we use a \l MouseArea element to detect mouse clicks in the \e mainRectangle. Secondly, we use diff --git a/doc/src/declarative/qtprogrammers.qdoc b/doc/src/declarative/qtprogrammers.qdoc index 68d56bf..c0639db 100644 --- a/doc/src/declarative/qtprogrammers.qdoc +++ b/doc/src/declarative/qtprogrammers.qdoc @@ -26,10 +26,9 @@ ****************************************************************************/ /*! - \page qtprogrammers.html \target qtprogrammers -\title QML for Qt programmers +\title QML for Qt Programmers \section1 Overview diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc index e901124c..61620f5 100644 --- a/doc/src/external-resources.qdoc +++ b/doc/src/external-resources.qdoc @@ -428,3 +428,18 @@ \externalpage http://developer.symbian.org/wiki/index.php/Deploying_a_Qt_Application \title Deploying a Qt Application article */ + +/*! + \externalpage http://www.ecma-international.org/publications/standards/Ecma-262.htm + \title ECMAScript Language Specification +*/ + +/*! + \externalpage https://developer.mozilla.org/en/JavaScript + \title JavaScript +*/ + +/*! + \externalpage https://developer.mozilla.org/en/JavaScript/About_JavaScript + \title About JavaScript +*/ diff --git a/doc/src/getting-started/demos.qdoc b/doc/src/getting-started/demos.qdoc index ef16224..719c861 100644 --- a/doc/src/getting-started/demos.qdoc +++ b/doc/src/getting-started/demos.qdoc @@ -46,7 +46,7 @@ \o \inlineimage qtdemo-small.png \o If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's widgets in action. - + The \l{Qt Widget Gallery} also provides overviews of selected Qt widgets in each of the styles used on various supported platforms. \endtable @@ -134,15 +134,23 @@ \section1 QtWebKit \list - \o \l{Web Browser} demonstrates how Qt's \l{QtWebKit Module}{WebKit module} - can be used to implement a small Web browser. + \o \l{Web Browser} demonstrates how Qt's \l{QtWebKit} module can be used to + implement a small Web browser. + \endlist + + \section1 Multimedia + + \list + \o \l{demos/spectrum}{Spectrum Analyser} shows how the \l{QtMultimedia} + module can be used to manipulate audio as it is played. \endlist \section1 Phonon \list - \o \l{demos/qmediaplayer}{Media Player} demonstrates how the \l{Phonon Module} can be - used to implement a basic media player application. + \o \l{demos/qmediaplayer}{Media Player} demonstrates how the + \l{Phonon Module}{Phonon module} can be used to implement a basic media player + application. \endlist \note The Phonon demos are currently not available for the MinGW platform. diff --git a/doc/src/getting-started/gettingstartedqml.qdoc b/doc/src/getting-started/gettingstartedqml.qdoc index 2bfb71c..885e6ce 100644 --- a/doc/src/getting-started/gettingstartedqml.qdoc +++ b/doc/src/getting-started/gettingstartedqml.qdoc @@ -26,1025 +26,1025 @@ ****************************************************************************/ /*! - \page qml-textEditor.html - - \title Getting Started programming with QML - \ingroup gettingStarted - - Welcome to the world of QML - the declarative UI language. In this Getting - Started guide, we will create a simple text editor application using QML. - After reading this guide, you should be ready to develop your own applications - using QML and Qt C++. - - \section1 QML to Build User Interfaces - - The application we are building is a simple text editor that will load, save, - and perform some text manipulation. This guide will consist of two parts. The - first part will involve designing the application layout and behaviors using - declarative language in QML. For the second part, file loading and saving will - be implemented using Qt C++. Using - \l {The Meta-Object System}{Qt's Meta-Object System}, we can expose C++ functions - as properties that QML elements can use. Utilizing QML and Qt C++, we can - efficiently decouple the interface logic from the application logic. - - \image qml-texteditor5_editmenu.png - - To run the QML example code, merely provide the included \l{QML Viewer}{qmlviewer} - tool with the QML file as the argument. The C++ portion of this tutorial assumes - that the reader possesses basic knowledge of Qt's compilation procedures. - - Tutorial chapters: - \list 1 - \o \l {Defining a Button and a Menu}{Defining a Button and a Menu} - \o \l {Implementing a Menu Bar}{Implementing a Menu Bar} - \o \l {Building a Text Editor}{Building a Text Editor} - \o \l {Decorating the Text Editor}{Decorating the Text Editor} - \o \l {Extending QML using Qt C++}{Extending QML using Qt C++} - \endlist - - \section1 Defining a Button and a Menu - - \section2 Basic Component - a Button - - We start our text editor by building a button. Functionally, a button has a mouse - sensitive area and a label. Buttons perform actions when a user presses the button. - - In QML, the basic visual item is the \l {Rectangle}{Rectangle} element. The - \c Rectangle element has properties to control the element's appearance and location. - - \code - import Qt 4.7 - Rectangle { - id: simplebutton - color: "grey" - width: 150; height: 75 - - Text{ - id: buttonLabel - anchors.centerIn: parent - text: "button label" - } - } - \endcode - - First, the \c { import Qt 4.7 } allows the qmlviewer tool to import the QML elements - we will later use. This line must exist for every QML file. Notice that the version - of Qt modules is included in the import statement. - - This simple rectangle has a unique identifier, \c simplebutton, which is bound to the - id property. The \c Rectangle element's properties are bound to values by listing the - property, followed by a colon, then the value. In the code sample, the color \c grey - is bound to the the Rectangle's \c color property. Similarly, we bind the \c width - and \c height of the Rectangle. - - The \l {Text}{Text} element is a non-editable text field. We name this \c Text element - \c buttonLabel. To set the string content of the Text field, we bind a value to the - \c text property. The label is contained within the Rectangle and in order to center - it in the middle, we assign the \c anchors of the Text element to its parent, which - is called \c simplebutton. Anchors may bind to other items' anchors, allowing layout - assignments simpler. - - We shall save this code as \c SimpleButton.qml. Running qmlviewer with the file as the - argument will display the grey rectangle with a text label. - - \image qml-texteditor1_simplebutton.png - - To implement the button click functionality, we can use QML's event handling. QML's event - handling is very similar to \l {Signals & Slots}{Qt's signal and slot} mechanism. Signals - are emitted and the connected slot is called. - - \code - Rectangle{ - id:simplebutton - ... - - MouseArea{ - id: buttonMouseArea - - anchors.fill: parent //anchor all sides of the mouse area to the rectangle's anchors - //onClicked handles valid mouse button clicks - onClicked: console.log(buttonLabel.text + " clicked" ) - } - } - \endcode - - We include a \l{MouseArea} element in our simplebutton. \c MouseArea elements describe - the interactive area where mouse movements are detected. For our button, we anchor the - whole MouseArea to its parent, which is \c simplebutton. The \c anchors.fill syntax is - one way of accessing a specific property called \c fill inside a group of properties - called \c anchors. QML uses \l {Anchor-based Layout in QML}{anchor based layouts} where - items can anchor to another item, creating robust layouts. - - The \c MouseArea has many signal handlers that are called during mouse movements within - the specfied \c MouseArea boundaries. One of them is \c onClicked and it is called - whenever the acceptable mouse button is clicked, the left click being the default. We - can bind actions to the onClicked handler. In our example, \c console.log() outputs text - whenever the mouse area is clicked. The function \c console.log() is a useful tool for - debugging purposes and for outputting text. - - The code in \c SimpleButton.qml is sufficient to display a button on the screen and - output text whenever it is clicked with a mouse. - - \code - Rectangle { - id:Button - ... - - property color buttonColor: "lightblue" - property color onHoverColor: "gold" - property color borderColor: "white" - - signal buttonClick() - onButtonClick: { - console.log(buttonLabel.text + " clicked" ) - } - - MouseArea{ - onClicked: buttonClick() - hoverEnabled: true - onEntered: parent.border.color = onHoverColor - onExited: parent.border.color = borderColor - } - - //determines the color of the button by using the conditional operator - color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor - } - \endcode - - A fully functioning button is in \c Button.qml. The code snippets in this article - have some code omitted, denoted by ellipses because they were either introduced - earlier in the previous sections or irrelevant to the current code discussion. - - Custom properties are declared using the \c {property type name} syntax. In the - code, the property \c buttonColor, of type \c color, is declared and bound to - the value \c{"lightblue"}. The \c buttonColor is later used in a conditional - operation to determine the buttons's fill color. Note that property value - assignment is possible using the \c= equals sign, in addition to value binding - using the \c : colon character. Custom properties allow internal items to be - accessible outside of the Rectangle's scope. There are basic - \l{QML Basic Types}{QML types} such as \c int, \c string, \c real, as well as - a type called \c variant. - - By binding the \c onEntered and \c onExited signal handlers to colors, the - button's border will turn yellow when the mouse hovers above the button and - reverts the color when the mouse exits the mouse area. - - A \c buttonClick() signal is declared in \c Button.qml by placing the \c signal - keyword in front of the signal name. All signals have their handlers automatically - created, their names starting with \c on. As a result, the \c onButtonClick is - \c buttonClick's handler. The \c onButtonClick is then assigned an action to - perform. In our button example, the \c onClicked mouse handler will simply call - \c onButtonClick, which displays a text. The \c onButtonClick enables outside - objects to access the \c {Button}'s mouse area easily. For example, items may - have more than one \c MouseArea declarations and a \c buttonClick signal can - make the distinction between the several \c MouseArea signal handlers better. - - We now have the basic knowledge to implement items in QML that can handle - basic mouse movements. We created a \c Text label inside a \c Rectangle, - customized its properties, and implemented behaviors that respond to mouse - movements. This idea of creating elements within elements is repeated - throughout the text editor application. - - This button is not useful unless used as a component to perform an action. - In the next section, we will soon create a menu containing several of these - buttons. - - \image qml-texteditor1_button.png - - \section2 Creating a Menu Page - - Up to this stage, we covered how to create elements and assign behaviors inside - a single QML file. In this section, we will cover how to import QML elements and how - to reuse some of the created components to build other components. - - Menus display the contents of a list, each item having the ability to perform an action. - In QML, we can create a menu in several ways. First, we will create a menu containing - buttons which will eventually perform different actions. The menu code is in - \c FileMenu.qml. - - \code - import Qt 4.7 \\import the main Qt QML module - import folderName \\import the contents of the folder - import Button.qml \\import a QML file - import NewButton.qml as ButtonModule \\import a QML file and give it a name - import script.js as Script \\import a Javascript file and name it as Script - \endcode - - To use the \c Button element in \c FileMenu.qml, we need to import \c Button.qml. - The syntax shown above, shows how to use the \c import keyword. However, the - \c {import Button.qml} is not necessary; qmlviewer will import all the contents - of the current directory. We can directly create a \c Button element by declaring - \c Button{}, similar to a \c Rectangle{} declaration. - - \code - In FileMenu.qml: - - Row{ - anchors.centerIn: parent - spacing: parent.width/6 - - Button{ - id: loadButton - buttonColor: "lightgrey" - label: "Load" - } - Button{ - buttonColor: "grey" - id: saveButton - label: "Save" - } - Button{ - id: exitButton - label: "Exit" - buttonColor: "darkgrey" - - onButtonClick: Qt.quit() - } - } - \endcode - - In \c FileMenu.qml, we declare three \c Button elements. They are declared - inside a \l {Row}{Row} element, a positioner that will position its children - along a vertical row. The \c Button declaration resides in Button.qml, - which is the same as the \c Button.qml we used in the previous section. - New property bindings can be declared within the newly created buttons, - effectively overwriting the properties set in \c Button.qml. The button - called \c exitButton will quit and close the window when it is clicked. - Note that the signal handler \c onButtonClick in \c Button.qml will be - called in addition to the \c onButtonClick handler in \c exitButton. - - \image qml-texteditor1_filemenu.png - - The \c Row declaration is declared in a \c Rectangle, creating a rectangle - container for the row of buttons. This additional rectangle creates an indirect - way of organizing the row of buttons inside a menu. - - The declaration of the edit menu is very similar at this stage. The menu has - buttons that have the labels: \c Copy, \c Paste, and \c {Select All}. - - \image qml-texteditor1_editmenu.png - - Armed with our knowledge of importing and customizing previously made - components, we may now combine these menu pages to create a menu bar, - consisting of buttons to select the menu, and look at how we may structure - data using QML. - - \section1 Implementing a Menu Bar - - Our text editor application will need a way to display menus using a menu bar. - The menu bar will switch the different menus and the user can choose which menu - to display. Menu switching implies that the menus need more structure than - merely displaying them in a row. QML uses models and views to structure data - and display the structured data. - - \section2 Using Data Models and Views - - QML has different \l {Data Models}{data views} that display - \l {Data Models}{data models}. Our menu bar will display the menus in a list, - with a header that displays a row of menu names. The list of menus are declared - inside a \c VisualItemModel. The \l{VisualItemModel}{\c VisualItemModel} - element contains items that already have views such as \c Rectangle elements - and imported UI elements. Other model types such as the \l{ListModel}{\c ListModel} - element need a delegate to display their data. - - We declare two visual items in the \c menuListModel, the \c FileMenu and the - \c EditMenu. We customize the two menus and display them using a - \l {ListView}{ListView}. The \c MenuBar.qml file contains the QML declarations - and a simple edit menu is defined in \c EditMenu.qml. - - \code - VisualItemModel{ - id: menuListModel - FileMenu{ - width: menuListView.width - height: menuBar.height - color: fileColor - } - EditMenu{ - color: editColor - width: menuListView.width - height: menuBar.height - } - } - \endcode - - The \l {ListView}{ListView} element will display a model according to a delegate. - The delegate may declare the model items to display in a \c Row element or display - the items in a grid. Our \c menuListModel already has visible items, therefore, - we do not need to declare a delegate. - - \code - ListView{ - id: menuListView - - //Anchors are set to react to window anchors - anchors.fill:parent - anchors.bottom: parent.bottom - width:parent.width - height: parent.height - - //the model contains the data - model: menuListModel - - //control the movement of the menu switching - snapMode: ListView.SnapOneItem - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickDeceleration: 5000 - highlightFollowsCurrentItem: true - highlightMoveDuration:240 - highlightRangeMode: ListView.StrictlyEnforceRange - } - \endcode - - Additionally, \c ListView inherits from \l{Flickable}{\c Flickable}, making - the list respond to mouse drags and other gestures. The last portion of the - code above sets \c Flickable properties to create the desired flicking movement - to our view. In particular,the property \c highlightMoveDuration changes the - duration of the flick transition. A higher \c highlightMoveDuration value - results in slower menu switching. - - The \c ListView maintains the model items through an \c index and each visual - item in the model is accessible through the \c index, in the order of the - declaration. Changing the \c currentIndex effectively changes the highlighted - item in the \c ListView. The header of our menu bar exemplify this effect. - There are two buttons in a row, both changing the current menu when clicked. - The \c fileButton changes the current menu to the file menu when clicked, - the \c index being \c 0 because \c FileMenu is declared first in the - \c menuListModel. Similarly, the \c editButton will change the current - menu to the \c EditMenu when clicked. - - The \c labelList rectangle has \c z value of \c 1, denoting that it is displayed - at the front of the menu bar. Items with higher \c z values are displayed in front - of items with lower \c z values. The default \c z value is \c 0. - - \code - Rectangle{ - id: labelList - ... - z: 1 - Row{ - anchors.centerIn: parent - spacing:40 - Button{ - label: "File" - id: fileButton - ... - onButtonClick: menuListView.currentIndex = 0 - } - Button{ - id: editButton - label: "Edit" - ... - onButtonClick: menuListView.currentIndex = 1 - } - } - } - \endcode - - The menu bar we just created can be flicked to access the menus or by clicking - on the menu names at the top. Switching menu screens feel intuitive and responsive. - - \image qml-texteditor2_menubar.png - - */ - - /*! - \page qml-textEditor3.html - \title Building a Text Editor - - \section1 Declaring a TextArea - - Our text editor is not a text editor if it didn't contain an editable text area. - QML's \l {TextEdit}{TextEdit} element allows the declaration of a multi-line - editable text area. \l {TextEdit}{TextEdit} is different from a \l {Text}{Text} - element, which doesn't allow the user to directly edit the text. - - \code - TextEdit{ - id: textEditor - anchors.fill:parent - width:parent.width; height:parent.height - color:"midnightblue" - focus: true - - wrapMode: TextEdit.Wrap - - onCursorRectangleChanged: flickArea.ensureVisible(cursorRectangle) - } - \endcode - - The editor has its font color property set and set to wrap the text. The - \c TextEdit area is inside a flickable area that will scroll the text if the - text cursor is outside the visible area. The function \c ensureVisible() will - check if the cursor rectangle is outside the visible boundaries and move the - text area accordingly. QML uses Javascript syntax for its scripts, and as previously - mentioned, Javascript files can be imported and used within a QML file. - - \code - function ensureVisible(r){ - if (contentX >= r.x) - contentX = r.x; - else if (contentX+width <= r.x+r.width) - contentX = r.x+r.width-width; - if (contentY >= r.y) - contentY = r.y; - else if (contentY+height <= r.y+r.height) - contentY = r.y+r.height-height; - } - \endcode - - \section1 Combining Components for the Text Editor - - We are now ready to create the layout of our text editor using QML. The text - editor has two components, the menu bar we created and the text area. QML allows - us to reuse components, therefore making our code simpler, by importing components - and customizing when necessary. Our text editor splits the window into two; - one-third of the screen is dedicated to the menu bar and two-thirds of the screen - displays the text area. The menu bar is displayed in front of any other elements. - - \code - Rectangle{ - - id: screen - width: 1000; height: 1000 - - //the screen is partitioned into the MenuBar and TextArea. 1/3 of the screen is assigned to the MenuBar - property int partition: height/3 - - MenuBar{ - id:menuBar - height: partition - width:parent.width - z: 1 - } - - TextArea{ - id:textArea - anchors.bottom:parent.bottom - y: partition - color: "white" - height: partition*2 - width:parent.width - } - } - \endcode - - By importing reusable components, our \c TextEditor code looks much simpler. - We can then customize the main application, without worrying about properties - that already have defined behaviors. Using this approach, application layouts - and UI components can be created easily. - - \image qml-texteditor3_texteditor.png - - */ - - /*! - \page qml-textEditor4 - \title Decorating the Text Editor - \section1 Implementing a Drawer Interface - - Our text editor looks simple and we need to decorate it. Using QML, we can declare - transitions and animate our text editor. Our menu bar is occupying one-third of the - screen and it would be nice to have it only appear when we want it. - - We can add a drawer interface, that will contract or expand the menu bar when clicked. - In our implementation, we have a thin rectangle that responds to mouse clicks. The - \c drawer, as well as the application, has two sates: the "drawer is open" state and - the "drawer is closed" state. The \c drawer item is a strip of rectangle with a small - height. There is a nested \l {Image}{Image} element declaring that an arrow icon will - be centered inside the drawer. The drawer assigns a state to the whole application, - with the identifier \c screen, whenever a user clicks the mouse area. - - \code - Rectangle{ - id:drawer - height:15 - - Image{ - id: arrowIcon - source: "images/arrow.png" - anchors.horizontalCenter: parent.horizontalCenter - } - - MouseArea{ - id: drawerMouseArea - anchors.fill:parent - onClicked:{ - if (screen.state == "DRAWER_CLOSED"){ - screen.state = "DRAWER_OPEN" - } - else if (screen.state == "DRAWER_OPEN"){ - screen.state = "DRAWER_CLOSED" - } - } - ... - } - } - \endcode - - A state is simply a collection of configurations and it is declared in a - \l{State}{State} element. A list of states can be listed and bound to the - \c states property. In our application, the two states are called - \c DRAWER_CLOSED and \c DRAWER_OPEN. Item configurations are declared in - \l {PropertyChanges}{PropertyChanges} elements. In the \c DRAWER_OPEN state, - there are four items that will receive property changes. The first target, - \c menuBar, will change its \c y property to \c 0. Similarly, the \c textArea - will lower to a new position when the state is \c DRAWER_OPEN. The \c textArea, - the \c drawer, and the drawer's icon will undergo property changes to meet the - current state. - - \code - - states:[ - State{ - name: "DRAWER_OPEN" - PropertyChanges { target: menuBar; y:0} - PropertyChanges { target: textArea; y: partition + drawer.height} - PropertyChanges { target: drawer; y: partition} - PropertyChanges { target: arrowIcon; rotation: 180} - }, - State{ - name: "DRAWER_CLOSED" - PropertyChanges { target: menuBar; y:-partition} - PropertyChanges { target: textArea; y: drawer.height; height: screen.height - drawer.height} - PropertyChanges { target: drawer; y: 0} - PropertyChanges { target: arrowIcon; rotation: 0} - } - - ] - - \endcode - - State changes are abrupt and needs smoother transitions. Transitions between states - are defined using the \l {Transition}{Transition} element, which can then bind to - the item's \c transitions property. Our text editor has a state transition whenever - the state changes to either \c DRAWER_OPEN or \c DRAWER_CLOSED. Importantly, the - transition needs a \c from and a \c to state but for our transitions, we can use - the wild card \c * symbol to denote that the transition applies to all state changes. - - During transitions, we can assign animations to the property changes. Our - \c menuBar switches position from \c {y:0} to \c {y:-partition} and we can animate - this transition using the \l {NumberAnimation}{NumberAnimation} element. We declare - that the targets' properties will animate for a certain duration of time and using - a certain easing curve. An easing curve controls the animation rates and - interpolation behavior during state transitions. The easing curve we chose is - \l{PropertyAnimation::easing.type}{Easing.OutQuint}, which slows the movement near - the end of the animation. Pleae read \l {qdeclarativeanimation.html}{QML's Animation} - article. - - \code - transitions: [ - Transition{ - to: "*" - NumberAnimation { target: textArea; properties: "y, height"; duration: 100; easing.type: Easing.OutQuint } - NumberAnimation { target: menuBar; properties: "y"; duration: 100;easing.type: Easing.OutQuint } - NumberAnimation { target: drawer; properties: "y"; duration: 100;easing.type: Easing.OutQuint } - } - ] - \endcode - - Another way of animating property changes is by declaring a \l {Behavior}{Behavior} - element. A transition only works during state changes and \c Behavior can set an - animation for a general property change. In the text editor, the arrow has a - \c NumberAnimation animating its \c rotation property whenever the property changes. - - \code - In TextEditor.qml: - - Behavior{ - NumberAnimation{property: "rotation";easing.type: Easing.OutExpo } - } - \endcode - - Going back to our components with knowledge of states and animations, we can improve - the appearances of the components. In \c Button.qml, we can add \c color and \c scale - property changes when the button is clicked. Color types are animated using - \l {ColorAnimation}{ColorAnimation} and numbers are animated using - \l {NumberAnimation}{NumberAnimation}. The \c {on propertyName} syntax displayed below - is helpful when targeting a single property. - - \code - In Button.qml: - ... - - color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor - Behavior on color { ColorAnimation{ duration: 55} } - - scale: buttonMouseArea.pressed ? 1.1 : 1.00 - Behavior on scale { NumberAnimation{ duration: 55} } - \endcode - - Additionally, we can enhance the appearances of our QML components by adding color - effects such as gradients and opacity effects. Declaring a \l {Gradient}{Gradient} - element will override the \c color property of the element. You may declare a color - in the gradient using the \l {GradientStop}{GradientStop} element. The gradient is - positioned using a scale, between \c 0.0 and \c 1.0. - - \code - In MenuBar.qml - gradient: Gradient { - GradientStop { position: 0.0; color: "#8C8F8C" } - GradientStop { position: 0.17; color: "#6A6D6A" } - GradientStop { position: 0.98;color: "#3F3F3F" } - GradientStop { position: 1.0; color: "#0e1B20" } - } - \endcode - - This gradient is used by the menu bar to display a gradient simulating depth. - The first color starts at \c 0.0 and the last color is at \c 1.0. - - - \section2 Where to Go from Here - - We are finished building the user interface of a very simple text editor. - Going forward, the user interface is complete, and we can implement the - application logic using regular Qt and C++. QML works nicely as a prototyping - tool, separating the application logic away from the UI design. - - \image qml-texteditor4_texteditor.png - - \section1 Extending QML using Qt C++ - - Now that we have our text editor layout, we may now implement the text editor - functionalities in C++. Using QML with C++ enables us to create our application - logic using Qt. We can create a QML context in a C++ application using the - \l {Using QML in C++ Applications}{Qt's Declarative} classes and display the QML - elements using a Graphics Scene. Alternatively, we can export our C++ code into - a plugin that the \l {QML Viewer}{qmlviewer} tool can read. For our application, - we shall implement the load and save functions in C++ and export it as a plugin. - This way, we only need to load the QML file directly instead of running an executable. - - \section2 Exposing C++ Classes to QML - - We will be implementing file loading and saving using Qt and C++. C++ classes - and functions can be used in QML by registering them. The class also needs to be - compiled as a Qt plugin and the QML file will need to know where the plugin is located. - - For our application, we need to create the following items: - \list 1 - \o \c Directory class that will handle directory related operations - \o \c File class which is a QObject, simulating the list of files in a directory - \o plugin class that will register the class to the QML context - \o Qt project file that will compile the plugin - \o A \c qmldir file telling the qmlviewer tool where to find the plugin - \endlist - - \section2 Building a Qt Plugin - - To build a plugin, we need to set the following in a Qt project file. First, - the necessary sources, headers, and Qt modules need to be added into our - project file. All the C++ code and project files are in the \c filedialog - directory. - - \code - In cppPlugins.pro: - - TEMPLATE = lib - CONFIG += qt plugin - QT += declarative - - DESTDIR += ../plugins - OBJECTS_DIR = tmp - MOC_DIR = tmp - - TARGET = FileDialog - - HEADERS += directory.h \ - file.h \ - dialogPlugin.h - - SOURCES += directory.cpp \ - file.cpp \ - dialogPlugin.cpp - \endcode - - In particular, we compile Qt with the \c declarative module and configure it as a - \c plugin, needing a \c lib template. We shall put the compiled plugin into the - parent's \c plugins directory. - - - \section2 Registering a Class into QML - - \code - In dialogPlugin.h: - - #include - - class DialogPlugin : public QDeclarativeExtensionPlugin - { - Q_OBJECT - - public: - void registerTypes(const char *uri); - - }; - - \endcode - Our plugin class, \c DialogPlugin is a subclass of \l {QDeclarativeExtensionPlugin}{QDeclarativeExtensionPlugin}. We need to implement the inherited function, \l {QDeclarativeExtensionPlugin::registerTypes}{registerTypes}. The \c dialogPlugin.cpp file looks like this: - - \code - DialogPlugin.cpp: - - #include "dialogPlugin.h" - #include "directory.h" - #include "file.h" - #include - - void DialogPlugin::registerTypes(const char *uri){ - - qmlRegisterType(uri, 1, 0, "Directory"); - qmlRegisterType(uri, 1, 0,"File"); - } - - Q_EXPORT_PLUGIN2(FileDialog, DialogPlugin); - \endcode - - The \l {QDeclarativeExtensionPlugin::registerTypes}{registerTypes} - function registers our File and Directory classes into QML. This function - needs the class name for its template, a major version number, a minor version - number, and a name for our classes. - - We need to export the plugin using the \l {Q_EXPORT_PLUGIN2}{Q_EXPORT_PLUGIN2} - macro. Note that in our \c dialogPlugin.h file, we have the \l {Q_OBJECT}{Q_OBJECT} - macro at the top of our class. As well, we need to run \c qmake on the project - file to generate the necessary meta-object code. - - - \section2 Creating QML Properties in a C++ class - - We can create QML elements and properties using C++ and - \l {The Meta-Object System}{Qt's Meta-Object System}. We can implement - properties using slots and signals, making Qt aware of these properties. - These properties can then be used in QML. - - For the text editor, we need to be able to load and save files. Typically, - these features are contained in a file dialog. Fortunately, we can use - \l {QDir}{QDir}, \l {QFile}{QFile}, and \l {QTextStream}{QTextStream} to - implement directory reading and input/output streams. - - \code - class Directory : public QObject{ - - Q_OBJECT - - Q_PROPERTY(int filesCount READ filesCount CONSTANT) - Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged) - Q_PROPERTY(QString fileContent READ fileContent WRITE setFileContent NOTIFY fileContentChanged) - Q_PROPERTY(QDeclarativeListProperty files READ files CONSTANT ) - - ... - \endcode - - The \c Directory class uses Qt's Meta-Object System to register properties it - needs to accomplish file handling. The \c Directory class is exported as a plugin - and is useable in QML as the \c Directory element. Each of the listed properties - using the \l {Q_PROPERTY()}{Q_PROPERTY} macro is a QML property. - - The \l {Q_PROPERTY()} {Q_PROPERTY} declares a property as well as its read and - write functions into Qt's Meta-Object System. For example, the \c filename - property, of type \l {QString}{QString}, is readable using the \c filename() - function and writable using the function \c setFilename(). Additionally, there - is a signal associated to the filename property called \c filenameChanged(), - which is emitted whenever the property changes. The read and write functions - are declared as \c public in the header file. - - Similarly, we have the other properties declared according to their uses. The - \c filesCount property indicates the number of files in a directory. The filename - property is set to the currently selected file's name and the loaded/saved file - content is stored in \c fileContent property. - - \code - Q_PROPERTY(QDeclarativeListProperty files READ files CONSTANT ) - \endcode - - The \c files list property is a list of all the filtered files in a directory. - The \c Directory class is implemented to filter out invalid text files; only - files with a \c .txt extension are valid. Further, \l {QLists}{QLists} can be - used in QML files by declaring them as a \c QDeclarativeListProperty in C++. - The templated object needs to inherit from a \l {QObject}{QObject}, therefore, - the \c File class must also inherit from \c QObject. In the \c Directory class, - the list of \c File objects is stored in a \c QList called \c m_fileList. - - \code - class File : public QObject{ - - Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) - - ... - }; - \endcode - - The properties can then be used in QML as part of the \c Directory element's - properties. Note that we do not have to create an identifier \c id property - in our C++ code. - - \code - Directory{ - id: directory - - filesCount - filename - fileContent - files - - files[0].name - } - - \endcode - - Because QML uses Javascript's syntax and structure, we can iterate through - the list of files and retrieve its properties. To retrieve the first file's - name property, we can call \c { files[0].name }. - - Regular C++ functions are also accessible from QML. The file loading and saving - functions are implemented in C++ and declared using the - \l {Q_INVOKABLE}{Q_INVOKABLE} macro. Alternatively, we can declare the functions - as a \c slot and the functions will be accessible from QML. - - \code - In Directory.h: - - Q_INVOKABLE void saveFile(); - Q_INVOKABLE void loadFile(); - \endcode - - The \c Directory class also has to notify other objects whenever the directory - contents change. This feature is performed using a \c signal. As previously - mentioned, QML signals have a corresponding handler with their names prepended - with \c on. The signal is called \c directoryChanged and it is emitted whenever - there is a directory refresh. The refresh simply reloads the directory contents - and updates the list of valid files in the directory. QML items can then be - notified by attaching an action to the \c onDirectoryChanged signal handler. - - The \c list properties need to be explored further. This is because list - properties use callbacks to access and modify the list contents. The list - property is of type \c QDeclarativeListProperty. Whenever the list - is accessed, the accessor function needs to return a - \c QDeclarativeListProperty. The template type, \c File, needs to be a - \c QObject derivative. Further, to create the - \l {QDeclarativeListProperty}{QDeclarativeListProperty}, the list's accessor - and modifiers need to be passed to the consructor as function pointers. The list, - a \c QList in our case, also needs to be a list of \c File pointers. - - The constructor of \l {QDeclarativeListProperty}{QDeclarativeListProperty} - constructor and the \c Directory implementation: - \code - QDeclarativeListProperty ( QObject * object, void * data, AppendFunction append, CountFunction count = 0, AtFunction at = 0, ClearFunction clear = 0 ) - QDeclarativeListProperty( this, &m_fileList, &appendFiles, &filesSize, &fileAt, &clearFilesPtr ); - \endcode - - The constructor passes pointers to functions that will append the list, count - the list, retrieve the item using an index, and empty the list. Only the append - function is mandatory. Note that the function pointers must match the definition - of \l {QDeclarativeListProperty::AppendFunction}{AppendFunction}, - \l {QDeclarativeListProperty::CountFunction}{CountFunction}, - \l {QDeclarativeListProperty::AtFunction}{AtFunction}, or - \l {QDeclarativeListProperty::ClearFunction}{ClearFunction}. - - \code - void appendFiles(QDeclarativeListProperty * property, File * file) - File* fileAt(QDeclarativeListProperty * property, int index) - int filesSize(QDeclarativeListProperty * property) - void clearFilesPtr(QDeclarativeListProperty *property) - \endcode - - To simplify our file dialog, the \c Directory class filters out invalid text - files, which are files that do not have a \c .txt extension. If a file name - doesn't have the \c .txt extension, then it won't be seen in our file dialog. - Also, the implementation makes sure that saved files have a \c .txt extension in - the file name. \c Directory uses \l {QTextStream}{QTextStream} to read the file - and to output the file contents to a file. - - With our \c Directory element, we can retrieve the files as a list, know how many - text files is in the application directory, get the file's name and content as a - string, and be notified whenever there are changes in the directory contents. - - To build the plugin, run \c qmake on the \c cppPlugins.pro project file, then run - \c make to build and transfer the plugin to the \c plugins directory. - - - \section2 Importing a Plugin in QML - - The qmlviewer tool imports files that are in the same directory as the - application. We can also create a \c qmldir file containing the locations of - QML files we wish to import. The \c qmldir file can also store locations of - plugins and other resources. - - \code - In qmldir: - - Button ./Button.qml - FileDialog ./FileDialog.qml - TextArea ./TextArea.qml - TextEditor ./TextEditor.qml - EditMenu ./EditMenu.qml - - plugin FileDialog plugins - \endcode - - The plugin we just created is called \c FileDialog, as indicated by the - \c TARGET field in the project file. The compiled plugin is in the \c plugins directory. - - - \section2 Integrating a File Dialog into the File Menu - - Our \c FileMenu needs to display the \c FileDialog element, containing a list of - the text files in a directory thus allowing the user to select the file by - clicking on the list. We also need to assign the save, load, and new buttons - to their respective actions. The FileMenu contains an editable text input to - allow the user to type a file name using the keyboard. - - The \c Directory element is used in the \c FileMenu.qml file and it notifies the - \c FileDialog element that the directory refreshed its contents. This notification - is performed in the signal handler, \c onDirectoryChanged. - - \code - In FileMenu.qml: - - Directory{ - id:directory - filename: textInput.text - onDirectoryChanged: fileDialog.notifyRefresh() - } - \endcode - - Keeping with the simplicity of our application, the file dialog will always be - visible and will not display invalid text files, which do not have a \c .txt - extension to their filenames. - - \code - In FileDialog.qml: - - signal notifyRefresh() - onNotifyRefresh: dirView.model = directory.files - \endcode - - The \c FileDialog element will display the contents of a directory by reading its - list property called \c files. The files are used as the model of a - \l {GridView}{GridView} element, which displays data items in a grid according - to a delegate. The delegate handles the appearance of the model and our file - dialog will simply create a grid with text centered in the middle. Clicking on - the file name will result in the appearance of a rectangle to highlight the file - name. The \c FileDialog is notified whenever the \c notifyRefresh signal is emitted, - reloading the files in the directory. - - \code - In FileMenu.qml: - - Button{ - id: newButton - label: "New" - onButtonClick:{ - textArea.textContent = "" - } - } - Button{ - id: loadButton - label: "Load" - onButtonClick:{ - directory.filename = textInput.text - directory.loadFile() - textArea.textContent = directory.fileContent - } - } - Button{ - id: saveButton - label: "Save" - onButtonClick:{ - directory.fileContent = textArea.textContent - directory.filename = textInput.text - directory.saveFile() - } - } - Button{ - id: exitButton - label: "Exit" - onButtonClick:{ - Qt.quit() - } - } - \endcode - - Our \c FileMenu can now connect to their respective actions. The \c saveButton - will transfer the text from the \c TextEdit onto the directory's \c fileContent - property, then copy its file name from the editable text input. Finally, the button - calls the \c saveFile() function, saving the file. The \c sloadButton has a similar - execution. Also, the \c New action will empty the contents of the \c TextEdit. - - Further, the \c EditMenu buttons are connected to the \c TextEdit functions to copy, - paste, and select all the text in the text editor. - - \image qml-texteditor5_filemenu.png - - \section1 Text Editor Completion - - \image qml-texteditor5_newfile.png - - The application can function as a simple text editor, able to accept text - and save the text into a file. The text editor can also load from a file and - perform text manipulation. - - -*/ \ No newline at end of file + \page gettingstartedqml.html + \title Getting Started Programming with QML + \ingroup gettingStarted + + Welcome to the world of QML, the declarative UI language. In this Getting + Started guide, we will create a simple text editor application using QML. + After reading this guide, you should be ready to develop your own applications + using QML and Qt C++. + + \section1 QML to Build User Interfaces + + The application we are building is a simple text editor that will load, save, + and perform some text manipulation. This guide will consist of two parts. The + first part will involve designing the application layout and behaviors using + declarative language in QML. For the second part, file loading and saving will + be implemented using Qt C++. Using + \l {The Meta-Object System}{Qt's Meta-Object System}, we can expose C++ functions + as properties that QML elements can use. Utilizing QML and Qt C++, we can + efficiently decouple the interface logic from the application logic. + + \image qml-texteditor5_editmenu.png + + To run the QML example code, merely provide the included \l{QML Viewer}{qmlviewer} + tool with the QML file as the argument. The C++ portion of this tutorial assumes + that the reader possesses basic knowledge of Qt's compilation procedures. + + Tutorial chapters: + \list 1 + \o \l {Defining a Button and a Menu}{Defining a Button and a Menu} + \o \l {Implementing a Menu Bar}{Implementing a Menu Bar} + \o \l {Building a Text Editor}{Building a Text Editor} + \o \l {Decorating the Text Editor}{Decorating the Text Editor} + \o \l {Extending QML using Qt C++}{Extending QML using Qt C++} + \endlist + + \section1 Defining a Button and a Menu + + \section2 Basic Component - a Button + + We start our text editor by building a button. Functionally, a button has a mouse + sensitive area and a label. Buttons perform actions when a user presses the button. + + In QML, the basic visual item is the \l {Rectangle}{Rectangle} element. The + \c Rectangle element has properties to control the element's appearance and location. + + \code + import Qt 4.7 + Rectangle { + id: simplebutton + color: "grey" + width: 150; height: 75 + + Text{ + id: buttonLabel + anchors.centerIn: parent + text: "button label" + } + } + \endcode + + First, the \c { import Qt 4.7 } allows the qmlviewer tool to import the QML elements + we will later use. This line must exist for every QML file. Notice that the version + of Qt modules is included in the import statement. + + This simple rectangle has a unique identifier, \c simplebutton, which is bound to the + id property. The \c Rectangle element's properties are bound to values by listing the + property, followed by a colon, then the value. In the code sample, the color \c grey + is bound to the the Rectangle's \c color property. Similarly, we bind the \c width + and \c height of the Rectangle. + + The \l {Text}{Text} element is a non-editable text field. We name this \c Text element + \c buttonLabel. To set the string content of the Text field, we bind a value to the + \c text property. The label is contained within the Rectangle and in order to center + it in the middle, we assign the \c anchors of the Text element to its parent, which + is called \c simplebutton. Anchors may bind to other items' anchors, allowing layout + assignments simpler. + + We shall save this code as \c SimpleButton.qml. Running qmlviewer with the file as the + argument will display the grey rectangle with a text label. + + \image qml-texteditor1_simplebutton.png + + To implement the button click functionality, we can use QML's event handling. QML's event + handling is very similar to \l {Signals & Slots}{Qt's signal and slot} mechanism. Signals + are emitted and the connected slot is called. + + \code + Rectangle{ + id:simplebutton + ... + + MouseArea{ + id: buttonMouseArea + + anchors.fill: parent //anchor all sides of the mouse area to the rectangle's anchors + //onClicked handles valid mouse button clicks + onClicked: console.log(buttonLabel.text + " clicked" ) + } + } + \endcode + + We include a \l{MouseArea} element in our simplebutton. \c MouseArea elements describe + the interactive area where mouse movements are detected. For our button, we anchor the + whole MouseArea to its parent, which is \c simplebutton. The \c anchors.fill syntax is + one way of accessing a specific property called \c fill inside a group of properties + called \c anchors. QML uses \l {Anchor-based Layout in QML}{anchor based layouts} where + items can anchor to another item, creating robust layouts. + + The \c MouseArea has many signal handlers that are called during mouse movements within + the specfied \c MouseArea boundaries. One of them is \c onClicked and it is called + whenever the acceptable mouse button is clicked, the left click being the default. We + can bind actions to the onClicked handler. In our example, \c console.log() outputs text + whenever the mouse area is clicked. The function \c console.log() is a useful tool for + debugging purposes and for outputting text. + + The code in \c SimpleButton.qml is sufficient to display a button on the screen and + output text whenever it is clicked with a mouse. + + \code + Rectangle { + id:Button + ... + + property color buttonColor: "lightblue" + property color onHoverColor: "gold" + property color borderColor: "white" + + signal buttonClick() + onButtonClick: { + console.log(buttonLabel.text + " clicked" ) + } + + MouseArea{ + onClicked: buttonClick() + hoverEnabled: true + onEntered: parent.border.color = onHoverColor + onExited: parent.border.color = borderColor + } + + //determines the color of the button by using the conditional operator + color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor + } + \endcode + + A fully functioning button is in \c Button.qml. The code snippets in this article + have some code omitted, denoted by ellipses because they were either introduced + earlier in the previous sections or irrelevant to the current code discussion. + + Custom properties are declared using the \c {property type name} syntax. In the + code, the property \c buttonColor, of type \c color, is declared and bound to + the value \c{"lightblue"}. The \c buttonColor is later used in a conditional + operation to determine the buttons's fill color. Note that property value + assignment is possible using the \c= equals sign, in addition to value binding + using the \c : colon character. Custom properties allow internal items to be + accessible outside of the Rectangle's scope. There are basic + \l{QML Basic Types}{QML types} such as \c int, \c string, \c real, as well as + a type called \c variant. + + By binding the \c onEntered and \c onExited signal handlers to colors, the + button's border will turn yellow when the mouse hovers above the button and + reverts the color when the mouse exits the mouse area. + + A \c buttonClick() signal is declared in \c Button.qml by placing the \c signal + keyword in front of the signal name. All signals have their handlers automatically + created, their names starting with \c on. As a result, the \c onButtonClick is + \c buttonClick's handler. The \c onButtonClick is then assigned an action to + perform. In our button example, the \c onClicked mouse handler will simply call + \c onButtonClick, which displays a text. The \c onButtonClick enables outside + objects to access the \c {Button}'s mouse area easily. For example, items may + have more than one \c MouseArea declarations and a \c buttonClick signal can + make the distinction between the several \c MouseArea signal handlers better. + + We now have the basic knowledge to implement items in QML that can handle + basic mouse movements. We created a \c Text label inside a \c Rectangle, + customized its properties, and implemented behaviors that respond to mouse + movements. This idea of creating elements within elements is repeated + throughout the text editor application. + + This button is not useful unless used as a component to perform an action. + In the next section, we will soon create a menu containing several of these + buttons. + + \image qml-texteditor1_button.png + + \section2 Creating a Menu Page + + Up to this stage, we covered how to create elements and assign behaviors inside + a single QML file. In this section, we will cover how to import QML elements and how + to reuse some of the created components to build other components. + + Menus display the contents of a list, each item having the ability to perform an action. + In QML, we can create a menu in several ways. First, we will create a menu containing + buttons which will eventually perform different actions. The menu code is in + \c FileMenu.qml. + + \code + import Qt 4.7 \\import the main Qt QML module + import "folderName" \\import the contents of the folder + import "Button.qml" \\import a QML file + import "NewButton.qml" as ButtonModule \\import a QML file and give it a name + import "script.js" as Script \\import a Javascript file and name it as Script + \endcode + + To use the \c Button element in \c FileMenu.qml, we need to import \c Button.qml. + The syntax shown above, shows how to use the \c import keyword. However, the + \c {import Button.qml} is not necessary; qmlviewer will import all the contents + of the current directory. We can directly create a \c Button element by declaring + \c Button{}, similar to a \c Rectangle{} declaration. + + \code + In FileMenu.qml: + + Row{ + anchors.centerIn: parent + spacing: parent.width/6 + + Button{ + id: loadButton + buttonColor: "lightgrey" + label: "Load" + } + Button{ + buttonColor: "grey" + id: saveButton + label: "Save" + } + Button{ + id: exitButton + label: "Exit" + buttonColor: "darkgrey" + + onButtonClick: Qt.quit() + } + } + \endcode + + In \c FileMenu.qml, we declare three \c Button elements. They are declared + inside a \l {Row}{Row} element, a positioner that will position its children + along a vertical row. The \c Button declaration resides in Button.qml, + which is the same as the \c Button.qml we used in the previous section. + New property bindings can be declared within the newly created buttons, + effectively overwriting the properties set in \c Button.qml. The button + called \c exitButton will quit and close the window when it is clicked. + Note that the signal handler \c onButtonClick in \c Button.qml will be + called in addition to the \c onButtonClick handler in \c exitButton. + + \image qml-texteditor1_filemenu.png + + The \c Row declaration is declared in a \c Rectangle, creating a rectangle + container for the row of buttons. This additional rectangle creates an indirect + way of organizing the row of buttons inside a menu. + + The declaration of the edit menu is very similar at this stage. The menu has + buttons that have the labels: \c Copy, \c Paste, and \c {Select All}. + + \image qml-texteditor1_editmenu.png + + Armed with our knowledge of importing and customizing previously made + components, we may now combine these menu pages to create a menu bar, + consisting of buttons to select the menu, and look at how we may structure + data using QML. + + \section1 Implementing a Menu Bar + + Our text editor application will need a way to display menus using a menu bar. + The menu bar will switch the different menus and the user can choose which menu + to display. Menu switching implies that the menus need more structure than + merely displaying them in a row. QML uses models and views to structure data + and display the structured data. + + \section2 Using Data Models and Views + + QML has different \l {Data Models}{data views} that display + \l {Data Models}{data models}. Our menu bar will display the menus in a list, + with a header that displays a row of menu names. The list of menus are declared + inside a \c VisualItemModel. The \l{VisualItemModel}{\c VisualItemModel} + element contains items that already have views such as \c Rectangle elements + and imported UI elements. Other model types such as the \l{ListModel}{\c ListModel} + element need a delegate to display their data. + + We declare two visual items in the \c menuListModel, the \c FileMenu and the + \c EditMenu. We customize the two menus and display them using a + \l {ListView}{ListView}. The \c MenuBar.qml file contains the QML declarations + and a simple edit menu is defined in \c EditMenu.qml. + + \code + VisualItemModel{ + id: menuListModel + FileMenu{ + width: menuListView.width + height: menuBar.height + color: fileColor + } + EditMenu{ + color: editColor + width: menuListView.width + height: menuBar.height + } + } + \endcode + + The \l {ListView}{ListView} element will display a model according to a delegate. + The delegate may declare the model items to display in a \c Row element or display + the items in a grid. Our \c menuListModel already has visible items, therefore, + we do not need to declare a delegate. + + \code + ListView{ + id: menuListView + + //Anchors are set to react to window anchors + anchors.fill:parent + anchors.bottom: parent.bottom + width:parent.width + height: parent.height + + //the model contains the data + model: menuListModel + + //control the movement of the menu switching + snapMode: ListView.SnapOneItem + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickDeceleration: 5000 + highlightFollowsCurrentItem: true + highlightMoveDuration:240 + highlightRangeMode: ListView.StrictlyEnforceRange + } + \endcode + + Additionally, \c ListView inherits from \l{Flickable}{\c Flickable}, making + the list respond to mouse drags and other gestures. The last portion of the + code above sets \c Flickable properties to create the desired flicking movement + to our view. In particular,the property \c highlightMoveDuration changes the + duration of the flick transition. A higher \c highlightMoveDuration value + results in slower menu switching. + + The \c ListView maintains the model items through an \c index and each visual + item in the model is accessible through the \c index, in the order of the + declaration. Changing the \c currentIndex effectively changes the highlighted + item in the \c ListView. The header of our menu bar exemplify this effect. + There are two buttons in a row, both changing the current menu when clicked. + The \c fileButton changes the current menu to the file menu when clicked, + the \c index being \c 0 because \c FileMenu is declared first in the + \c menuListModel. Similarly, the \c editButton will change the current + menu to the \c EditMenu when clicked. + + The \c labelList rectangle has \c z value of \c 1, denoting that it is displayed + at the front of the menu bar. Items with higher \c z values are displayed in front + of items with lower \c z values. The default \c z value is \c 0. + + \code + Rectangle{ + id: labelList + ... + z: 1 + Row{ + anchors.centerIn: parent + spacing:40 + Button{ + label: "File" + id: fileButton + ... + onButtonClick: menuListView.currentIndex = 0 + } + Button{ + id: editButton + label: "Edit" + ... + onButtonClick: menuListView.currentIndex = 1 + } + } + } + \endcode + + The menu bar we just created can be flicked to access the menus or by clicking + on the menu names at the top. Switching menu screens feel intuitive and responsive. + + \image qml-texteditor2_menubar.png + + */ + + /*! + \page qml-textEditor3.html + \title Building a Text Editor + + \section1 Declaring a TextArea + + Our text editor is not a text editor if it didn't contain an editable text area. + QML's \l {TextEdit}{TextEdit} element allows the declaration of a multi-line + editable text area. \l {TextEdit}{TextEdit} is different from a \l {Text}{Text} + element, which doesn't allow the user to directly edit the text. + + \code + TextEdit{ + id: textEditor + anchors.fill:parent + width:parent.width; height:parent.height + color:"midnightblue" + focus: true + + wrapMode: TextEdit.Wrap + + onCursorRectangleChanged: flickArea.ensureVisible(cursorRectangle) + } + \endcode + + The editor has its font color property set and set to wrap the text. The + \c TextEdit area is inside a flickable area that will scroll the text if the + text cursor is outside the visible area. The function \c ensureVisible() will + check if the cursor rectangle is outside the visible boundaries and move the + text area accordingly. QML uses Javascript syntax for its scripts, and as previously + mentioned, Javascript files can be imported and used within a QML file. + + \code + function ensureVisible(r){ + if (contentX >= r.x) + contentX = r.x; + else if (contentX+width <= r.x+r.width) + contentX = r.x+r.width-width; + if (contentY >= r.y) + contentY = r.y; + else if (contentY+height <= r.y+r.height) + contentY = r.y+r.height-height; + } + \endcode + + \section1 Combining Components for the Text Editor + + We are now ready to create the layout of our text editor using QML. The text + editor has two components, the menu bar we created and the text area. QML allows + us to reuse components, therefore making our code simpler, by importing components + and customizing when necessary. Our text editor splits the window into two; + one-third of the screen is dedicated to the menu bar and two-thirds of the screen + displays the text area. The menu bar is displayed in front of any other elements. + + \code + Rectangle{ + + id: screen + width: 1000; height: 1000 + + //the screen is partitioned into the MenuBar and TextArea. 1/3 of the screen is assigned to the MenuBar + property int partition: height/3 + + MenuBar{ + id:menuBar + height: partition + width:parent.width + z: 1 + } + + TextArea{ + id:textArea + anchors.bottom:parent.bottom + y: partition + color: "white" + height: partition*2 + width:parent.width + } + } + \endcode + + By importing reusable components, our \c TextEditor code looks much simpler. + We can then customize the main application, without worrying about properties + that already have defined behaviors. Using this approach, application layouts + and UI components can be created easily. + + \image qml-texteditor3_texteditor.png + + */ + + /*! + \page qml-textEditor4 + \title Decorating the Text Editor + \section1 Implementing a Drawer Interface + + Our text editor looks simple and we need to decorate it. Using QML, we can declare + transitions and animate our text editor. Our menu bar is occupying one-third of the + screen and it would be nice to have it only appear when we want it. + + We can add a drawer interface, that will contract or expand the menu bar when clicked. + In our implementation, we have a thin rectangle that responds to mouse clicks. The + \c drawer, as well as the application, has two sates: the "drawer is open" state and + the "drawer is closed" state. The \c drawer item is a strip of rectangle with a small + height. There is a nested \l {Image}{Image} element declaring that an arrow icon will + be centered inside the drawer. The drawer assigns a state to the whole application, + with the identifier \c screen, whenever a user clicks the mouse area. + + \code + Rectangle{ + id:drawer + height:15 + + Image{ + id: arrowIcon + source: "images/arrow.png" + anchors.horizontalCenter: parent.horizontalCenter + } + + MouseArea{ + id: drawerMouseArea + anchors.fill:parent + onClicked:{ + if (screen.state == "DRAWER_CLOSED"){ + screen.state = "DRAWER_OPEN" + } + else if (screen.state == "DRAWER_OPEN"){ + screen.state = "DRAWER_CLOSED" + } + } + ... + } + } + \endcode + + A state is simply a collection of configurations and it is declared in a + \l{State}{State} element. A list of states can be listed and bound to the + \c states property. In our application, the two states are called + \c DRAWER_CLOSED and \c DRAWER_OPEN. Item configurations are declared in + \l {PropertyChanges}{PropertyChanges} elements. In the \c DRAWER_OPEN state, + there are four items that will receive property changes. The first target, + \c menuBar, will change its \c y property to \c 0. Similarly, the \c textArea + will lower to a new position when the state is \c DRAWER_OPEN. The \c textArea, + the \c drawer, and the drawer's icon will undergo property changes to meet the + current state. + + \code + + states:[ + State{ + name: "DRAWER_OPEN" + PropertyChanges { target: menuBar; y:0} + PropertyChanges { target: textArea; y: partition + drawer.height} + PropertyChanges { target: drawer; y: partition} + PropertyChanges { target: arrowIcon; rotation: 180} + }, + State{ + name: "DRAWER_CLOSED" + PropertyChanges { target: menuBar; y:-partition} + PropertyChanges { target: textArea; y: drawer.height; height: screen.height - drawer.height} + PropertyChanges { target: drawer; y: 0} + PropertyChanges { target: arrowIcon; rotation: 0} + } + + ] + + \endcode + + State changes are abrupt and needs smoother transitions. Transitions between states + are defined using the \l {Transition}{Transition} element, which can then bind to + the item's \c transitions property. Our text editor has a state transition whenever + the state changes to either \c DRAWER_OPEN or \c DRAWER_CLOSED. Importantly, the + transition needs a \c from and a \c to state but for our transitions, we can use + the wild card \c * symbol to denote that the transition applies to all state changes. + + During transitions, we can assign animations to the property changes. Our + \c menuBar switches position from \c {y:0} to \c {y:-partition} and we can animate + this transition using the \l {NumberAnimation}{NumberAnimation} element. We declare + that the targets' properties will animate for a certain duration of time and using + a certain easing curve. An easing curve controls the animation rates and + interpolation behavior during state transitions. The easing curve we chose is + \l{PropertyAnimation::easing.type}{Easing.OutQuint}, which slows the movement near + the end of the animation. Pleae read \l {qdeclarativeanimation.html}{QML's Animation} + article. + + \code + transitions: [ + Transition{ + to: "*" + NumberAnimation { target: textArea; properties: "y, height"; duration: 100; easing.type: Easing.OutQuint } + NumberAnimation { target: menuBar; properties: "y"; duration: 100;easing.type: Easing.OutQuint } + NumberAnimation { target: drawer; properties: "y"; duration: 100;easing.type: Easing.OutQuint } + } + ] + \endcode + + Another way of animating property changes is by declaring a \l {Behavior}{Behavior} + element. A transition only works during state changes and \c Behavior can set an + animation for a general property change. In the text editor, the arrow has a + \c NumberAnimation animating its \c rotation property whenever the property changes. + + \code + In TextEditor.qml: + + Behavior{ + NumberAnimation{property: "rotation";easing.type: Easing.OutExpo } + } + \endcode + + Going back to our components with knowledge of states and animations, we can improve + the appearances of the components. In \c Button.qml, we can add \c color and \c scale + property changes when the button is clicked. Color types are animated using + \l {ColorAnimation}{ColorAnimation} and numbers are animated using + \l {NumberAnimation}{NumberAnimation}. The \c {on propertyName} syntax displayed below + is helpful when targeting a single property. + + \code + In Button.qml: + ... + + color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor + Behavior on color { ColorAnimation{ duration: 55} } + + scale: buttonMouseArea.pressed ? 1.1 : 1.00 + Behavior on scale { NumberAnimation{ duration: 55} } + \endcode + + Additionally, we can enhance the appearances of our QML components by adding color + effects such as gradients and opacity effects. Declaring a \l {Gradient}{Gradient} + element will override the \c color property of the element. You may declare a color + in the gradient using the \l {GradientStop}{GradientStop} element. The gradient is + positioned using a scale, between \c 0.0 and \c 1.0. + + \code + In MenuBar.qml + gradient: Gradient { + GradientStop { position: 0.0; color: "#8C8F8C" } + GradientStop { position: 0.17; color: "#6A6D6A" } + GradientStop { position: 0.98;color: "#3F3F3F" } + GradientStop { position: 1.0; color: "#0e1B20" } + } + \endcode + + This gradient is used by the menu bar to display a gradient simulating depth. + The first color starts at \c 0.0 and the last color is at \c 1.0. + + + \section2 Where to Go from Here + + We are finished building the user interface of a very simple text editor. + Going forward, the user interface is complete, and we can implement the + application logic using regular Qt and C++. QML works nicely as a prototyping + tool, separating the application logic away from the UI design. + + \image qml-texteditor4_texteditor.png + + \section1 Extending QML using Qt C++ + + Now that we have our text editor layout, we may now implement the text editor + functionalities in C++. Using QML with C++ enables us to create our application + logic using Qt. We can create a QML context in a C++ application using the + \l {Using QML in C++ Applications}{Qt's Declarative} classes and display the QML + elements using a Graphics Scene. Alternatively, we can export our C++ code into + a plugin that the \l {QML Viewer}{qmlviewer} tool can read. For our application, + we shall implement the load and save functions in C++ and export it as a plugin. + This way, we only need to load the QML file directly instead of running an executable. + + \section2 Exposing C++ Classes to QML + + We will be implementing file loading and saving using Qt and C++. C++ classes + and functions can be used in QML by registering them. The class also needs to be + compiled as a Qt plugin and the QML file will need to know where the plugin is located. + + For our application, we need to create the following items: + \list 1 + \o \c Directory class that will handle directory related operations + \o \c File class which is a QObject, simulating the list of files in a directory + \o plugin class that will register the class to the QML context + \o Qt project file that will compile the plugin + \o A \c qmldir file telling the qmlviewer tool where to find the plugin + \endlist + + \section2 Building a Qt Plugin + + To build a plugin, we need to set the following in a Qt project file. First, + the necessary sources, headers, and Qt modules need to be added into our + project file. All the C++ code and project files are in the \c filedialog + directory. + + \code + In cppPlugins.pro: + + TEMPLATE = lib + CONFIG += qt plugin + QT += declarative + + DESTDIR += ../plugins + OBJECTS_DIR = tmp + MOC_DIR = tmp + + TARGET = FileDialog + + HEADERS += directory.h \ + file.h \ + dialogPlugin.h + + SOURCES += directory.cpp \ + file.cpp \ + dialogPlugin.cpp + \endcode + + In particular, we compile Qt with the \c declarative module and configure it as a + \c plugin, needing a \c lib template. We shall put the compiled plugin into the + parent's \c plugins directory. + + + \section2 Registering a Class into QML + + \code + In dialogPlugin.h: + + #include + + class DialogPlugin : public QDeclarativeExtensionPlugin + { + Q_OBJECT + + public: + void registerTypes(const char *uri); + + }; + + \endcode + + Our plugin class, \c DialogPlugin is a subclass of \l{QDeclarativeExtensionPlugin}. + We need to implement the inherited function, \l {QDeclarativeExtensionPlugin::}{registerTypes()}. + The \c dialogPlugin.cpp file looks like this: + + \code + DialogPlugin.cpp: + + #include "dialogPlugin.h" + #include "directory.h" + #include "file.h" + #include + + void DialogPlugin::registerTypes(const char *uri){ + + qmlRegisterType(uri, 1, 0, "Directory"); + qmlRegisterType(uri, 1, 0,"File"); + } + + Q_EXPORT_PLUGIN2(FileDialog, DialogPlugin); + \endcode + + The \l{QDeclarativeExtensionPlugin::}{registerTypes()} function registers + our File and Directory classes into QML. This function needs the class name + for its template, a major version number, a minor version number, and a name + for our classes. + + We need to export the plugin using the \l {Q_EXPORT_PLUGIN2}{Q_EXPORT_PLUGIN2} + macro. Note that in our \c dialogPlugin.h file, we have the \l {Q_OBJECT}{Q_OBJECT} + macro at the top of our class. As well, we need to run \c qmake on the project + file to generate the necessary meta-object code. + + + \section2 Creating QML Properties in a C++ class + + We can create QML elements and properties using C++ and + \l {The Meta-Object System}{Qt's Meta-Object System}. We can implement + properties using slots and signals, making Qt aware of these properties. + These properties can then be used in QML. + + For the text editor, we need to be able to load and save files. Typically, + these features are contained in a file dialog. Fortunately, we can use + \l {QDir}{QDir}, \l {QFile}{QFile}, and \l {QTextStream}{QTextStream} to + implement directory reading and input/output streams. + + \code + class Directory : public QObject{ + + Q_OBJECT + + Q_PROPERTY(int filesCount READ filesCount CONSTANT) + Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged) + Q_PROPERTY(QString fileContent READ fileContent WRITE setFileContent NOTIFY fileContentChanged) + Q_PROPERTY(QDeclarativeListProperty files READ files CONSTANT ) + + ... + \endcode + + The \c Directory class uses Qt's Meta-Object System to register properties it + needs to accomplish file handling. The \c Directory class is exported as a plugin + and is useable in QML as the \c Directory element. Each of the listed properties + using the \l {Q_PROPERTY()}{Q_PROPERTY} macro is a QML property. + + The \l {Q_PROPERTY()} {Q_PROPERTY} declares a property as well as its read and + write functions into Qt's Meta-Object System. For example, the \c filename + property, of type \l {QString}{QString}, is readable using the \c filename() + function and writable using the function \c setFilename(). Additionally, there + is a signal associated to the filename property called \c filenameChanged(), + which is emitted whenever the property changes. The read and write functions + are declared as \c public in the header file. + + Similarly, we have the other properties declared according to their uses. The + \c filesCount property indicates the number of files in a directory. The filename + property is set to the currently selected file's name and the loaded/saved file + content is stored in \c fileContent property. + + \code + Q_PROPERTY(QDeclarativeListProperty files READ files CONSTANT ) + \endcode + + The \c files list property is a list of all the filtered files in a directory. + The \c Directory class is implemented to filter out invalid text files; only + files with a \c .txt extension are valid. Further, \l {QLists}{QLists} can be + used in QML files by declaring them as a \c QDeclarativeListProperty in C++. + The templated object needs to inherit from a \l {QObject}{QObject}, therefore, + the \c File class must also inherit from \c QObject. In the \c Directory class, + the list of \c File objects is stored in a \c QList called \c m_fileList. + + \code + class File : public QObject{ + + Q_OBJECT + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + + ... + }; + \endcode + + The properties can then be used in QML as part of the \c Directory element's + properties. Note that we do not have to create an identifier \c id property + in our C++ code. + + \code + Directory{ + id: directory + + filesCount + filename + fileContent + files + + files[0].name + } + + \endcode + + Because QML uses Javascript's syntax and structure, we can iterate through + the list of files and retrieve its properties. To retrieve the first file's + name property, we can call \c { files[0].name }. + + Regular C++ functions are also accessible from QML. The file loading and saving + functions are implemented in C++ and declared using the + \l {Q_INVOKABLE}{Q_INVOKABLE} macro. Alternatively, we can declare the functions + as a \c slot and the functions will be accessible from QML. + + \code + In Directory.h: + + Q_INVOKABLE void saveFile(); + Q_INVOKABLE void loadFile(); + \endcode + + The \c Directory class also has to notify other objects whenever the directory + contents change. This feature is performed using a \c signal. As previously + mentioned, QML signals have a corresponding handler with their names prepended + with \c on. The signal is called \c directoryChanged and it is emitted whenever + there is a directory refresh. The refresh simply reloads the directory contents + and updates the list of valid files in the directory. QML items can then be + notified by attaching an action to the \c onDirectoryChanged signal handler. + + The \c list properties need to be explored further. This is because list + properties use callbacks to access and modify the list contents. The list + property is of type \c QDeclarativeListProperty. Whenever the list + is accessed, the accessor function needs to return a + \c QDeclarativeListProperty. The template type, \c File, needs to be a + \c QObject derivative. Further, to create the + \l {QDeclarativeListProperty}{QDeclarativeListProperty}, the list's accessor + and modifiers need to be passed to the consructor as function pointers. The list, + a \c QList in our case, also needs to be a list of \c File pointers. + + The constructor of \l {QDeclarativeListProperty}{QDeclarativeListProperty} + constructor and the \c Directory implementation: + \code + QDeclarativeListProperty ( QObject * object, void * data, AppendFunction append, CountFunction count = 0, AtFunction at = 0, ClearFunction clear = 0 ) + QDeclarativeListProperty( this, &m_fileList, &appendFiles, &filesSize, &fileAt, &clearFilesPtr ); + \endcode + + The constructor passes pointers to functions that will append the list, count + the list, retrieve the item using an index, and empty the list. Only the append + function is mandatory. Note that the function pointers must match the definition + of \l {QDeclarativeListProperty::AppendFunction}{AppendFunction}, + \l {QDeclarativeListProperty::CountFunction}{CountFunction}, + \l {QDeclarativeListProperty::AtFunction}{AtFunction}, or + \l {QDeclarativeListProperty::ClearFunction}{ClearFunction}. + + \code + void appendFiles(QDeclarativeListProperty * property, File * file) + File* fileAt(QDeclarativeListProperty * property, int index) + int filesSize(QDeclarativeListProperty * property) + void clearFilesPtr(QDeclarativeListProperty *property) + \endcode + + To simplify our file dialog, the \c Directory class filters out invalid text + files, which are files that do not have a \c .txt extension. If a file name + doesn't have the \c .txt extension, then it won't be seen in our file dialog. + Also, the implementation makes sure that saved files have a \c .txt extension in + the file name. \c Directory uses \l {QTextStream}{QTextStream} to read the file + and to output the file contents to a file. + + With our \c Directory element, we can retrieve the files as a list, know how many + text files is in the application directory, get the file's name and content as a + string, and be notified whenever there are changes in the directory contents. + + To build the plugin, run \c qmake on the \c cppPlugins.pro project file, then run + \c make to build and transfer the plugin to the \c plugins directory. + + + \section2 Importing a Plugin in QML + + The qmlviewer tool imports files that are in the same directory as the + application. We can also create a \c qmldir file containing the locations of + QML files we wish to import. The \c qmldir file can also store locations of + plugins and other resources. + + \code + In qmldir: + + Button ./Button.qml + FileDialog ./FileDialog.qml + TextArea ./TextArea.qml + TextEditor ./TextEditor.qml + EditMenu ./EditMenu.qml + + plugin FileDialog plugins + \endcode + + The plugin we just created is called \c FileDialog, as indicated by the + \c TARGET field in the project file. The compiled plugin is in the \c plugins directory. + + + \section2 Integrating a File Dialog into the File Menu + + Our \c FileMenu needs to display the \c FileDialog element, containing a list of + the text files in a directory thus allowing the user to select the file by + clicking on the list. We also need to assign the save, load, and new buttons + to their respective actions. The FileMenu contains an editable text input to + allow the user to type a file name using the keyboard. + + The \c Directory element is used in the \c FileMenu.qml file and it notifies the + \c FileDialog element that the directory refreshed its contents. This notification + is performed in the signal handler, \c onDirectoryChanged. + + \code + In FileMenu.qml: + + Directory{ + id:directory + filename: textInput.text + onDirectoryChanged: fileDialog.notifyRefresh() + } + \endcode + + Keeping with the simplicity of our application, the file dialog will always be + visible and will not display invalid text files, which do not have a \c .txt + extension to their filenames. + + \code + In FileDialog.qml: + + signal notifyRefresh() + onNotifyRefresh: dirView.model = directory.files + \endcode + + The \c FileDialog element will display the contents of a directory by reading its + list property called \c files. The files are used as the model of a + \l {GridView}{GridView} element, which displays data items in a grid according + to a delegate. The delegate handles the appearance of the model and our file + dialog will simply create a grid with text centered in the middle. Clicking on + the file name will result in the appearance of a rectangle to highlight the file + name. The \c FileDialog is notified whenever the \c notifyRefresh signal is emitted, + reloading the files in the directory. + + \code + In FileMenu.qml: + + Button{ + id: newButton + label: "New" + onButtonClick:{ + textArea.textContent = "" + } + } + Button{ + id: loadButton + label: "Load" + onButtonClick:{ + directory.filename = textInput.text + directory.loadFile() + textArea.textContent = directory.fileContent + } + } + Button{ + id: saveButton + label: "Save" + onButtonClick:{ + directory.fileContent = textArea.textContent + directory.filename = textInput.text + directory.saveFile() + } + } + Button{ + id: exitButton + label: "Exit" + onButtonClick:{ + Qt.quit() + } + } + \endcode + + Our \c FileMenu can now connect to their respective actions. The \c saveButton + will transfer the text from the \c TextEdit onto the directory's \c fileContent + property, then copy its file name from the editable text input. Finally, the button + calls the \c saveFile() function, saving the file. The \c sloadButton has a similar + execution. Also, the \c New action will empty the contents of the \c TextEdit. + + Further, the \c EditMenu buttons are connected to the \c TextEdit functions to copy, + paste, and select all the text in the text editor. + + \image qml-texteditor5_filemenu.png + + \section1 Text Editor Completion + + \image qml-texteditor5_newfile.png + + The application can function as a simple text editor, able to accept text + and save the text into a file. The text editor can also load from a file and + perform text manipulation. +*/ diff --git a/doc/src/getting-started/gettingstartedqt.qdoc b/doc/src/getting-started/gettingstartedqt.qdoc index 1b3770f..25d0ccd 100644 --- a/doc/src/getting-started/gettingstartedqt.qdoc +++ b/doc/src/getting-started/gettingstartedqt.qdoc @@ -28,8 +28,8 @@ /*! \page gettingstartedqt.html - \title Getting Started programming with Qt - \ingroup gettingStarted + \title Getting Started Programming with Qt + \ingroup gettingStarted Welcome to the world of Qt--the cross-platform GUI toolkit. In this getting started guide, we teach basic Qt knowledge by @@ -85,7 +85,7 @@ other widgets), it is possible to show a single widget in its own window. Widgets are not visible by default; the function \l{QWidget::}{show()} makes the widget visible. - + Line 11 makes the QApplication enter its event loop. When a Qt application is running, events are generated and sent to the widgets of the application. Examples of events are mouse presses diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index 8867fd9..3771bcc 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -455,10 +455,10 @@ \image quick_screens.png - Qt 4.7 introduces Quick, the Qt UI Creation Kit. that enables the creation - of dynamic user interfaces, easier and more effective than possible - with existing UI technologies. This UI Creation Kit consist of three - technologies: + Qt 4.7 introduces \l{Qt Quick}, the Qt UI Creation Kit. that enables + the creation of dynamic user interfaces, easier and more effective + than possible with existing UI technologies. This UI Creation Kit + consists of three technologies: \list \i QML is a declarative language oriented on JavaScript that utilizes diff --git a/examples/declarative/ui-components/dialcontrol/content/Dial.qml b/examples/declarative/ui-components/dialcontrol/content/Dial.qml index b5074a64..3ffa09a 100644 --- a/examples/declarative/ui-components/dialcontrol/content/Dial.qml +++ b/examples/declarative/ui-components/dialcontrol/content/Dial.qml @@ -68,6 +68,7 @@ Item { transform: Rotation { id: needleRotation origin.x: 5; origin.y: 65 + //! [needle angle] angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133) Behavior on angle { SpringAnimation { @@ -75,6 +76,7 @@ Item { damping: .15 } } + //! [needle angle] } } //! [needle] diff --git a/examples/declarative/ui-components/dialcontrol/dialcontrol.qml b/examples/declarative/ui-components/dialcontrol/dialcontrol.qml index 95df68c..46cc3e6 100644 --- a/examples/declarative/ui-components/dialcontrol/dialcontrol.qml +++ b/examples/declarative/ui-components/dialcontrol/dialcontrol.qml @@ -38,8 +38,10 @@ ** ****************************************************************************/ +//! [imports] import Qt 4.7 import "content" +//! [imports] //! [0] Rectangle { @@ -87,4 +89,4 @@ Rectangle { } } } -//! [0] \ No newline at end of file +//! [0] diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 1d48b1a..e3e1840 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -599,7 +599,7 @@ QDeclarativeComponent::QDeclarativeComponent(QDeclarativeComponentPrivate &dd, Q property, or else the object will not be visible. Dynamically created instances can be deleted with the \c destroy() method. - See \l {Dynamic Object Management} for more information. + See \l {Dynamic Object Management in QML} for more information. */ /*! diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 3822373..a476629 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -240,7 +240,7 @@ The format specification is described at \l{QML:Qt::formatDateTime}{Qt.formatDat \section1 Dynamic Object Creation The following functions on the global object allow you to dynamically create QML -items from files or strings. See \l{Dynamic Object Management} for an overview +items from files or strings. See \l{Dynamic Object Management in QML} for an overview of their use. \list @@ -1118,7 +1118,7 @@ For example: \snippet doc/src/snippets/declarative/createComponent-simple.qml 0 -See \l {Dynamic Object Management} for more information on using this function. +See \l {Dynamic Object Management in QML} for more information on using this function. To create a QML object from an arbitrary string of QML (instead of a file), use \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()}. @@ -1170,7 +1170,7 @@ Note that this function returns immediately, and therefore may not work if the \a qml string loads new components (that is, external QML files that have not yet been loaded). If this is the case, consider using \l{QML:Qt::createComponent()}{Qt.createComponent()} instead. -See \l {Dynamic Object Management} for more information on using this function. +See \l {Dynamic Object Management in QML} for more information on using this function. */ QScriptValue QDeclarativeEnginePrivate::createQmlObject(QScriptContext *ctxt, QScriptEngine *engine) -- cgit v0.12 From 58d0e46dcc50a3cddabc177c9dfdfec5c66e932d Mon Sep 17 00:00:00 2001 From: David Boddie Date: Tue, 10 Aug 2010 15:12:42 +0200 Subject: Doc: Removed invalid entities in documentation. Details: It is not necessary to use entities. In any case, I replaced them with words for consistency. --- doc/src/getting-started/examples.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc index 1bf86e5..708c44e 100644 --- a/doc/src/getting-started/examples.qdoc +++ b/doc/src/getting-started/examples.qdoc @@ -343,8 +343,8 @@ /*! \page examples-draganddrop.html \ingroup all-examples - \title Drag & Drop Examples - \brief How to access your platform's native darg & drop functionality + \title Drag and Drop Examples + \brief How to access your platform's native drag and drop functionality. \image draganddrop-examples.png -- cgit v0.12 From 448a8603bb0609bf880a2c1b92b26c2005e1cf63 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 13 Aug 2010 13:25:46 +0300 Subject: Fix check to remove unnecessary deployments in Symbian Previously check to remove files from deployment in case the deployment target location was the same as the source location was done using QFileInfo equality, which resolved to true when file didn't yet exist at the time qmake was run. Changed the check to compare absolute paths instead. Task-number: QTBUG-12879 Reviewed-by: Shane Kearns --- qmake/generators/symbian/initprojectdeploy_symbian.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp index 382e012..776a646 100644 --- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp +++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp @@ -353,7 +353,11 @@ void initProjectDeploySymbian(QMakeProject* project, CopyItem &item = i.next(); QFileInfo fromItem(item.from); QFileInfo toItem(item.to); - if (fromItem == toItem) +#if defined(Q_OS_WIN) + if (0 == fromItem.absoluteFilePath().compare(toItem.absoluteFilePath(), Qt::CaseInsensitive)) +#else + if (0 == fromItem.absoluteFilePath().compare(toItem.absoluteFilePath())) +#endif i.remove(); } } -- cgit v0.12 From 5d32b723332acab5fdf880aa0d555ab8e05d79dd Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Fri, 13 Aug 2010 12:59:55 +0100 Subject: Fix for memory leak in qt_init Reviewed-by: Miikka Heikkinen --- src/gui/kernel/qapplication_s60.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index e64ebb1..559bb6a 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -1475,6 +1475,8 @@ void qt_init(QApplicationPrivate * /* priv */, int) S60->avkonComponentsSupportTransparency = (value==1) ? true : false; } } + delete repository; + repository = 0; #endif #ifdef QT_KEYPAD_NAVIGATION -- cgit v0.12 From 434ce6748ea7f082357b6d7ab542c9fa2285bd4c Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 13 Aug 2010 15:22:25 +0300 Subject: Fix "installer_sis" and "deploy" targets when TARGET has path Dependencies got generated wrong in Makefile because sis is always created in the .pro file directory but dependency included path that was in TARGET. Task-number: QTBUG-12884 Reviewed-by: Shane Kearns --- mkspecs/features/sis_targets.prf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mkspecs/features/sis_targets.prf b/mkspecs/features/sis_targets.prf index 99f5910..abdf2d4 100644 --- a/mkspecs/features/sis_targets.prf +++ b/mkspecs/features/sis_targets.prf @@ -11,7 +11,6 @@ else:!equals(DEPLOYMENT, default_deployment) { equals(GENERATE_SIS_TARGETS, true) { symbian-abld|symbian-sbsv2 { - sis_destdir = make_cache_name = .make.cache sis_target.target = sis sis_target.commands = $(if $(wildcard $$basename(TARGET)_template.pkg), \ @@ -50,7 +49,7 @@ equals(GENERATE_SIS_TARGETS, true) { ok_unsigned_sis_target.target = ok_unsigned_sis ok_unsigned_sis_target.commands = createpackage.bat $(QT_SIS_OPTIONS) -o $$basename(TARGET)_template.pkg $(QT_SIS_TARGET) - target_sis_target.target = $${sis_destdir}$${TARGET}.sis + target_sis_target.target = $$basename(TARGET).sis target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis installer_sis_target.target = installer_sis @@ -59,7 +58,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) - installer_sis_target.depends = $${sis_destdir}$${TARGET}.sis + installer_sis_target.depends = $$basename(TARGET).sis ok_installer_sis_target.target = ok_installer_sis ok_installer_sis_target.commands = createpackage.bat $(QT_SIS_OPTIONS) $$basename(TARGET)_installer.pkg - \ -- cgit v0.12 From aebac76abbc5ed617d5998009afb06f07b9e237f Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Mon, 16 Aug 2010 12:15:52 +0200 Subject: Fix compilation: QT_NO_LINEEDIT Merge-request: 774 Reviewed-by: Oswald Buddenhagen --- src/gui/util/qcompleter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp index 04d6de9..e718212 100644 --- a/src/gui/util/qcompleter.cpp +++ b/src/gui/util/qcompleter.cpp @@ -921,10 +921,12 @@ void QCompleterPrivate::showPopup(const QRect& rect) void QCompleterPrivate::_q_fileSystemModelDirectoryLoaded(const QString &path) { Q_Q(QCompleter); +#ifndef QT_NO_LINEEDIT QLineEdit *lineEdit = qobject_cast(widget); //the path given by QFileSystemModel does not end with / if (lineEdit && !lineEdit->text().isEmpty() && !q->completionPrefix().isEmpty() && q->completionPrefix() != path + QLatin1Char('/')) q->complete(); +#endif } /*! -- cgit v0.12 From f7a501515fcf1dafecb88a40e18721ea14fd0a13 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 16 Aug 2010 13:33:16 +0200 Subject: QtDeclarative debugging: Add an option not to stream the properties of an object. Streaming all the properties is too slow, and we do not need them in the debugger of creator. Reviewed-by: Lasse Holmstedt --- src/declarative/debugger/qdeclarativedebug.cpp | 4 ++-- src/declarative/qml/qdeclarativeenginedebug.cpp | 16 ++++++++++++---- src/declarative/qml/qdeclarativeenginedebug_p.h | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativedebug.cpp index b950aef..154df51 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativedebug.cpp @@ -507,7 +507,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObject(const QDeclar QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() - << false; + << false << true; d->client->sendMessage(message); } else { query->m_state = QDeclarativeDebugQuery::Error; @@ -530,7 +530,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObjectRecursive(cons QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() - << true; + << true << true; d->client->sendMessage(message); } else { query->m_state = QDeclarativeDebugQuery::Error; diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index 1837366..ed98e3c 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -182,7 +182,7 @@ QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) con } void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, - QObject *object, bool recur) + QObject *object, bool recur, bool dumpProperties) { message << objectData(object); @@ -209,6 +209,8 @@ void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, continue; QDeclarativeBoundSignal *signal = QDeclarativeBoundSignal::cast(child); if (signal) { + if (!dumpProperties) + continue; QDeclarativeObjectProperty prop; prop.type = QDeclarativeObjectProperty::SignalProperty; prop.hasNotifySignal = false; @@ -229,12 +231,17 @@ void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, fakeProperties << prop; } else { if (recur) - buildObjectDump(message, child, recur); + buildObjectDump(message, child, recur, dumpProperties); else message << objectData(child); } } + if (!dumpProperties) { + message << 0; + return; + } + message << (object->metaObject()->propertyCount() + fakeProperties.count()); for (int ii = 0; ii < object->metaObject()->propertyCount(); ++ii) @@ -372,8 +379,9 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) int queryId; int objectId; bool recurse; + bool dumpProperties = true; - ds >> queryId >> objectId >> recurse; + ds >> queryId >> objectId >> recurse >> dumpProperties; QObject *object = QDeclarativeDebugService::objectForId(objectId); @@ -382,7 +390,7 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) rs << QByteArray("FETCH_OBJECT_R") << queryId; if (object) - buildObjectDump(rs, object, recurse); + buildObjectDump(rs, object, recurse, dumpProperties); sendMessage(reply); } else if (type == "WATCH_OBJECT") { diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/qml/qdeclarativeenginedebug_p.h index ea35b40..aa450f3 100644 --- a/src/declarative/qml/qdeclarativeenginedebug_p.h +++ b/src/declarative/qml/qdeclarativeenginedebug_p.h @@ -103,7 +103,7 @@ private Q_SLOTS: private: void buildObjectList(QDataStream &, QDeclarativeContext *); - void buildObjectDump(QDataStream &, QObject *, bool); + void buildObjectDump(QDataStream &, QObject *, bool, bool); QDeclarativeObjectData objectData(QObject *); QDeclarativeObjectProperty propertyData(QObject *, int); QVariant valueContents(const QVariant &defaultValue) const; -- cgit v0.12 From a9c0fbd5e946ae6e90b6db6dd4aea64c824a4066 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 16 Aug 2010 04:33:03 +0200 Subject: qgrayraster: Speed up rendering of small cubic splines. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on these upstream freetype2 commits: 7fb3ef64a24489189113f693696eaf935f500c3f e419f48b40a746465a6c8e1d446b407b8677bfed Reviewed-by: Samuel Rødal --- src/gui/painting/qgrayraster.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c index 5e7c67a..539a33c 100644 --- a/src/gui/painting/qgrayraster.c +++ b/src/gui/painting/qgrayraster.c @@ -956,53 +956,49 @@ const QT_FT_Vector* control2, const QT_FT_Vector* to ) { - TPos dx, dy, da, db; int top, level; int* levels; QT_FT_Vector* arc; + int mid_x = ( DOWNSCALE( ras.x ) + to->x + + 3 * (control1->x + control2->x ) ) / 8; + int mid_y = ( DOWNSCALE( ras.y ) + to->y + + 3 * (control1->y + control2->y ) ) / 8; + TPos dx = DOWNSCALE( ras.x ) + to->x - ( mid_x << 1 ); + TPos dy = DOWNSCALE( ras.y ) + to->y - ( mid_y << 1 ); - dx = DOWNSCALE( ras.x ) + to->x - ( control1->x << 1 ); if ( dx < 0 ) dx = -dx; - dy = DOWNSCALE( ras.y ) + to->y - ( control1->y << 1 ); if ( dy < 0 ) dy = -dy; if ( dx < dy ) dx = dy; - da = dx; - - dx = DOWNSCALE( ras.x ) + to->x - 3 * ( control1->x + control2->x ); - if ( dx < 0 ) - dx = -dx; - dy = DOWNSCALE( ras.y ) + to->y - 3 * ( control1->x + control2->y ); - if ( dy < 0 ) - dy = -dy; - if ( dx < dy ) - dx = dy; - db = dx; level = 1; - da = da / ras.cubic_level; - db = db / ras.conic_level; - while ( da > 0 || db > 0 ) + dx /= ras.cubic_level; + while ( dx > 0 ) { - da >>= 2; - db >>= 3; + dx >>= 2; level++; } if ( level <= 1 ) { - TPos to_x, to_y, mid_x, mid_y; + TPos to_x, to_y; to_x = UPSCALE( to->x ); to_y = UPSCALE( to->y ); + + /* Recalculation of midpoint is needed only if */ + /* UPSCALE and DOWNSCALE have any effect. */ + +#if ( PIXEL_BITS != 6 ) mid_x = ( ras.x + to_x + 3 * UPSCALE( control1->x + control2->x ) ) / 8; mid_y = ( ras.y + to_y + 3 * UPSCALE( control1->y + control2->y ) ) / 8; +#endif gray_render_line( RAS_VAR_ mid_x, mid_y ); gray_render_line( RAS_VAR_ to_x, to_y ); -- cgit v0.12 From 7cfc9f2245162944f3d9a29ad73cd93e2bcf197f Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 16 Aug 2010 16:09:34 +0300 Subject: Fix QProcessManager destruction If QProcessManager destructor is ran as part of global static cleanup, manager thread will most likely be terminated by kernel at that point, so trying to delete QProcessActives and QProcessMediators will panic as they will still be active. They can also no longer be properly canceled as the thread is already gone. In case manager thread has already died, which implies that process exit is imminent, we simply do nothing and let the deletion of the main heap at process exit take care of stray objects. Task-number: QTBUG-11218 Reviewed-by: Janne Koskinen --- src/corelib/io/qprocess_symbian.cpp | 47 ++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp index af657b2..003e781 100644 --- a/src/corelib/io/qprocess_symbian.cpp +++ b/src/corelib/io/qprocess_symbian.cpp @@ -375,10 +375,9 @@ QProcessActive::QProcessActive() // Nothing to do } -// Called from ProcessManagerThread +// Called from main thread QProcessActive::~QProcessActive() { - Cancel(); process = NULL; pproc = NULL; } @@ -482,10 +481,9 @@ QProcessManagerMediator::QProcessManagerMediator() // Nothing to do } -// Called from ProcessManagerThread +// Called from main thread QProcessManagerMediator::~QProcessManagerMediator() { - Cancel(); processManagerThread.Close(); currentCommand = ENoCommand; currentObserver = NULL; @@ -648,25 +646,36 @@ QProcessManager::QProcessManager() QProcessManager::~QProcessManager() { QPROCESS_DEBUG_PRINT("QProcessManager::~QProcessManager()"); - // Cancel death listening for all child processes - if (mediator) { - QMap::Iterator it = children.begin(); - while (it != children.end()) { - // Remove all monitors - QProcessActive *active = it.value(); - mediator->remove(active); - - QPROCESS_DEBUG_PRINT("QProcessManager::~QProcessManager() removed listening for a process"); - ++it; + + // Check if manager thread is still alive. If this destructor is ran as part of global + // static cleanup, manager thread will most likely be terminated by kernel at this point, + // so trying to delete QProcessActives and QProcessMediators will panic as they + // will still be active. They can also no longer be canceled as the thread is already gone. + // In case manager thread has already died, we simply do nothing and let the deletion of + // the main heap at process exit take care of stray objects. + + if (managerThread.Handle() && managerThread.ExitType() == EExitPending) { + // Cancel death listening for all child processes + if (mediator) { + QMap::Iterator it = children.begin(); + while (it != children.end()) { + // Remove all monitors + QProcessActive *active = it.value(); + mediator->remove(active); + + QPROCESS_DEBUG_PRINT("QProcessManager::~QProcessManager() removed listening for a process"); + ++it; + } + + // Terminate process manager thread. + mediator->terminate(); + delete mediator; } - // Terminate process manager thread. - mediator->terminate(); - delete mediator; + qDeleteAll(children.values()); + children.clear(); } - qDeleteAll(children.values()); - children.clear(); managerThread.Close(); managerMutex.Close(); } -- cgit v0.12 From 8f3489c8bfb18246480a489779c2d9b330474c5d Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 16 Aug 2010 15:59:30 +0200 Subject: qdoc: Reorganized the QML elements table to be a dictionary... ...and a set of functional group pages. --- doc/src/declarative/elements.qdoc | 252 ++++++++++++--------- .../WebKit/qt/declarative/qdeclarativewebview.cpp | 1 + .../graphicsitems/qdeclarativeanimatedimage.cpp | 3 +- .../graphicsitems/qdeclarativeborderimage.cpp | 1 + .../graphicsitems/qdeclarativeevents.cpp | 4 + .../graphicsitems/qdeclarativeflickable.cpp | 2 + .../graphicsitems/qdeclarativeflipable.cpp | 2 + .../graphicsitems/qdeclarativefocuspanel.cpp | 2 + .../graphicsitems/qdeclarativefocusscope.cpp | 2 + .../graphicsitems/qdeclarativegridview.cpp | 2 + .../graphicsitems/qdeclarativeimage.cpp | 2 + src/declarative/graphicsitems/qdeclarativeitem.cpp | 7 + .../graphicsitems/qdeclarativelayoutitem.cpp | 1 + .../graphicsitems/qdeclarativelistview.cpp | 1 + .../graphicsitems/qdeclarativeloader.cpp | 1 + .../graphicsitems/qdeclarativemousearea.cpp | 1 + src/declarative/graphicsitems/qdeclarativepath.cpp | 7 + .../graphicsitems/qdeclarativepathview.cpp | 1 + .../graphicsitems/qdeclarativepositioners.cpp | 4 + .../graphicsitems/qdeclarativerectangle.cpp | 3 + .../graphicsitems/qdeclarativerepeater.cpp | 1 + src/declarative/graphicsitems/qdeclarativetext.cpp | 3 +- .../graphicsitems/qdeclarativetextedit.cpp | 1 + .../graphicsitems/qdeclarativetextinput.cpp | 4 + .../graphicsitems/qdeclarativevisualitemmodel.cpp | 2 + src/declarative/qml/qdeclarativecomponent.cpp | 1 + src/declarative/qml/qdeclarativeengine.cpp | 2 + src/declarative/qml/qdeclarativeworkerscript.cpp | 1 + src/declarative/util/qdeclarativeanimation.cpp | 13 ++ src/declarative/util/qdeclarativebehavior.cpp | 1 + src/declarative/util/qdeclarativebind.cpp | 1 + src/declarative/util/qdeclarativeconnections.cpp | 1 + src/declarative/util/qdeclarativefontloader.cpp | 1 + src/declarative/util/qdeclarativelistmodel.cpp | 4 +- src/declarative/util/qdeclarativepackage.cpp | 1 + .../util/qdeclarativepropertychanges.cpp | 1 + .../util/qdeclarativesmoothedanimation.cpp | 1 + .../util/qdeclarativespringanimation.cpp | 1 + src/declarative/util/qdeclarativestate.cpp | 1 + src/declarative/util/qdeclarativestategroup.cpp | 1 + .../util/qdeclarativestateoperations.cpp | 3 + src/declarative/util/qdeclarativesystempalette.cpp | 1 + src/declarative/util/qdeclarativetimer.cpp | 1 + src/declarative/util/qdeclarativetransition.cpp | 1 + src/declarative/util/qdeclarativexmllistmodel.cpp | 2 + .../qdeclarativefolderlistmodel.cpp | 1 + src/imports/gestures/qdeclarativegesturearea.cpp | 2 + src/imports/particles/qdeclarativeparticles.cpp | 4 + tools/qdoc3/ditaxmlgenerator.cpp | 10 + tools/qdoc3/htmlgenerator.cpp | 10 + tools/qdoc3/htmlgenerator.h | 1 + 51 files changed, 267 insertions(+), 110 deletions(-) diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index c008404..94abe10 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -26,113 +26,151 @@ ****************************************************************************/ /*! -\page qdeclarativeelements.html -\target elements -\title QML Elements - -The following table lists the QML elements provided by the \l {QtDeclarative}{Qt Declarative} module. - -\table -\header \o {2,1} \bold {Basic Visual Items} -\row \o \l {Item} \o Basic item element inherited by all visual items in QML -\row \o \l {Rectangle} \o Basic visual rectangle element -\row \o \l {Gradient} \o Defines a gradient between two or more colors -\row \o \l {GradientStop} \o Defines a color used in a \l {Gradient} -\row \o \l {Image} \o Allows the use of bitmaps to a scene -\row \o \l {BorderImage} (Item-specific) \o Defines an image as a border -\row \o \l {AnimatedImage} \o For playing animations stored as a series of frames -\row \o \l {Text} \o Allows the use of formatted text in a scene -\row \o \l {TextInput} \o Displays an editable line of text -\row \o \l {IntValidator} \o Validator for integer values -\row \o \l {DoubleValidator} \o Validator for non-integer values -\row \o \l {RegExpValidator} \o Validator for string regular expressions -\row \o \l {TextEdit} \o Displays multiple lines of editable formatted text - -\header \o {2,1} \bold {Basic Interaction Items} -\row \o \l {MouseArea} \o Handles mouse interactions -\row \o \l {FocusScope} \o For keyboard focus handling -\row \o \l {Flickable} \o Provides a surface that can be "flicked" -\row \o \l {Flipable} \o Provides a surface that produces flipping effects -\row \o \l {GestureArea} (experimental) \o Enables simple gesture handling - -\header \o {2,1} \bold {States} -\row \o \l {State} \o Defines sets of configurations of objects and properties -\row \o \l {PropertyChanges} \o Describes property changes within a state -\row \o \l {StateGroup} \o Contains a set of states and state transitions -\row \o \l {StateChangeScript} \o Allows script binding in a state -\row \o \l {ParentChange} (Item-specific) \o Re-parent an Item in a state change -\row \o \l {AnchorChanges} \o Change the anchors of an item in a state - -\header \o {2,1} \bold {Animation and Transitions} -\row \o \l {Behavior} \o Specifies a default animation for property changes -\row \o \l {SequentialAnimation} \o Runs animations sequentially -\row \o \l {ParallelAnimation} \o Runs animations in parallel -\row \o \l {PropertyAnimation} \o Animates property changes -\row \o \l {NumberAnimation} \o Animates properties of type qreal -\row \o \l {Vector3dAnimation} \o Animates properties of type QVector3d -\row \o \l {ColorAnimation} \o Animates color changes -\row \o \l {RotationAnimation} \o Animates rotations -\row \o \l {ParentAnimation} \o Animates parent changes -\row \o \l {AnchorAnimation} \o Animates anchor changes -\row \o \l {PauseAnimation} \o Pauses an animation -\row \o \l {SmoothedAnimation} \o Allows a property to smoothly track a value -\row \o \l {SpringAnimation} \o Allows a property to track a value in a spring-like motion -\row \o \l {PropertyAction} \o Sets immediate property changes during animation -\row \o \l {ScriptAction} \o Runs scripts during an animation -\row \o \l {Transition} \o Animates transitions during state changes - -\header \o {2,1} \bold {Working with Data} -\row \o \l {Binding} \o Binds any value to any property -\row \o \l {ListModel} \o Defines a list of data -\row \o \l {ListElement} \o Defines a data item in a \l {ListModel} -\row \o \l {VisualItemModel} \o Contains items that already defines its own visual delegate -\row \o \l {VisualDataModel} \o Encapsulates a model and a delegate -\row \o \l {Package} \o Collection that enables sharing of items within different views -\row \o \l {XmlListModel} \o Specifies a model using XPath expressions -\row \o \l {XmlRole} \o Specifies a role for an \l {XmlListModel} - -\header \o {2,1} \bold {Views} -\row \o \l {ListView} \o Provides a list visualization of a model -\row \o \l {GridView} \o Provides a grid visualization of a model -\row \o \l {PathView} \o Visualizes a model's contents along a path -\row \o \l {Path} \o Defines a path used by \l {PathView} -\row \o \l {PathLine} \o Defines a line in \l {Path} -\row \o \l {PathQuad} \o Defines a quadratic Bezier curve in a \l {Path} -\row \o \l {PathCubic} \o Defines a cubic Bezier curve in a \l {Path} -\row \o \l {PathAttribute} \o Allows the setting of attributes along a \l {Path} -\row \o \l {PathPercent} \o Modifies the item distribution along a \l {Path} -\row \o \l {WebView} \o Allows the addition of web content to a canvas - -\header \o {2,1} \bold {Positioners} -\row \o \l {Column} \o Arranges its children vertically -\row \o \l {Row} \o Arranges its children horizontally -\row \o \l {Grid} \o Positions its children in a grid -\row \o \l {Flow} \o Positions its children with wrapping support - -\header \o {2,1} \bold {Utility} -\row \o \l {Connections} \o Explicitly connects signals and signal handlers -\row \o \l {Component} \o Encapsulate QML items as a component -\row \o \l {Timer} \o Provides timed triggers -\row \o \l {QML:QtObject} {QtObject} \o Basic element containing only the objectName property -\row \o \l {QML:Qt} {Qt} \o The QML global Qt object provides useful enums and functions from Qt. -\row \o \l {WorkerScript} \o Enables the use of threads in QML -\row \o \l {Loader} \o Controls the loading of items or components -\row \o \l {Repeater} \o Uses a model to create multiples of components -\row \o \l {SystemPalette} \o Provides access to the Qt palettes -\row \o \l {FontLoader} \o Loads fonts by name or URL -\row \o \l {LayoutItem} \o Allows declarative UI elements inside Qt's Graphics View layouts - -\header \o {2,1} \bold {Transforms} -\row \o \l {Scale} \o Assigns item scaling behaviors -\row \o \l {Rotation} \o Assigns item rotation behaviors -\row \o \l {Translate} \o Assigns item translation behaviors - -\header \o {2,1} \bold {Effects} -\row \o \l {Particles} (experimental) \o Generates and animates particles -\row \o \l {ParticleMotionLinear} \o Adds linear motion behavior to \l {Particles} -\row \o \l {ParticleMotionGravity} \o Adds gravitational motion to \l {Particles} -\row \o \l {ParticleMotionWander} \o Adds varied motions to \l {Particles} -\endtable + \page qdeclarativeelements.html + \target elements + \title QML Elements + This is a dictionary of all the QML elements available in the \l + {QtDeclarative} {Qt Declarative} module. + + To see the QML elements listed by + functional area, \l{Groups Of Related QML Elements} {look here}. + + \generatelist qmlclasses + +*/ + + +/*! + \group qml-groups + \title Groups Of Related QML Elements + + \brief If you know what kind of QML element you want (Basic Visual, + Interaction, Animation, etc), look here. + + This is a list of functional groups of QML elements. + + \generatelist{related} + +*/ + +/*! + \group qml-basic-visual-elements + \title Basic QML Visual Elements + \ingroup qml-groups + + \brief Elements for constructing basic visual items. + + \generatelist{related} + +*/ + +/*! + \group qml-basic-interaction-elements + \title Basic QML Interaction Elements + \ingroup qml-groups + + \brief Elements for handling basic interactions. + + \generatelist{related} + +*/ + +/*! + \group qml-state-elements + \title QML State Elements + \ingroup qml-groups + + \brief Elements for handling state changes. + + \generatelist{related} + +*/ + +/*! + \group qml-event-elements + \title QML Event Elements + \ingroup qml-groups + + \brief Elements for handling events. + + \generatelist{related} + +*/ + +/*! + \group qml-animation-transition + \title QML Animation and Transition Elements + \ingroup qml-groups + + \brief Elements for handling animations and transitions. + + \generatelist{related} + +*/ + +/*! + \group qml-working-with-data + \title Working With Data in QML + \ingroup qml-groups + + \brief Elements for working with data. + + \generatelist{related} + +*/ + +/*! + \group qml-view-elements + \title QML View Elements + \ingroup qml-groups + + \brief Elements for handling views. + + \generatelist{related} + +*/ + +/*! + \group qml-positioning-elements + \title QML Positioning Elements + \ingroup qml-groups + + \brief Elements for positioning items. + + \generatelist{related} + +*/ + +/*! + \group qml-utility-elements + \title QML Utility Elements + \ingroup qml-groups + + \brief Elements for handling misc operations. + + \generatelist{related} + +*/ + +/*! + \group qml-transform-elements + \title QML Transform Elements + \ingroup qml-groups + + \brief Elements for handling transformations. + + \generatelist{related} + +*/ + +/*! + \group qml-particle-elements + \title QML Particle Elements + \ingroup qml-groups + + \brief Elements for handling particle effects. + + \generatelist{related} */ diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp index 9dcba60..c1ca23d 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp @@ -139,6 +139,7 @@ void GraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent* event) /*! \qmlclass WebView QDeclarativeWebView + \ingroup qml-view-elements \since 4.7 \brief The WebView item allows you to add web content to a canvas. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp index d8527d3..e0a2149 100644 --- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp @@ -62,7 +62,8 @@ QT_BEGIN_NAMESPACE \qmlclass AnimatedImage QDeclarativeAnimatedImage \inherits Image \since 4.7 - + \ingroup basic-visual-elements + The AnimatedImage element provides for playing animations stored as images containing a series of frames, such as GIF files. diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp index 4881248..e0c7fc2 100644 --- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp @@ -56,6 +56,7 @@ QT_BEGIN_NAMESPACE \brief The BorderImage element provides an image that can be used as a border. \inherits Item \since 4.7 + \ingroup qm-basic-visual-elements A BorderImage breaks an image into 9 sections, as shown below: diff --git a/src/declarative/graphicsitems/qdeclarativeevents.cpp b/src/declarative/graphicsitems/qdeclarativeevents.cpp index 81ec6e1..0a35a3f 100644 --- a/src/declarative/graphicsitems/qdeclarativeevents.cpp +++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp @@ -45,6 +45,8 @@ QT_BEGIN_NAMESPACE /*! \qmlclass KeyEvent QDeclarativeKeyEvent \since 4.7 + \ingroup qml-event-elements + \brief The KeyEvent object provides information about a key event. For example, the following changes the Item's state property when the Enter @@ -115,6 +117,8 @@ Item { /*! \qmlclass MouseEvent QDeclarativeMouseEvent \since 4.7 + \ingroup qml-event-elements + \brief The MouseEvent object provides information about a mouse event. The position of the mouse can be found via the x and y properties. diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 19cabdd..31f7707 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -345,6 +345,8 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd() /*! \qmlclass Flickable QDeclarativeFlickable \since 4.7 + \ingroup qml-basic-interaction-elements + \brief The Flickable item provides a surface that can be "flicked". \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp index b266273..6ce0fa6 100644 --- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp @@ -70,6 +70,8 @@ public: /*! \qmlclass Flipable QDeclarativeFlipable \since 4.7 + \ingroup qml-basic-interaction-elements + \brief The Flipable item provides a surface that can be flipped. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp b/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp index bd60e25..5c7959a 100644 --- a/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp +++ b/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp @@ -51,6 +51,8 @@ QT_BEGIN_NAMESPACE /*! \qmlclass FocusPanel QDeclarativeFocusPanel \since 4.7 + \ingroup qml-basic-interaction-elements + \brief The FocusPanel item explicitly creates a focus panel. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativefocusscope.cpp b/src/declarative/graphicsitems/qdeclarativefocusscope.cpp index e8e6fa2..4498275 100644 --- a/src/declarative/graphicsitems/qdeclarativefocusscope.cpp +++ b/src/declarative/graphicsitems/qdeclarativefocusscope.cpp @@ -48,6 +48,8 @@ QT_BEGIN_NAMESPACE /*! \qmlclass FocusScope QDeclarativeFocusScope \since 4.7 + \ingroup qml-basic-interaction-elements + \brief The FocusScope object explicitly creates a focus scope. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 68a4c64..d67e69a 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1056,6 +1056,8 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m /*! \qmlclass GridView QDeclarativeGridView \since 4.7 + \ingroup qml-view-elements + \inherits Flickable \brief The GridView item provides a grid view of items provided by a model. diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 37736cc..47a410c 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -51,6 +51,8 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Image QDeclarativeImage \since 4.7 + \ingroup qml-vasic-visual-elements + \brief The Image element allows you to add bitmaps to a scene. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index cc7c673..0f16a79 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -69,6 +69,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Transform QGraphicsTransform + \ingroup qml-transform-elements \since 4.7 \brief The Transform elements provide a way of building advanced transformations on Items. @@ -90,6 +91,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Translate QDeclarativeTranslate + \ingroup qml-transform-elements \since 4.7 \brief The Translate object provides a way to move an Item without changing its x or y properties. @@ -131,6 +133,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Scale QGraphicsScale + \ingroup qml-transform-elements \since 4.7 \brief The Scale element provides a way to scale an Item. @@ -172,6 +175,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Rotation QGraphicsRotation + \ingroup qml-transform-elements \since 4.7 \brief The Rotation object provides a way to rotate an Item. @@ -419,6 +423,7 @@ void QDeclarativeItemKeyFilter::componentComplete() /*! \qmlclass KeyNavigation QDeclarativeKeyNavigationAttached + \ingroup qml-basic-interaction-elements \since 4.7 \brief The KeyNavigation attached property supports key navigation by arrow keys. @@ -725,6 +730,7 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event, bool post) /*! \qmlclass Keys QDeclarativeKeysAttached + \ingroup qml-basic-interaction-elements \since 4.7 \brief The Keys attached property provides key handling to Items. @@ -1310,6 +1316,7 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec /*! \qmlclass Item QDeclarativeItem + \ingroup qml-basic-visual-elements \since 4.7 \brief The Item is the most basic of all visual items in QML. diff --git a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp index 38d5f59..8509473 100644 --- a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass LayoutItem QDeclarativeLayoutItem + \ingroup qml-utility-elements \since 4.7 \brief The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts. diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index e1dd1c0..ec1b6cf 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1357,6 +1357,7 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m /*! \qmlclass ListView QDeclarativeListView + \ingroup qml-view-elements \since 4.7 \inherits Flickable \brief The ListView item provides a list view of items provided by a model. diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp index d28181e..4c6268f 100644 --- a/src/declarative/graphicsitems/qdeclarativeloader.cpp +++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp @@ -108,6 +108,7 @@ void QDeclarativeLoaderPrivate::initResize() /*! \qmlclass Loader QDeclarativeLoader + \ingroup qml-utility-elements \since 4.7 \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index dcdb9f6..2823888 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -180,6 +180,7 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate() /*! \qmlclass MouseArea QDeclarativeMouseArea + \ingroup qml-basic-interaction-elements \since 4.7 \brief The MouseArea item enables simple mouse handling. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp index c48011d3..62e03e7 100644 --- a/src/declarative/graphicsitems/qdeclarativepath.cpp +++ b/src/declarative/graphicsitems/qdeclarativepath.cpp @@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass PathElement QDeclarativePathElement + \ingroup qml-view-elements \since 4.7 \brief PathElement is the base path type. @@ -67,6 +68,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Path QDeclarativePath + \ingroup qml-view-elements \since 4.7 \brief A Path object defines a path for use by \l PathView. @@ -497,6 +499,7 @@ void QDeclarativeCurve::setY(qreal y) /*! \qmlclass PathAttribute QDeclarativePathAttribute + \ingroup qml-view-elements \since 4.7 \brief The PathAttribute allows setting an attribute at a given position in a Path. @@ -587,6 +590,7 @@ void QDeclarativePathAttribute::setValue(qreal value) /*! \qmlclass PathLine QDeclarativePathLine + \ingroup qml-view-elements \since 4.7 \brief The PathLine defines a straight line. @@ -627,6 +631,7 @@ void QDeclarativePathLine::addToPath(QPainterPath &path) /*! \qmlclass PathQuad QDeclarativePathQuad + \ingroup qml-view-elements \since 4.7 \brief The PathQuad defines a quadratic Bezier curve with a control point. @@ -713,6 +718,7 @@ void QDeclarativePathQuad::addToPath(QPainterPath &path) /*! \qmlclass PathCubic QDeclarativePathCubic + \ingroup qml-view-elements \since 4.7 \brief The PathCubic defines a cubic Bezier curve with two control points. @@ -828,6 +834,7 @@ void QDeclarativePathCubic::addToPath(QPainterPath &path) /*! \qmlclass PathPercent QDeclarativePathPercent + \ingroup qml-view-elements \since 4.7 \brief The PathPercent manipulates the way a path is interpreted. diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index 380c6ad..535fb90 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -326,6 +326,7 @@ void QDeclarativePathViewPrivate::regenerate() /*! \qmlclass PathView QDeclarativePathView + \ingroup qml-view-elements \since 4.7 \brief The PathView element lays out model-provided items on a path. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp index 179f13d..5c21b03 100644 --- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp +++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp @@ -310,6 +310,7 @@ static inline bool isInvisible(QDeclarativeItem *child) /*! \qmlclass Column QDeclarativeColumn + \ingroup qml-positioning-elements \since 4.7 \brief The Column item arranges its children vertically. \inherits Item @@ -475,6 +476,7 @@ void QDeclarativeColumn::reportConflictingAnchors() /*! \qmlclass Row QDeclarativeRow + \ingroup qml-positioning-elements \since 4.7 \brief The Row item arranges its children horizontally. \inherits Item @@ -613,6 +615,7 @@ void QDeclarativeRow::reportConflictingAnchors() /*! \qmlclass Grid QDeclarativeGrid + \ingroup qml-positioning-elements \since 4.7 \brief The Grid item positions its children in a grid. \inherits Item @@ -905,6 +908,7 @@ void QDeclarativeGrid::reportConflictingAnchors() /*! \qmlclass Flow QDeclarativeFlow + \ingroup qml-positioning-elements \since 4.7 \brief The Flow item arranges its children side by side, wrapping as necessary. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index c49be46..5990c2d 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -84,6 +84,7 @@ void QDeclarativePen::setWidth(int w) /*! \qmlclass GradientStop QDeclarativeGradientStop + \ingroup qml-basic-visual-elements \since 4.7 \brief The GradientStop item defines the color at a position in a Gradient @@ -105,6 +106,7 @@ void QDeclarativeGradientStop::updateGradient() /*! \qmlclass Gradient QDeclarativeGradient + \ingroup qml-basic-visual-elements \since 4.7 \brief The Gradient item defines a gradient fill. @@ -152,6 +154,7 @@ void QDeclarativeGradient::doUpdate() /*! \qmlclass Rectangle QDeclarativeRectangle + \ingroup qml-basic-visual-elements \since 4.7 \brief The Rectangle item allows you to add rectangles to a scene. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp index 68e7e9a..8828d3e 100644 --- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp +++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp @@ -62,6 +62,7 @@ QDeclarativeRepeaterPrivate::~QDeclarativeRepeaterPrivate() /*! \qmlclass Repeater QDeclarativeRepeater + \ingroup qml-utility-elements \since 4.7 \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index ab2be9c..fcd112e 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -162,7 +162,8 @@ QSet QTextDocumentWithImageResources::errors; /*! \qmlclass Text QDeclarativeText - \since 4.7 + \ingroup qml-basic-visual-elements + \since 4.7 \brief The Text item allows you to add formatted text to a scene. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index 8117676..b8e8726 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass TextEdit QDeclarativeTextEdit + \ingroup qml-basic-visual-elements \since 4.7 \brief The TextEdit item displays multiple lines of editable formatted text. \inherits Item diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 90f5a70..bd8d404 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass TextInput QDeclarativeTextInput + \ingroup qml-basic-visual-elements \since 4.7 \brief The TextInput item displays an editable line of text. \inherits Item @@ -561,6 +562,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b) /*! \qmlclass IntValidator QIntValidator + \ingroup qml-basic-visual-elements This element provides a validator for integer values. */ @@ -579,6 +581,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b) /*! \qmlclass DoubleValidator QDoubleValidator + \ingroup qml-basic-visual-elements This element provides a validator for non-integer numbers. */ @@ -617,6 +620,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b) /*! \qmlclass RegExpValidator QRegExpValidator + \ingroup qml-basic-visual-elements This element provides a validator, which counts as valid any string which matches a specified regular expression. diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index a489b5a..764676a 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -128,6 +128,7 @@ public: /*! \qmlclass VisualItemModel QDeclarativeVisualItemModel + \ingroup qml-working-with-data \since 4.7 \brief The VisualItemModel allows items to be provided to a view. @@ -644,6 +645,7 @@ QDeclarativeVisualDataModelData *QDeclarativeVisualDataModelPrivate::data(QObjec /*! \qmlclass VisualDataModel QDeclarativeVisualDataModel + \ingroup qml-working-with-data \brief The VisualDataModel encapsulates a model and delegate A VisualDataModel encapsulates a model and the delegate that will diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 5f4a063..73689fc 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -104,6 +104,7 @@ class QByteArray; /*! \qmlclass Component QDeclarativeComponent + \ingroup qml-utility-elements \since 4.7 \brief The Component element encapsulates a QML component definition. diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index de79e4d..1061c03 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -114,6 +114,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass QtObject QObject + \ingroup qml-utility-elements \since 4.7 \brief The QtObject element is the most basic element in QML. @@ -185,6 +186,7 @@ void QDeclarativeEnginePrivate::defineModule() /*! \qmlclass QML:Qt QDeclarativeEnginePrivate + \ingroup qml-utility-elements \brief The QML global Qt object provides useful enums and functions from Qt. \keyword QmlGlobalQtObject diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp index aec84a6..789116e 100644 --- a/src/declarative/qml/qdeclarativeworkerscript.cpp +++ b/src/declarative/qml/qdeclarativeworkerscript.cpp @@ -514,6 +514,7 @@ void QDeclarativeWorkerScriptEngine::run() /*! \qmlclass WorkerScript QDeclarativeWorkerScript + \ingroup qml-utility-elements \brief The WorkerScript element enables the use of threads in QML. Use WorkerScript to run operations in a new thread. diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 2fca09d..3b8cb37 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -74,6 +74,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Animation QDeclarativeAbstractAnimation + \ingroup qml-animation-transition \since 4.7 \brief The Animation element is the base of all QML animations. @@ -554,6 +555,7 @@ void QDeclarativeAbstractAnimation::timelineComplete() /*! \qmlclass PauseAnimation QDeclarativePauseAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The PauseAnimation element provides a pause for an animation. @@ -630,6 +632,7 @@ QAbstractAnimation *QDeclarativePauseAnimation::qtAnimation() /*! \qmlclass ColorAnimation QDeclarativeColorAnimation + \ingroup qml-animation-transition \since 4.7 \inherits PropertyAnimation \brief The ColorAnimation element animates changes in color values. @@ -730,6 +733,7 @@ void QDeclarativeColorAnimation::setTo(const QColor &t) /*! \qmlclass ScriptAction QDeclarativeScriptAction + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The ScriptAction element allows scripts to be run during an animation. @@ -878,6 +882,7 @@ QAbstractAnimation *QDeclarativeScriptAction::qtAnimation() /*! \qmlclass PropertyAction QDeclarativePropertyAction + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The PropertyAction element allows immediate property changes during animation. @@ -1129,6 +1134,7 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions, /*! \qmlclass NumberAnimation QDeclarativeNumberAnimation + \ingroup qml-animation-transition \since 4.7 \inherits PropertyAnimation \brief The NumberAnimation element animates changes in qreal-type values. @@ -1238,6 +1244,7 @@ void QDeclarativeNumberAnimation::setTo(qreal t) /*! \qmlclass Vector3dAnimation QDeclarativeVector3dAnimation + \ingroup qml-animation-transition \since 4.7 \inherits PropertyAnimation \brief The Vector3dAnimation element animates changes in QVector3d values. @@ -1311,6 +1318,7 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t) /*! \qmlclass RotationAnimation QDeclarativeRotationAnimation + \ingroup qml-animation-transition \since 4.7 \inherits PropertyAnimation \brief The RotationAnimation element animates changes in rotation values. @@ -1540,6 +1548,7 @@ QDeclarativeListProperty QDeclarativeAnimationGro /*! \qmlclass SequentialAnimation QDeclarativeSequentialAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The SequentialAnimation element allows animations to be run sequentially. @@ -1613,6 +1622,7 @@ void QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actio /*! \qmlclass ParallelAnimation QDeclarativeParallelAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The ParallelAnimation element allows animations to be run in parallel. @@ -1731,6 +1741,7 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int /*! \qmlclass PropertyAnimation QDeclarativePropertyAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The PropertyAnimation element animates changes in property values. @@ -2400,6 +2411,7 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions /*! \qmlclass ParentAnimation QDeclarativeParentAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The ParentAnimation element animates changes in parent values. @@ -2759,6 +2771,7 @@ QAbstractAnimation *QDeclarativeParentAnimation::qtAnimation() /*! \qmlclass AnchorAnimation QDeclarativeAnchorAnimation + \ingroup qml-animation-transition \since 4.7 \inherits Animation \brief The AnchorAnimation element animates changes in anchor values. diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 1e7f81a..f1b6f9a 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -72,6 +72,7 @@ public: /*! \qmlclass Behavior QDeclarativeBehavior + \ingroup qml-animation-transition \since 4.7 \brief The Behavior element allows you to specify a default animation for a property change. diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp index 5fab631..86d08f5 100644 --- a/src/declarative/util/qdeclarativebind.cpp +++ b/src/declarative/util/qdeclarativebind.cpp @@ -72,6 +72,7 @@ public: /*! \qmlclass Binding QDeclarativeBind + \ingroup qml-working-with-data \since 4.7 \brief The Binding element allows arbitrary property bindings to be created. diff --git a/src/declarative/util/qdeclarativeconnections.cpp b/src/declarative/util/qdeclarativeconnections.cpp index b364821..293928e 100644 --- a/src/declarative/util/qdeclarativeconnections.cpp +++ b/src/declarative/util/qdeclarativeconnections.cpp @@ -71,6 +71,7 @@ public: /*! \qmlclass Connections QDeclarativeConnections + \ingroup qml-utility-elements \since 4.7 \brief A Connections element describes generalized connections to signals. diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp index 83bdb17..291583c 100644 --- a/src/declarative/util/qdeclarativefontloader.cpp +++ b/src/declarative/util/qdeclarativefontloader.cpp @@ -78,6 +78,7 @@ public: /*! \qmlclass FontLoader QDeclarativeFontLoader + \ingroup qml-utility-elements \since 4.7 \brief The FontLoader element allows fonts to be loaded by name or URL. diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp index 20fe3a9..1f66f0f 100644 --- a/src/declarative/util/qdeclarativelistmodel.cpp +++ b/src/declarative/util/qdeclarativelistmodel.cpp @@ -68,6 +68,7 @@ QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListM /*! \qmlclass ListModel QDeclarativeListModel + \ingroup qml-working-with-data \since 4.7 \brief The ListModel element defines a free-form list data source. @@ -129,7 +130,7 @@ QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListM \snippet examples/declarative/threading/threadedlistmodel/dataloader.js 0 - The application's \tt Timer object periodically sends a message to the +working-with-data worker script by calling \l WorkerScript::sendMessage(). When this message is received, \l {WorkerScript::onMessage}{WorkerScript.onMessage()} is invoked in \tt dataloader.js, which appends the current time to the list model. @@ -769,6 +770,7 @@ bool QDeclarativeListModelParser::definesEmptyList(const QString &s) /*! \qmlclass ListElement + \ingroup qml-working-with-data \since 4.7 \brief The ListElement element defines a data item in a ListModel. diff --git a/src/declarative/util/qdeclarativepackage.cpp b/src/declarative/util/qdeclarativepackage.cpp index 1a4f2a7..a5ec9b3 100644 --- a/src/declarative/util/qdeclarativepackage.cpp +++ b/src/declarative/util/qdeclarativepackage.cpp @@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Package QDeclarativePackage + \ingroup qml-working-with-data \brief Package provides a collection of named items. The Package class is used in conjunction with diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp index 12c6353..25edd35 100644 --- a/src/declarative/util/qdeclarativepropertychanges.cpp +++ b/src/declarative/util/qdeclarativepropertychanges.cpp @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass PropertyChanges QDeclarativePropertyChanges + \ingroup qml-state-elements \since 4.7 \brief The PropertyChanges element describes new property bindings or values for a state. diff --git a/src/declarative/util/qdeclarativesmoothedanimation.cpp b/src/declarative/util/qdeclarativesmoothedanimation.cpp index 30e1491..b2f02e6 100644 --- a/src/declarative/util/qdeclarativesmoothedanimation.cpp +++ b/src/declarative/util/qdeclarativesmoothedanimation.cpp @@ -249,6 +249,7 @@ void QSmoothedAnimation::init() /*! \qmlclass SmoothedAnimation QDeclarativeSmoothedAnimation + \ingroup qml-animation-transition \since 4.7 \inherits NumberAnimation \brief The SmoothedAnimation element allows a property to smoothly track a value. diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp index 6f4ac51..fce4097 100644 --- a/src/declarative/util/qdeclarativespringanimation.cpp +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -228,6 +228,7 @@ void QDeclarativeSpringAnimationPrivate::updateMode() /*! \qmlclass SpringAnimation QDeclarativeSpringAnimation + \ingroup qml-animation-transition \inherits Animation \since 4.7 diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp index 028bacb..6e17cf2 100644 --- a/src/declarative/util/qdeclarativestate.cpp +++ b/src/declarative/util/qdeclarativestate.cpp @@ -133,6 +133,7 @@ QDeclarativeStateOperation::QDeclarativeStateOperation(QObjectPrivate &dd, QObje /*! \qmlclass State QDeclarativeState + \ingroup qml-state-elements \since 4.7 \brief The State element defines configurations of objects and properties. diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp index 1c1e964..fc90baa 100644 --- a/src/declarative/util/qdeclarativestategroup.cpp +++ b/src/declarative/util/qdeclarativestategroup.cpp @@ -88,6 +88,7 @@ public: /*! \qmlclass StateGroup QDeclarativeStateGroup + \ingroup qml-state-elements \since 4.7 \brief The StateGroup element provides state support for non-Item elements. diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp index 2291c16..6e6f0cb 100644 --- a/src/declarative/util/qdeclarativestateoperations.cpp +++ b/src/declarative/util/qdeclarativestateoperations.cpp @@ -161,6 +161,7 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q /*! \preliminary \qmlclass ParentChange QDeclarativeParentChange + \ingroup qml-state-elements \brief The ParentChange element allows you to reparent an Item in a state change. ParentChange reparents an item while preserving its visual appearance (position, size, @@ -589,6 +590,7 @@ public: /*! \qmlclass StateChangeScript QDeclarativeStateChangeScript + \ingroup qml-state-elements \brief The StateChangeScript element allows you to run a script in a state. A StateChangeScript is run upon entering a state. You can optionally use @@ -693,6 +695,7 @@ QString QDeclarativeStateChangeScript::typeName() const /*! \qmlclass AnchorChanges QDeclarativeAnchorChanges + \ingroup qml-state-elements \brief The AnchorChanges element allows you to change the anchors of an item in a state. The AnchorChanges element is used to modify the anchors of an item in a \l State. diff --git a/src/declarative/util/qdeclarativesystempalette.cpp b/src/declarative/util/qdeclarativesystempalette.cpp index c334859..7b80736 100644 --- a/src/declarative/util/qdeclarativesystempalette.cpp +++ b/src/declarative/util/qdeclarativesystempalette.cpp @@ -58,6 +58,7 @@ public: /*! \qmlclass SystemPalette QDeclarativeSystemPalette + \ingroup qml-utility-elements \since 4.7 \brief The SystemPalette element provides access to the Qt palettes. diff --git a/src/declarative/util/qdeclarativetimer.cpp b/src/declarative/util/qdeclarativetimer.cpp index 838a8f3..56320e6 100644 --- a/src/declarative/util/qdeclarativetimer.cpp +++ b/src/declarative/util/qdeclarativetimer.cpp @@ -70,6 +70,7 @@ public: /*! \qmlclass Timer QDeclarativeTimer + \ingroup qml-utility-elements \since 4.7 \brief The Timer item triggers a handler at a specified interval. diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp index aa1426c..21d7ded 100644 --- a/src/declarative/util/qdeclarativetransition.cpp +++ b/src/declarative/util/qdeclarativetransition.cpp @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE /*! \qmlclass Transition QDeclarativeTransition + \ingroup qml-animation-transition \since 4.7 \brief The Transition element defines animated transitions that occur on state changes. diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index 8bd829e..7b3d4a8 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -72,6 +72,7 @@ typedef QPair QDeclarativeXmlListRange; /*! \qmlclass XmlRole QDeclarativeXmlListModelRole + \ingroup qml-working-with-data \since 4.7 \brief The XmlRole element allows you to specify a role for an XmlListModel. @@ -505,6 +506,7 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListPropertyroot()); findAllFunctions(tree->root()); findAllLegaleseTexts(tree->root()); @@ -751,6 +752,9 @@ int DitaXmlGenerator::generateAtom(const Atom *atom, else if (atom->string() == "classes") { generateCompactList(relative, marker, nonCompatClasses, true); } + else if (atom->string() == "qmlclasses") { + generateCompactList(relative, marker, qmlClasses, true); + } else if (atom->string().contains("classesbymodule")) { QString arg = atom->string().trimmed(); QString moduleName = atom->string().mid(atom->string().indexOf( @@ -3675,6 +3679,12 @@ void DitaXmlGenerator::findAllClasses(const InnerNode *node) if (!serviceName.isEmpty()) serviceClasses.insert(serviceName, *c); } + else if ((*c)->type() == Node::Fake && + (*c)->subType() == Node::QmlClass && + !(*c)->doc().isEmpty()) { + QString qmlClassName = (*c)->name(); + qmlClasses.insert(qmlClassName,*c); + } else if ((*c)->isInnerNode()) { findAllClasses(static_cast(*c)); } diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 4603a40..50f8b56 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -376,6 +376,7 @@ void HtmlGenerator::generateTree(const Tree *tree, CodeMarker *marker) funcIndex.clear(); legaleseTexts.clear(); serviceClasses.clear(); + qmlClasses.clear(); findAllClasses(tree->root()); findAllFunctions(tree->root()); findAllLegaleseTexts(tree->root()); @@ -611,6 +612,9 @@ int HtmlGenerator::generateAtom(const Atom *atom, else if (atom->string() == "classes") { generateCompactList(relative, marker, nonCompatClasses, true); } + else if (atom->string() == "qmlclasses") { + generateCompactList(relative, marker, qmlClasses, true); + } else if (atom->string().contains("classesbymodule")) { QString arg = atom->string().trimmed(); QString moduleName = atom->string().mid(atom->string().indexOf( @@ -3707,6 +3711,12 @@ void HtmlGenerator::findAllClasses(const InnerNode *node) if (!serviceName.isEmpty()) serviceClasses.insert(serviceName, *c); } + else if ((*c)->type() == Node::Fake && + (*c)->subType() == Node::QmlClass && + !(*c)->doc().isEmpty()) { + QString qmlClassName = (*c)->name(); + qmlClasses.insert(qmlClassName,*c); + } else if ((*c)->isInnerNode()) { findAllClasses(static_cast(*c)); } diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index eab10c6..d885ada 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -330,6 +330,7 @@ class HtmlGenerator : public PageGenerator NodeMap obsoleteClasses; NodeMap namespaceIndex; NodeMap serviceClasses; + NodeMap qmlClasses; QMap funcIndex; QMap legaleseTexts; NewSinceMaps newSinceMaps; -- cgit v0.12 From 0fb9e0fff4097bf0b84ff217526b0a9c33b69414 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Fri, 13 Aug 2010 20:57:07 +0200 Subject: Implement the general blending of ARGB32_pm with SSSE3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SSSE3 provides two tools to improve the blending speed over SSE2: -palignr -byte permutation The alignement is enforced on src and dst with palignr to always make aligned access. The extraction of the alpha mask is done with a byte permutation in order to save two instructions per cycle. On Atom, this patch gives between 0% (aligned src) to 10% of improvement (unaligned 4 and 12 bytes). On Core 2, this patch gives consistently 8% to 10% of improvement for every miss-alignment. Reviewed-by: Samuel Rødal --- src/gui/painting/painting.pri | 1 + src/gui/painting/qdrawhelper.cpp | 11 ++ src/gui/painting/qdrawhelper_ssse3.cpp | 263 +++++++++++++++++++++++++ tests/benchmarks/gui/image/blendbench/main.cpp | 43 ++++ 4 files changed, 318 insertions(+) create mode 100644 src/gui/painting/qdrawhelper_ssse3.cpp diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index dfa4a48..793d380 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -212,6 +212,7 @@ if(mmx|3dnow|sse|sse2|iwmmxt) { SSE3DNOW_SOURCES += painting/qdrawhelper_sse3dnow.cpp SSE_SOURCES += painting/qdrawhelper_sse.cpp SSE2_SOURCES += painting/qdrawhelper_sse2.cpp + SSSE3_SOURCES += painting/qdrawhelper_ssse3.cpp IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp } diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 1ff3d7b..276da93 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7840,6 +7840,17 @@ void qInitDrawhelperAsm() qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_sse2; qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_sse2; qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_sse2; + +#if defined(QT_HAVE_SSSE3) + if (features & SSSE3) { + extern void qt_blend_argb32_on_argb32_ssse3(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha); + qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_ssse3; + qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_ssse3; + } +#endif // QT_HAVE_SSSE3 } else #endif { diff --git a/src/gui/painting/qdrawhelper_ssse3.cpp b/src/gui/painting/qdrawhelper_ssse3.cpp new file mode 100644 index 0000000..bc4a7eb8 --- /dev/null +++ b/src/gui/painting/qdrawhelper_ssse3.cpp @@ -0,0 +1,263 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifdef QT_HAVE_SSSE3 + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +inline static void blend_pixel(quint32 &dst, const quint32 src) +{ + if (src >= 0xff000000) + dst = src; + else if (src != 0) + dst = src + BYTE_MUL(dst, qAlpha(~src)); +} + + +/* The instruction palignr uses direct arguments, so we have to generate the code fo the different + shift (4, 8, 12). Checking the alignment inside the loop is unfortunatelly way too slow. + */ +#define BLENDING_LOOP(palignrOffset, length)\ + for (; x < length-3; x += 4) { \ + const __m128i srcVectorLastLoaded = _mm_load_si128((__m128i *)&src[x - minusOffsetToAlignSrcOn16Bytes + 4]);\ + const __m128i srcVector = _mm_alignr_epi8(srcVectorLastLoaded, srcVectorPrevLoaded, palignrOffset); \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + _mm_store_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + __m128i alphaChannel = _mm_shuffle_epi8(srcVector, alphaShuffleMask); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + const __m128i dstVector = _mm_load_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_store_si128((__m128i *)&dst[x], result); \ + } \ + srcVectorPrevLoaded = srcVectorLastLoaded;\ + } + + +#define BLEND_SOURCE_OVER_ARGB32_FIRST_ROW_SSSE3(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ + int x = 0; \ +\ + /* First, get dst aligned. */ \ + const int offsetToAlignOn16Bytes = (4 - ((reinterpret_cast(dst) >> 2) & 0x3)) & 0x3;\ + const int prologLength = qMin(length, offsetToAlignOn16Bytes);\ +\ + for (; x < prologLength; ++x) {\ + blend_pixel(dst[x], src[x]); \ + } \ +\ + const int minusOffsetToAlignSrcOn16Bytes = (reinterpret_cast(&(src[x])) >> 2) & 0x3;\ +\ + if (!minusOffsetToAlignSrcOn16Bytes) {\ + /* src is aligned, usual algorithm but with aligned operations.\ + See the SSE2 version for more documentation on the algorithm itself. */\ + const __m128i alphaShuffleMask = _mm_set_epi8(0xff,15,0xff,15,0xff,11,0xff,11,0xff,7,0xff,7,0xff,3,0xff,3);\ + for (; x < length-3; x += 4) { \ + const __m128i srcVector = _mm_load_si128((__m128i *)&src[x]); \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + _mm_store_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + __m128i alphaChannel = _mm_shuffle_epi8(srcVector, alphaShuffleMask); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + const __m128i dstVector = _mm_load_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_store_si128((__m128i *)&dst[x], result); \ + } \ + } /* end for() */\ + } else if ((length - x) >= 8) {\ + /* We are at the first line, so "x - minusOffsetToAlignSrcOn16Bytes" could go before src, and\ + generate an invalid access. */\ +\ + /* We use two vectors to extract the src: prevLoaded for the first pixels, lastLoaded for the current pixels. */\ + __m128i srcVectorPrevLoaded;\ + if (minusOffsetToAlignSrcOn16Bytes <= prologLength) {\ + srcVectorPrevLoaded = _mm_load_si128((__m128i *)&src[x - minusOffsetToAlignSrcOn16Bytes]);\ + } else {\ + quint32 temp[4] Q_DECL_ALIGN(16);\ + switch (prologLength) {\ + case 3:\ + temp[1] = src[x - 3];\ + case 2:\ + temp[2] = src[x - 2];\ + case 1:\ + temp[3] = src[x - 1];\ + default:\ + break;\ + }\ + srcVectorPrevLoaded = _mm_load_si128((__m128i *)temp);\ + }\ + const int palignrOffset = minusOffsetToAlignSrcOn16Bytes << 2;\ +\ + const __m128i alphaShuffleMask = _mm_set_epi8(0xff,15,0xff,15,0xff,11,0xff,11,0xff,7,0xff,7,0xff,3,0xff,3);\ + switch (palignrOffset) {\ + case 4:\ + BLENDING_LOOP(4, length)\ + break;\ + case 8:\ + BLENDING_LOOP(8, length)\ + break;\ + case 12:\ + BLENDING_LOOP(12, length)\ + break;\ + }\ + }\ + for (; x < length; ++x) \ + blend_pixel(dst[x], src[x]); \ +} + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +//const __m128i alphaMask = _mm_set1_epi32(0xff000000); +// +// The computation being done is: +// result = s + d * (1-alpha) +// with shortcuts if fully opaque or fully transparent. +#define BLEND_SOURCE_OVER_ARGB32_MAIN_SSSE3(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ + int x = 0; \ +\ + /* First, get dst aligned. */ \ + ALIGNMENT_PROLOGUE_16BYTES(dst, x, length) { \ + blend_pixel(dst[x], src[x]); \ + } \ +\ + const int minusOffsetToAlignSrcOn16Bytes = (reinterpret_cast(&(src[x])) >> 2) & 0x3;\ +\ + if (!minusOffsetToAlignSrcOn16Bytes) {\ + /* src is aligned, usual algorithm but with aligned operations.\ + See the SSE2 version for more documentation on the algorithm itself. */\ + const __m128i alphaShuffleMask = _mm_set_epi8(0xff,15,0xff,15,0xff,11,0xff,11,0xff,7,0xff,7,0xff,3,0xff,3);\ + for (; x < length-3; x += 4) { \ + const __m128i srcVector = _mm_load_si128((__m128i *)&src[x]); \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + _mm_store_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + __m128i alphaChannel = _mm_shuffle_epi8(srcVector, alphaShuffleMask); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + const __m128i dstVector = _mm_load_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_store_si128((__m128i *)&dst[x], result); \ + } \ + } /* end for() */\ + } else if ((length - x) >= 8) {\ + /* We use two vectors to extract the src: prevLoaded for the first pixels, lastLoaded for the current pixels. */\ + __m128i srcVectorPrevLoaded = _mm_load_si128((__m128i *)&src[x - minusOffsetToAlignSrcOn16Bytes]);\ + const int palignrOffset = minusOffsetToAlignSrcOn16Bytes << 2;\ +\ + const __m128i alphaShuffleMask = _mm_set_epi8(0xff,15,0xff,15,0xff,11,0xff,11,0xff,7,0xff,7,0xff,3,0xff,3);\ + switch (palignrOffset) {\ + case 4:\ + BLENDING_LOOP(4, length)\ + break;\ + case 8:\ + BLENDING_LOOP(8, length)\ + break;\ + case 12:\ + BLENDING_LOOP(12, length)\ + break;\ + }\ + }\ + for (; x < length; ++x) \ + blend_pixel(dst[x], src[x]); \ +} + +void qt_blend_argb32_on_argb32_ssse3(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + int w, int h, + int const_alpha) +{ + const quint32 *src = (const quint32 *) srcPixels; + quint32 *dst = (quint32 *) destPixels; + if (const_alpha == 256) { + const __m128i alphaMask = _mm_set1_epi32(0xff000000); + const __m128i nullVector = _mm_setzero_si128(); + const __m128i half = _mm_set1_epi16(0x80); + const __m128i one = _mm_set1_epi16(0xff); + const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); + + // We have to unrol the first row in order to deal with the load on unaligned data + // prior to the src pointer. + BLEND_SOURCE_OVER_ARGB32_FIRST_ROW_SSSE3(dst, src, w, nullVector, half, one, colorMask, alphaMask); + dst = (quint32 *)(((uchar *) dst) + dbpl); + src = (const quint32 *)(((const uchar *) src) + sbpl); + + for (int y = 1; y < h; ++y) { + BLEND_SOURCE_OVER_ARGB32_MAIN_SSSE3(dst, src, w, nullVector, half, one, colorMask, alphaMask); + dst = (quint32 *)(((uchar *) dst) + dbpl); + src = (const quint32 *)(((const uchar *) src) + sbpl); + } + } else if (const_alpha != 0) { + // dest = (s + d * sia) * ca + d * cia + // = s * ca + d * (sia * ca + cia) + // = s * ca + d * (1 - sa*ca) + const_alpha = (const_alpha * 255) >> 8; + const __m128i nullVector = _mm_setzero_si128(); + const __m128i half = _mm_set1_epi16(0x80); + const __m128i one = _mm_set1_epi16(0xff); + const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); + const __m128i constAlphaVector = _mm_set1_epi16(const_alpha); + for (int y = 0; y < h; ++y) { + BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, w, nullVector, half, one, colorMask, constAlphaVector) + dst = (quint32 *)(((uchar *) dst) + dbpl); + src = (const quint32 *)(((const uchar *) src) + sbpl); + } + } +} + +QT_END_NAMESPACE + +#endif // QT_HAVE_SSSE3 diff --git a/tests/benchmarks/gui/image/blendbench/main.cpp b/tests/benchmarks/gui/image/blendbench/main.cpp index f53654b..d420d6c 100644 --- a/tests/benchmarks/gui/image/blendbench/main.cpp +++ b/tests/benchmarks/gui/image/blendbench/main.cpp @@ -106,6 +106,9 @@ private slots: void blendBenchAlpha_data(); void blendBenchAlpha(); + + void unalignedBlendArgb32_data(); + void unalignedBlendArgb32(); }; void BlendBench::blendBench_data() @@ -179,6 +182,46 @@ void BlendBench::blendBenchAlpha() } } +void BlendBench::unalignedBlendArgb32_data() +{ + // The performance of blending can depend of the alignment of the data + // on 16 bytes. Some SIMD instruction set have significantly better + // memory access when the memory is aligned on 16 bytes boundary. + + // offset in 32 bits words + QTest::addColumn("offset"); + QTest::newRow("aligned on 16 bytes") << 0; + QTest::newRow("unaligned by 4 bytes") << 1; + QTest::newRow("unaligned by 8 bytes") << 2; + QTest::newRow("unaligned by 12 bytes") << 3; +} + +void BlendBench::unalignedBlendArgb32() +{ + const int dimension = 1024; + + // We use dst aligned by design. We don't want to test all the combination of alignemnt for src and dst. + // Moreover, it make sense for us to align dst in the implementation because it is accessed more often. + uchar *dstMemory = static_cast(qMallocAligned((dimension * dimension * sizeof(quint32)), 16)); + QImage destination(dstMemory, dimension, dimension, QImage::Format_ARGB32_Premultiplied); + destination.fill(0x12345678); // avoid special cases of alpha + + uchar *srcMemory = static_cast(qMallocAligned((dimension * dimension * sizeof(quint32)) + 16, 16)); + QFETCH(int, offset); + srcMemory += (offset * sizeof(quint32)); + + QImage src(srcMemory, dimension, dimension, QImage::Format_ARGB32_Premultiplied); + src.fill(0x87654321); + + QPainter painter(&destination); + QBENCHMARK { + painter.drawImage(QPoint(), src); + } + + qFreeAligned(srcMemory); + qFreeAligned(dstMemory); +} + QTEST_MAIN(BlendBench) #include "main.moc" -- cgit v0.12 From 34eb6cb58629c58b819d4c82b582106513da03bd Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 16 Aug 2010 17:35:17 +0200 Subject: diagramscene example: fix leak and crashes. In MainWindow::deleteItem, if there is arrow selected, we need to clean up the items from this arrow. We need to delete them first so there is no arrow in the list anymore when we calls removeArrows (which before, deleted arrow that were possibly in the list, resulting in crashes) Also avoid leak by giving parents to objects that needs it, and destroying items. Reviewed-by: Geir Vattekar Task-number: QTBUG-12753 Merge-request: 775 Reviewed-by: Liang Qi --- doc/src/examples/diagramscene.qdoc | 3 ++- examples/graphicsview/diagramscene/mainwindow.cpp | 29 ++++++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/doc/src/examples/diagramscene.qdoc b/doc/src/examples/diagramscene.qdoc index f4d6b0d..7c643c2 100644 --- a/doc/src/examples/diagramscene.qdoc +++ b/doc/src/examples/diagramscene.qdoc @@ -265,7 +265,8 @@ \snippet examples/graphicsview/diagramscene/mainwindow.cpp 3 - This slot deletes the selected item, if any, from the scene. If + This slot deletes the selected item, if any, from the scene. It + deletes the arrows first in order to avoid to delete them twice. If the item to be deleted is a \c DiagramItem, we also need to delete arrows connected to it; we don't want arrows in the scene that aren't connected to items in both ends. diff --git a/examples/graphicsview/diagramscene/mainwindow.cpp b/examples/graphicsview/diagramscene/mainwindow.cpp index f09c552..7d82df0 100644 --- a/examples/graphicsview/diagramscene/mainwindow.cpp +++ b/examples/graphicsview/diagramscene/mainwindow.cpp @@ -45,6 +45,7 @@ #include "diagramitem.h" #include "diagramscene.h" #include "diagramtextitem.h" +#include "arrow.h" const int InsertTextButton = 10; @@ -55,7 +56,7 @@ MainWindow::MainWindow() createToolBox(); createMenus(); - scene = new DiagramScene(itemMenu); + scene = new DiagramScene(itemMenu, this); scene->setSceneRect(QRectF(0, 0, 5000, 5000)); connect(scene, SIGNAL(itemInserted(DiagramItem*)), this, SLOT(itemInserted(DiagramItem*))); @@ -123,11 +124,22 @@ void MainWindow::buttonGroupClicked(int id) void MainWindow::deleteItem() { foreach (QGraphicsItem *item, scene->selectedItems()) { - if (item->type() == DiagramItem::Type) { - qgraphicsitem_cast(item)->removeArrows(); + if (item->type() == Arrow::Type) { + scene->removeItem(item); + Arrow *arrow = qgraphicsitem_cast(item); + arrow->startItem()->removeArrow(arrow); + arrow->endItem()->removeArrow(arrow); + delete item; } - scene->removeItem(item); } + + foreach (QGraphicsItem *item, scene->selectedItems()) { + if (item->type() == DiagramItem::Type) { + qgraphicsitem_cast(item)->removeArrows(); + } + scene->removeItem(item); + delete item; + } } //! [3] @@ -313,7 +325,7 @@ void MainWindow::about() //! [21] void MainWindow::createToolBox() { - buttonGroup = new QButtonGroup; + buttonGroup = new QButtonGroup(this); buttonGroup->setExclusive(false); connect(buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(buttonGroupClicked(int))); @@ -345,7 +357,7 @@ void MainWindow::createToolBox() QWidget *itemWidget = new QWidget; itemWidget->setLayout(layout); - backgroundButtonGroup = new QButtonGroup; + backgroundButtonGroup = new QButtonGroup(this); connect(backgroundButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(backgroundButtonGroupClicked(QAbstractButton*))); @@ -460,7 +472,6 @@ void MainWindow::createToolbars() editToolBar->addAction(sendBackAction); fontCombo = new QFontComboBox(); - fontSizeCombo = new QComboBox(); connect(fontCombo, SIGNAL(currentFontChanged(QFont)), this, SLOT(currentFontChanged(QFont))); @@ -526,7 +537,7 @@ void MainWindow::createToolbars() linePointerButton->setCheckable(true); linePointerButton->setIcon(QIcon(":/images/linepointer.png")); - pointerTypeGroup = new QButtonGroup; + pointerTypeGroup = new QButtonGroup(this); pointerTypeGroup->addButton(pointerButton, int(DiagramScene::MoveItem)); pointerTypeGroup->addButton(linePointerButton, int(DiagramScene::InsertLine)); @@ -605,7 +616,7 @@ QMenu *MainWindow::createColorMenu(const char *slot, QColor defaultColor) names << tr("black") << tr("white") << tr("red") << tr("blue") << tr("yellow"); - QMenu *colorMenu = new QMenu; + QMenu *colorMenu = new QMenu(this); for (int i = 0; i < colors.count(); ++i) { QAction *action = new QAction(names.at(i), this); action->setData(colors.at(i)); -- cgit v0.12 From 5b47a913473802d377ec303b425eb1ad0496f843 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Mon, 16 Aug 2010 17:35:19 +0200 Subject: Translate bughowto.qdoc into zh_CN. Merge-request: 775 Reviewed-by: Liang Qi --- doc/src/zh_CN/bughowto.qdoc | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 doc/src/zh_CN/bughowto.qdoc diff --git a/doc/src/zh_CN/bughowto.qdoc b/doc/src/zh_CN/bughowto.qdoc new file mode 100644 index 0000000..05c8403 --- /dev/null +++ b/doc/src/zh_CN/bughowto.qdoc @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** 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 Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page bughowto.html + \title 如何报告 Bug + \brief 关于报告 Qt 中 bug 方法的信息。 + + 如果您认为您已经发现了 Qt 的一个 bug,我们非常高兴听到这个消息,因为在此之后我们可以修复它。 + + 在报告 bug 之前,请检查 Qt 网站中的 \l{FAQs}{FAQ}、\l{Platform Notes}{平台备注}和 \l{Qt Bug Tracker}{Qt Bug 跟踪器}确认这个问题是否已知。 + + 如果您还没有 \l{Qt Bug Tracker}{Qt Bug 跟踪器}的帐号,您要做的第一件事情就是注册一个。一旦您完成了这一步,您就可以提交并且跟踪您的 bug 报告,而且在您提交之后,公众就可以看到它们。 + + 请在您的 bug 报告中包含以下信息: + + \list 1 + \o 您的编译器的名称和版本号 + \o 您的操作系统的名称和版本号 + \o 您所使用的 Qt 的版本号,以及它在被编译的时候所使用的配置选项 + \o 关于如何重复这个问题的可靠并且清晰的描述 + \endlist + + 如果可能,请提供一个使用 QtTest 模块编写的测试程序,因为这样做可以加快我们重现您的这个问题的进程,并且可以让开发人员更有效率的确认这个问题。 + + 另外,如果您的问题只是在运行时可见,请尽量创建一个可以运行并且显示这个问题的小测试程序。通常,您可以在众多 Qt 实例中选择一个进行少量修改就可以实现这一目的。 + + 如果您已经实现了一个 bug 修复并且希望直接贡献这个修复,那么您需要通过\l{Public Qt Repository}{公共 Qt 代码仓库}来实现。 +*/ -- cgit v0.12 From 3e07671a2b043703bc51c2672f16c45ed0c31c42 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 13 Aug 2010 18:12:30 +0200 Subject: Keyboard navigation regression in QTreeView Ammends commit 8da7252de0badb818302763cbe62c38ad699f1f3 Auto-test included. Reviewed-by: Olivier Task-number: QTBUG-11466 --- src/gui/itemviews/qabstractitemview.cpp | 8 +- tests/auto/qtreeview/tst_qtreeview.cpp | 125 ++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 3 deletions(-) diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index 97499f3..4ffd284 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -2270,9 +2270,11 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event) } else { d->selectionModel->setCurrentIndex(newCurrent, command); d->pressedPosition = visualRect(newCurrent).center() + d->offset(); - // We copy the same behaviour as for mousePressEvent(). - QRect rect(d->pressedPosition - d->offset(), QSize(1, 1)); - setSelection(rect, command); + if (newCurrent.isValid()) { + // We copy the same behaviour as for mousePressEvent(). + QRect rect(d->pressedPosition - d->offset(), QSize(1, 1)); + setSelection(rect, command); + } } event->accept(); return; diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index 75a4c62..7e2e800 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -239,6 +239,7 @@ private slots: void doubleClickedWithSpans(); void taskQTBUG_6450_selectAllWith1stColumnHidden(); void taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint(); + void taskQTBUG_11466_keyboardNavigationRegression(); }; class QtTestModel: public QAbstractItemModel @@ -3785,5 +3786,129 @@ void tst_QTreeView::keyboardNavigationWithDisabled() QCOMPARE(view.currentIndex(), model.index(6, 0)); } +class Model_11466 : public QAbstractItemModel +{ + Q_OBJECT +public: + Model_11466(QObject *parent) : + m_block(false) + { + // set up the model to have two top level items and a few others + m_selectionModel = new QItemSelectionModel(this, this); // owned by this + + connect(m_selectionModel, SIGNAL(currentChanged(const QModelIndex &,const QModelIndex &)), + this, SLOT(slotCurrentChanged(const QModelIndex &,const QModelIndex &))); + }; + + int rowCount(const QModelIndex &parent) const + { + if (parent.isValid()) + return (parent.internalId() == 0) ? 4 : 0; + return 2; // two top level items + } + + int columnCount(const QModelIndex &parent) const + { + return 2; + } + + QVariant data(const QModelIndex &index, int role) const + { + if (role == Qt::DisplayRole && index.isValid()) { + qint64 parentRowPlusOne = index.internalId(); + QString str; + QTextStream stream(&str); + if (parentRowPlusOne > 0) + stream << parentRowPlusOne << " -> " << index.row() << " : " << index.column(); + else + stream << index.row() << " : " << index.column(); + return QVariant(str); + } + return QVariant(); + } + + QModelIndex parent(const QModelIndex &index) const + { + if (index.isValid()) { + qint64 parentRowPlusOne = index.internalId(); + if (parentRowPlusOne > 0) { + int row = static_cast(parentRowPlusOne - 1); + return createIndex(row, 0, (quint32)0); + } + } + return QModelIndex(); + } + + void bindView(QTreeView *view) + { + // sets the view to this model with a shared selection model + QItemSelectionModel *oldModel = view->selectionModel(); + if (oldModel != m_selectionModel) + delete oldModel; + view->setModel(this); // this creates a new selection model for the view, but we dont want it either ... + oldModel = view->selectionModel(); + view->setSelectionModel(m_selectionModel); + delete oldModel; + } + + QModelIndex index(int row, int column, const QModelIndex &parent) const + { + return createIndex(row, column, parent.isValid() ? (quint32)(parent.row() + 1) : (quint32)0); + } + +public slots: + void slotCurrentChanged(const QModelIndex ¤t,const QModelIndex &) + { + if (m_block) + return; + + if (current.isValid()) { + int selectedRow = current.row(); + quint32 parentRowPlusOne = static_cast(current.internalId()); + + for (int i = 0; i < 2; ++i) { + // announce the removal of all non top level items + beginRemoveRows(createIndex(i, 0, 0), 0, 3); + // nothing to actually do for the removal + endRemoveRows(); + + // put them back in again + beginInsertRows(createIndex(i, 0, 0), 0, 3); + // nothing to actually do for the insertion + endInsertRows(); + } + // reselect the current item ... + QModelIndex selectedIndex = createIndex(selectedRow, 0, parentRowPlusOne); + + m_block = true; // recursion block + m_selectionModel->select(selectedIndex, QItemSelectionModel::ClearAndSelect|QItemSelectionModel::Current|QItemSelectionModel::Rows); + m_selectionModel->setCurrentIndex(selectedIndex, QItemSelectionModel::NoUpdate); + m_block = false; + } else { + m_selectionModel->clear(); + } + } + +private: + bool m_block; + QItemSelectionModel *m_selectionModel; +}; + +void tst_QTreeView::taskQTBUG_11466_keyboardNavigationRegression() +{ + QTreeView treeView; + treeView.setSelectionBehavior(QAbstractItemView::SelectRows); + treeView.setSelectionMode(QAbstractItemView::SingleSelection); + Model_11466 model(&treeView); + model.bindView(&treeView); + treeView.expandAll(); + treeView.show(); + QTest::qWaitForWindowShown(&treeView); + + QTest::keyPress(treeView.viewport(), Qt::Key_Down); + QTest::qWait(10); + QTRY_COMPARE(treeView.currentIndex(), treeView.selectionModel()->selection().indexes().first()); +} + QTEST_MAIN(tst_QTreeView) #include "tst_qtreeview.moc" -- cgit v0.12 From 69e8769e2a3f44700c24437dc851ea817c16318f Mon Sep 17 00:00:00 2001 From: Nicolai de Haan Brogger Date: Mon, 16 Aug 2010 21:55:42 +0000 Subject: Take advantage of a new EGL extension when posting 16 bit surfaces. Replaces the existing NVIDIA EGL extension "EGL_NV_post_convert_replication" with another newer extension named "EGL_NV_post_convert_roundinng". The newer extension produces similar result when posting 16 bit surfaces to 24/32 bit as the old and performs faster. Motivated by qtbug-9444. Merge-request: 742 Reviewed-by: Donald Carr --- src/gui/egl/qegl_x11.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index fea6e8d..15cc109 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -165,7 +165,7 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (chosenVisualInfo) { // Skip size checks if implementation supports non-matching visual // and config (http://bugreports.qt.nokia.com/browse/QTBUG-9444). - if (QEgl::hasExtension("EGL_NV_post_convert_replication")) + if (QEgl::hasExtension("EGL_NV_post_convert_rounding")) return visualId; int visualRedSize = countBits(chosenVisualInfo->red_mask); -- cgit v0.12 From 875d5e374dce3dd7d7cce87b55e277e8e9497044 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 17 Aug 2010 13:29:08 +1000 Subject: Update QtGui def files Task-number: Reviewed-by: Martin Jones --- src/s60installs/bwins/QtGuiu.def | 4 +++- src/s60installs/eabi/QtGuiu.def | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index 90c0878..21a2122 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -4148,7 +4148,7 @@ EXPORTS ?ensureSceneTransformRecursive@QGraphicsItemPrivate@@QAEXPAPAVQGraphicsItem@@@Z @ 4147 NONAME ; void QGraphicsItemPrivate::ensureSceneTransformRecursive(class QGraphicsItem * *) ?ensureSequentialSiblingIndex@QGraphicsItemPrivate@@QAEXXZ @ 4148 NONAME ; void QGraphicsItemPrivate::ensureSequentialSiblingIndex(void) ?ensureSortedChildren@QGraphicsItemPrivate@@QAEXXZ @ 4149 NONAME ; void QGraphicsItemPrivate::ensureSortedChildren(void) - ?ensureSpace@QTextEngine@@QBEXH@Z @ 4150 NONAME ; void QTextEngine::ensureSpace(int) const + ?ensureSpace@QTextEngine@@QBEXH@Z @ 4150 NONAME ABSENT ; void QTextEngine::ensureSpace(int) const ?ensureVisible@QGraphicsItem@@QAEXABVQRectF@@HH@Z @ 4151 NONAME ; void QGraphicsItem::ensureVisible(class QRectF const &, int, int) ?ensureVisible@QGraphicsItem@@QAEXMMMMHH@Z @ 4152 NONAME ; void QGraphicsItem::ensureVisible(float, float, float, float, int, int) ?ensureVisible@QGraphicsView@@QAEXABVQRectF@@HH@Z @ 4153 NONAME ; void QGraphicsView::ensureVisible(class QRectF const &, int, int) @@ -12886,4 +12886,6 @@ EXPORTS ?zScaleChanged@QGraphicsScale@@IAEXXZ @ 12885 NONAME ; void QGraphicsScale::zScaleChanged(void) ?xScaleChanged@QGraphicsScale@@IAEXXZ @ 12886 NONAME ; void QGraphicsScale::xScaleChanged(void) ?yScaleChanged@QGraphicsScale@@IAEXXZ @ 12887 NONAME ; void QGraphicsScale::yScaleChanged(void) + ?_q_aboutToQuit@QApplicationPrivate@@QAEXXZ @ 12888 NONAME ; void QApplicationPrivate::_q_aboutToQuit(void) + ?ensureSpace@QTextEngine@@QBE_NH@Z @ 12889 NONAME ; bool QTextEngine::ensureSpace(int) const diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index d8e86bf..c4ad848 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -12091,4 +12091,5 @@ EXPORTS _ZN14QGraphicsScale13xScaleChangedEv @ 12090 NONAME _ZN14QGraphicsScale13yScaleChangedEv @ 12091 NONAME _ZN14QGraphicsScale13zScaleChangedEv @ 12092 NONAME + _ZN19QApplicationPrivate14_q_aboutToQuitEv @ 12093 NONAME -- cgit v0.12 From cf0f53ecefd6914d533ffea057748480e3e5bd33 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 17 Aug 2010 13:29:08 +1000 Subject: Update QtDeclarative def files Task-number: Reviewed-by: Martin Jones --- src/s60installs/bwins/QtDeclarativeu.def | 1 + src/s60installs/eabi/QtDeclarativeu.def | 1 + 2 files changed, 2 insertions(+) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 480d9ff..bc6d0aa 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -1684,4 +1684,5 @@ EXPORTS ?rootContext@QDeclarativeView@@QBEPAVQDeclarativeContext@@XZ @ 1683 NONAME ; class QDeclarativeContext * QDeclarativeView::rootContext(void) const ?rootContext@QDeclarativeEngine@@QBEPAVQDeclarativeContext@@XZ @ 1684 NONAME ; class QDeclarativeContext * QDeclarativeEngine::rootContext(void) const ?qmlregister@QDeclarativePrivate@@YAHW4RegistrationType@1@PAX@Z @ 1685 NONAME ; int QDeclarativePrivate::qmlregister(enum QDeclarativePrivate::RegistrationType, void *) + ?hasValue@QDeclarativeOpenMetaObject@@QBE_NH@Z @ 1686 NONAME ; bool QDeclarativeOpenMetaObject::hasValue(int) const diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index 9a3cefa..723f2ae 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -1714,4 +1714,5 @@ EXPORTS _ZNK16QDeclarativeView6engineEv @ 1713 NONAME _ZNK18QDeclarativeEngine11rootContextEv @ 1714 NONAME _ZN19QDeclarativePrivate11qmlregisterENS_16RegistrationTypeEPv @ 1715 NONAME + _ZNK26QDeclarativeOpenMetaObject8hasValueEi @ 1716 NONAME -- cgit v0.12 From 056574f7d6c331ec7d972b298585e1a3a6c975ac Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 17 Aug 2010 14:05:53 +1000 Subject: Docs - clarify use of PropertyChanges for immediate property changes in a State (e.g. for setting a transformOrigin for a RotationAnimation). Also improve some other animation docs in general. --- doc/src/declarative/animation.qdoc | 19 ++- doc/src/snippets/declarative/propertychanges.qml | 92 +++++++++++ doc/src/snippets/declarative/rotationanimation.qml | 3 +- src/declarative/util/qdeclarativeanimation.cpp | 169 +++++++++++++++------ .../util/qdeclarativepropertychanges.cpp | 119 ++++++--------- 5 files changed, 273 insertions(+), 129 deletions(-) create mode 100644 doc/src/snippets/declarative/propertychanges.qml diff --git a/doc/src/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc index 7416341..53a0c55 100644 --- a/doc/src/declarative/animation.qdoc +++ b/doc/src/declarative/animation.qdoc @@ -156,11 +156,13 @@ The \l {PropertyAnimation::}{to} property is also required to specify the new \section2 Standalone Animations Animations can also be created as ordinary QML objects that are not bound to -any particular objects and properties. An example: +any particular objects and properties. Here is an example, using a +PropertyAnimation object. The animation is explicitly started when the +\l Rectangle is clicked: \snippet doc/src/snippets/declarative/animation-standalone.qml 0 -A standalone animation is not running by default and must be started explicitly +A standalone animation object is not running by default and must be started explicitly using the \l {Animation::}{running} property or \l {Animation::}{start()} and \l {Animation::}{stop()} methods. Since the animation is not bound to a particular object or property, it must define the \l @@ -183,10 +185,13 @@ object and add it to an item's \l {Item::}{transitions} property. An example: \snippet doc/src/snippets/declarative/animation-transitions.qml 0 -When the \l Rectangle changes to the \e moved state, its \c x and \c y property -values are changed by the PropertyChanges object, and the PropertyAnimation -defined within the \l Transition is triggered on these properties. The -animation will not be applied at any time other than during the state change. +The PropertyChanges object in the \e moved state defines that when the +\l Rectangle is in this state, its position should be changed +to (50, 50). When the \l Rectangle changes to the \e moved state, the +\l Transition will be triggered, and the transition's \l PropertyAnimation will +animate the changes in the \c x and \c y properties to their new values. +The animation will not be applied at any time other than during the state +change. Notice the example does not set any \l {PropertyAnimation::}{from} and \l {PropertyAnimation::}{to} values for the PropertyAnimation. As a convenience, @@ -234,7 +239,7 @@ and rotation changes. A ColorAnimation allows color values for the \l {ColorAnimation::}{from} and \l {ColorAnimation::}{to} properties. The -following animates the rectangle's \l {Rectangle::color} property: +following animates the rectangle's \l {Rectangle::}{color} property: \snippet doc/src/snippets/declarative/animation-elements.qml color diff --git a/doc/src/snippets/declarative/propertychanges.qml b/doc/src/snippets/declarative/propertychanges.qml new file mode 100644 index 0000000..9f119bf --- /dev/null +++ b/doc/src/snippets/declarative/propertychanges.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![import] +import Qt 4.7 +//![import] + +Column { + +//![0] +Item { + id: container + width: 300; height: 300 + + Rectangle { + id: rect + width: 100; height: 100 + color: "red" + + MouseArea { + id: mouseArea + anchors.fill: parent + } + + states: State { + name: "resized"; when: mouseArea.pressed + PropertyChanges { target: rect; color: "blue"; height: container.height } + } + } +} +//![0] + +//![reset] +Rectangle { + width: 300; height: 200 + + Text { + id: myText + width: 50 + wrapMode: Text.WordWrap + text: "a text string that is longer than 50 pixels" + + states: State { + name: "widerText" + PropertyChanges { target: myText; width: undefined } + } + } + + MouseArea { + anchors.fill: parent + onClicked: myText.state = "widerText" + } +} +//![reset] +} diff --git a/doc/src/snippets/declarative/rotationanimation.qml b/doc/src/snippets/declarative/rotationanimation.qml index c81395a..b56cb3f 100644 --- a/doc/src/snippets/declarative/rotationanimation.qml +++ b/doc/src/snippets/declarative/rotationanimation.qml @@ -52,7 +52,8 @@ Item { smooth: true states: State { - name: "rotated"; PropertyChanges { target: rect; rotation: 180 } + name: "rotated" + PropertyChanges { target: rect; rotation: 180 } } transitions: Transition { diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 3b8cb37..4e9e8d5 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -694,9 +694,12 @@ QDeclarativeColorAnimation::~QDeclarativeColorAnimation() } \endqml - If this value is not set and the ColorAnimation is defined within - a \l Transition, it defaults to the value defined in the starting - state of the \l Transition. + If the ColorAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the starting state of the + \l Transition, or the current value of the property at the moment the + \l Behavior is triggered. + + \sa {QML Animation} */ QColor QDeclarativeColorAnimation::from() const { @@ -714,9 +717,12 @@ void QDeclarativeColorAnimation::setFrom(const QColor &f) This property holds the color value at which the animation should end. - If this value is not set and the ColorAnimation is defined within - a \l Transition or \l Behavior, it defaults to the value defined in the end - state of the \l Transition or \l Behavior. + If the ColorAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. + + \sa {QML Animation} */ QColor QDeclarativeColorAnimation::to() const { @@ -887,29 +893,45 @@ QAbstractAnimation *QDeclarativeScriptAction::qtAnimation() \inherits Animation \brief The PropertyAction element allows immediate property changes during animation. - PropertyAction is used to specify an immediate property change - during an animation. The property change is not animated. + PropertyAction is used to specify an immediate property change during an + animation. The property change is not animated. - For example, to explicitly set \c {theImage.smooth = true} during a \l Transition: - \code - transitions: Transition { - ... - PropertyAction { target: theImage; property: "smooth"; value: true } - ... - } - \endcode + It is useful for setting non-animated property values during an animation. - Or, to set \c theWebView.url to the value set for the destination state: - \code + For example, here is a SequentialAnimation that sets the image's + \l {Image::}{smooth} property to \c true, animates the width of the image, + then sets \l {Image::}{smooth} back to \c false: + + \snippet doc/src/snippets/declarative/propertyaction.qml standalone + + PropertyAction is also useful for setting the exact point at which a property + change should occur during a \l Transition. For example, if PropertyChanges + was used in a \l State to rotate an item around a particular + \l {Item::}{transformOrigin}, it might be implemented like this: + + \snippet doc/src/snippets/declarative/propertyaction.qml transition + + However, with this code, the \c transformOrigin is not set until \e after + the animation, as a \l State is taken to define the values at the \e end of + a transition. The animation would rotate at the default \c transformOrigin, + then jump to \c Item.BottomRight. To fix this, insert a PropertyChanges + before the RotationAnimation begins: + + \qml transitions: Transition { - ... - PropertyAction { target: theWebView; property: "url" } - ... + SequentialAnimation { + PropertyAction { target: rect; property: "transformOrigin" } + RotationAnimation { ... } + } } - \endcode - + \endqml + + This immediately sets the \c transformOrigin property to the value defined + in the end state of the \l Transition (i.e. the value defined in the + PropertyChanges object) so that the rotation animation begins with the + correct transform origin. - \sa QtDeclarative + \sa {QML Animation}, QtDeclarative */ /*! \internal @@ -1014,7 +1036,11 @@ QDeclarativeListProperty QDeclarativePropertyAction::exclude() /*! \qmlproperty any PropertyAction::value This property holds the value to be set on the property. - If not set, then the value defined for the end state of the transition. + + If the PropertyAction is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. */ QVariant QDeclarativePropertyAction::value() const { @@ -1190,7 +1216,7 @@ void QDeclarativeNumberAnimation::init() /*! \qmlproperty real NumberAnimation::from - This property holds the starting number value. + This property holds the starting value for the animation. For example, the following animation is not applied until the \c x value has reached 100: @@ -1205,9 +1231,12 @@ void QDeclarativeNumberAnimation::init() } \endqml - If this value is not set and the NumberAnimation is defined within - a \l Transition, it defaults to the value defined in the start - state of the \l Transition. + If the NumberAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the starting state of the + \l Transition, or the current value of the property at the moment the + \l Behavior is triggered. + + \sa {QML Animation} */ qreal QDeclarativeNumberAnimation::from() const @@ -1223,11 +1252,14 @@ void QDeclarativeNumberAnimation::setFrom(qreal f) /*! \qmlproperty real NumberAnimation::to - This property holds the ending number value. + This property holds the end value for the animation. - If this value is not set and the NumberAnimation is defined within - a \l Transition or \l Behavior, it defaults to the value defined in the end - state of the \l Transition or \l Behavior. + If the NumberAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. + + \sa {QML Animation} */ qreal QDeclarativeNumberAnimation::to() const { @@ -1280,10 +1312,14 @@ QDeclarativeVector3dAnimation::~QDeclarativeVector3dAnimation() /*! \qmlproperty real Vector3dAnimation::from - This property holds the starting value. + This property holds the starting value for the animation. + + If the Vector3dAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the starting state of the + \l Transition, or the current value of the property at the moment the + \l Behavior is triggered. - If this value is not set, it defaults to the value defined in the start - state of the \l Transition. + \sa {QML Animation} */ QVector3D QDeclarativeVector3dAnimation::from() const { @@ -1298,10 +1334,14 @@ void QDeclarativeVector3dAnimation::setFrom(QVector3D f) /*! \qmlproperty real Vector3dAnimation::to - This property holds the ending value. + This property holds the end value for the animation. - If this value is not set, it defaults to the value defined in the end - state of the \l Transition or \l Behavior. + If the Vector3dAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. + + \sa {QML Animation} */ QVector3D QDeclarativeVector3dAnimation::to() const { @@ -1343,6 +1383,12 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t) your own properties via \l {PropertyAnimation::properties}{properties} or \l {PropertyAnimation::property}{property}. + Also, note the \l Rectangle will be rotated around its default + \l {Item::}{transformOrigin} (which is \c Item.Center). To use a different + transform origin, set the origin in the PropertyChanges object and apply + the change at the start of the animation using PropertyAction. See the + PropertyAction documentation for more details. + Like any other animation element, a RotationAnimation can be applied in a number of ways, including transitions, behaviors and property value sources. The \l {QML Animation} documentation shows a variety of methods @@ -1408,7 +1454,7 @@ QDeclarativeRotationAnimation::~QDeclarativeRotationAnimation() /*! \qmlproperty real RotationAnimation::from - This property holds the starting number value. + This property holds the starting value for the animation. For example, the following animation is not applied until the \c angle value has reached 100: @@ -1423,8 +1469,12 @@ QDeclarativeRotationAnimation::~QDeclarativeRotationAnimation() } \endqml - If this value is not set, it defaults to the value defined in the start - state of the \l Transition. + If the RotationAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the starting state of the + \l Transition, or the current value of the property at the moment the + \l Behavior is triggered. + + \sa {QML Animation} */ qreal QDeclarativeRotationAnimation::from() const { @@ -1439,10 +1489,14 @@ void QDeclarativeRotationAnimation::setFrom(qreal f) /*! \qmlproperty real RotationAnimation::to - This property holds the ending value. + This property holds the end value for the animation.. + + If the RotationAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. - If this value is not set, it defaults to the value defined in the end - state of the \l Transition or \l Behavior. + \sa {QML Animation} */ qreal QDeclarativeRotationAnimation::to() const { @@ -1854,8 +1908,14 @@ void QDeclarativePropertyAnimation::setDuration(int duration) /*! \qmlproperty real PropertyAnimation::from - This property holds the starting value. - If not set, then the value defined in the start state of the transition. + This property holds the starting value for the animation. + + If the PropertyAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the starting state of the + \l Transition, or the current value of the property at the moment the + \l Behavior is triggered. + + \sa {QML Animation} */ QVariant QDeclarativePropertyAnimation::from() const { @@ -1875,8 +1935,14 @@ void QDeclarativePropertyAnimation::setFrom(const QVariant &f) /*! \qmlproperty real PropertyAnimation::to - This property holds the ending value. - If not set, then the value defined in the end state of the transition or \l Behavior. + This property holds the end value for the animation. + + If the PropertyAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. + + \sa {QML Animation} */ QVariant QDeclarativePropertyAnimation::to() const { @@ -2502,7 +2568,10 @@ void QDeclarativeParentAnimation::setTarget(QDeclarativeItem *target) \qmlproperty Item ParentAnimation::newParent The new parent to animate to. - If not set, then the parent defined in the end state of the transition. + If the ParentAnimation is defined within a \l Transition or \l Behavior, + this value defaults to the value defined in the end state of the + \l Transition, or the value of the property change that triggered the + \l Behavior. */ QDeclarativeItem *QDeclarativeParentAnimation::newParent() const { diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp index 25edd35..c28ada3 100644 --- a/src/declarative/util/qdeclarativepropertychanges.cpp +++ b/src/declarative/util/qdeclarativepropertychanges.cpp @@ -65,48 +65,30 @@ QT_BEGIN_NAMESPACE \since 4.7 \brief The PropertyChanges element describes new property bindings or values for a state. - PropertyChanges provides a state change that modifies the properties of an item. + PropertyChanges is used to define the property values or bindings in a + \l State. This enables an item's property values to be changed when it + \l {QML States}{changes between states}. - Here is a property change that modifies the text and color of a \l Text element - when it is clicked: + To create a PropertyChanges object, specify the \l target item whose + properties are to be modified, and define the new property values or + bindings. For example: - \qml - Text { - id: myText - width: 100; height: 100 - text: "Hello" - color: "blue" - - states: State { - name: "myState" - - PropertyChanges { - target: myText - text: "Goodbye" - color: "red" - } - } - - MouseArea { anchors.fill: parent; onClicked: myText.state = 'myState' } - } - \endqml - - By default, PropertyChanges will establish new bindings where appropriate. - For example, the following creates a new binding for myItem's \c height property. - - \qml - PropertyChanges { - target: myItem - height: parent.height - } - \endqml - - If you don't want a binding to be established (and instead just want to assign - the value of the binding at the time the state is entered), - you should set the PropertyChange's \l{PropertyChanges::explicit}{explicit} + \snippet doc/src/snippets/declarative/propertychanges.qml import + \codeline + \snippet doc/src/snippets/declarative/propertychanges.qml 0 + + When the mouse is pressed, the \l Rectangle changes to the \e resized + state. In this state, the PropertyChanges object sets the rectangle's + color to blue and the \c height value to that of \c container.height. + + Note this automatically binds \c rect.height to \c container.height + in the \e resized state. If a property binding should not be + established, and the height should just be set to the value of + \c container.height at the time of the state change, set the \l explicit property to \c true. - - State-specific script for signal handlers can also be specified: + + A PropertyChanges object can also override the default signal handler + for an object to implement a signal handler specific to the new state: \qml PropertyChanges { @@ -115,36 +97,31 @@ QT_BEGIN_NAMESPACE } \endqml - You can reset a property in a state change by assigning \c undefined. In the following - example we reset \c theText's width when we enter state1. This will give the text its - natural width (which is the whole string on one line). + \note PropertyChanges can be used to change anchor margins, but not other anchor + values; use AnchorChanges for this instead. Similarly, to change an \l Item's + \l {Item::}{parent} value, use ParentChanges instead. - \qml - import Qt 4.7 - - Rectangle { - width: 640 - height: 480 - Text { - id: theText - width: 50 - wrapMode: Text.WordWrap - text: "a text string that is longer than 50 pixels" - } - states: State { - name: "state1" - PropertyChanges { - target: theText - width: undefined - } - } - } - \endqml + \section2 Resetting property values - Anchor margins should be changed with PropertyChanges, but other anchor changes or changes to - an Item's parent should be done using the associated change elements - (ParentChange and AnchorChanges, respectively). + The \c undefined value can be used to reset the property value for a state. + In the following example, when \c theText changes to the \e widerText + state, its \c width property is reset, giving the text its natural width + and displaying the whole string on a single line. + + \snippet doc/src/snippets/declarative/propertychanges.qml reset + + + \section2 Immediate property changes in transitions + + When \l Transitions are used to animate state changes, they animate + properties from their values in the current state to those defined in the + new state (as defined by PropertyChanges objects). However, + it is sometimes desirable to set a property value \e immediately during a + \l Transition, without animation; in these cases, the PropertyAction + element can be used to force an immediate property change. + + See the PropertyAction documentation for more details. \sa {declarative/animation/states}{states example}, {qmlstate}{States}, QtDeclarative */ @@ -397,12 +374,12 @@ void QDeclarativePropertyChanges::setObject(QObject *o) /*! \qmlproperty bool PropertyChanges::restoreEntryValues - - Whether or not the previous values should be restored when - leaving the state. By default, restoreEntryValues is true. - By setting restoreEntryValues to false, you can create a temporary state - that has permanent effects on property values. + This property holds whether the previous values should be restored when + leaving the state. + + The default value is \c true. Setting this value to \c false creates a + temporary state that has permanent effects on property values. */ bool QDeclarativePropertyChanges::restoreEntryValues() const { -- cgit v0.12 From 59d2b0a0a1c836d3371c18a2a857d88c2d28621f Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 17 Aug 2010 14:09:07 +1000 Subject: Add missing file --- doc/src/snippets/declarative/propertyaction.qml | 86 +++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 doc/src/snippets/declarative/propertyaction.qml diff --git a/doc/src/snippets/declarative/propertyaction.qml b/doc/src/snippets/declarative/propertyaction.qml new file mode 100644 index 0000000..1a15469 --- /dev/null +++ b/doc/src/snippets/declarative/propertyaction.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import Qt 4.7 + +Row { + +//![transition] +Item { + width: 400; height: 400 + + Rectangle { + id: rect + width: 200; height: 100 + color: "red" + + states: State { + name: "rotated" + PropertyChanges { target: rect; rotation: 180; transformOrigin: Item.BottomRight } + } + + transitions: Transition { + RotationAnimation { duration: 1000; direction: RotationAnimation.Counterclockwise } + } + + MouseArea { + anchors.fill: parent + onClicked: rect.state = "rotated" + } + } +} +//![transition] + +Item { + width: 300; height: 300 + + Image { id: img; source: "pics/qt.png" } + +//![standalone] +SequentialAnimation { + PropertyAction { target: img; property: "smooth"; value: "true" } + NumberAnimation { target: img; property: "width"; to: 300; duration: 1000 } + PropertyAction { target: img; property: "smooth"; value: "false" } +} +//![standalone] +} + +} + -- cgit v0.12 From a76b8bf67696ae69888cc6237417e7c8f07f8da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 17 Aug 2010 10:29:03 +0200 Subject: Prevented Xorg crash in qtdemo when running corkboards example. The crash happens in the Nvidia driver in glXReleaseTexImageEXT when scrolling the corkboard using the mouse. To work around it we detect the Nvidia driver versions where this is known to be a problem and skip using the texture from pixmap extension in those cases. Task-number: QTBUG-12914 Reviewed-by: Trond --- src/opengl/qgl.cpp | 30 +++++++++++++++++++++++++----- src/opengl/qgl_p.h | 3 +++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 4daa866..74bde36 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1688,6 +1688,10 @@ void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format) workaround_needsFullClearOnEveryFrame = false; workaround_brokenFBOReadBack = false; workaroundsCached = false; + + workaround_brokenTextureFromPixmap = false; + workaround_brokenTextureFromPixmap_init = false; + for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) vertexAttributeArraysEnabledState[i] = false; } @@ -2570,11 +2574,27 @@ QGLTexture *QGLContextPrivate::bindTexture(const QPixmap &pixmap, GLenum target, && xinfo && xinfo->screen() == pixmap.x11Info().screen() && target == GL_TEXTURE_2D) { - texture = bindTextureFromNativePixmap(const_cast(&pixmap), key, options); - if (texture) { - texture->options |= QGLContext::MemoryManagedBindOption; - texture->boundPixmap = pd; - boundPixmaps.insert(pd, QPixmap(pixmap)); + if (!workaround_brokenTextureFromPixmap_init) { + workaround_brokenTextureFromPixmap_init = true; + + const QByteArray versionString(reinterpret_cast(glGetString(GL_VERSION))); + const int pos = versionString.indexOf("NVIDIA "); + + if (pos >= 0) { + const QByteArray nvidiaVersionString = versionString.mid(pos + strlen("NVIDIA ")); + + if (nvidiaVersionString.startsWith("195") || nvidiaVersionString.startsWith("256")) + workaround_brokenTextureFromPixmap = true; + } + } + + if (!workaround_brokenTextureFromPixmap) { + texture = bindTextureFromNativePixmap(const_cast(&pixmap), key, options); + if (texture) { + texture->options |= QGLContext::MemoryManagedBindOption; + texture->boundPixmap = pd; + boundPixmaps.insert(pd, QPixmap(pixmap)); + } } } #endif diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 32feacd..ca0d3fa 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -393,6 +393,9 @@ public: uint workaround_brokenFBOReadBack : 1; uint workaroundsCached : 1; + uint workaround_brokenTextureFromPixmap : 1; + uint workaround_brokenTextureFromPixmap_init : 1; + QPaintDevice *paintDevice; QColor transpColor; QGLContext *q_ptr; -- cgit v0.12 From d7213ecceabf79de561cd276429372e09464e62c Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 17 Aug 2010 11:11:15 +0200 Subject: tst_QDataStream::stream_QPixmap: actualy test QPixmap. Because of a type, QIcon was tested twicen and QPixmap was not tested --- tests/auto/qdatastream/tst_qdatastream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp index 31e12fe..c03bc71 100644 --- a/tests/auto/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/qdatastream/tst_qdatastream.cpp @@ -1820,7 +1820,7 @@ void tst_QDataStream::stream_QPixmap() #ifdef Q_OS_WINCE QSKIP("Test depends on more memory than available on Qt/CE", SkipAll); #endif - STREAM_IMPL(QIcon); + STREAM_IMPL(QPixmap); } void tst_QDataStream::stream_QIcon_data() -- cgit v0.12 From cc6dc0aeefde881a95f5fea2b26f2f3d7bdc6e15 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 17 Aug 2010 10:08:20 +0200 Subject: Cocoa: parent windows shows on screen when they should be hidden The reason is the cocoa method that adds a window as a child of another, it ends up showing both the parent and the child window regardless. And this could in some cases also cause a crash. So we therefore need to be careful when calling that function, and be sure that the parent is actually visible. In addition, addChildWindow reset the stacking level of the child window, and made e.g. normal child windows pop in front of tool child windows. This could easily be seen in e.g. Designer. Task-number: QTBUG-12866 Reviewed-by: prasanth --- src/gui/kernel/qwidget_mac.mm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 8ae6a99..4ed4ccc 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -2796,10 +2796,16 @@ void QWidgetPrivate::setSubWindowStacking(bool set) if (QWidget *parent = q->parentWidget()) { if (parent->testAttribute(Qt::WA_WState_Created)) { - if (set) - [qt_mac_window_for(parent) addChildWindow:qt_mac_window_for(q) ordered:NSWindowAbove]; - else + if (set) { + if (parent->isVisible()) { + NSWindow *childwin = qt_mac_window_for(q); + int childLevel = [childwin level]; + [qt_mac_window_for(parent) addChildWindow:childwin ordered:NSWindowAbove]; + [childwin setLevel:childLevel]; + } + } else { [qt_mac_window_for(parent) removeChildWindow:qt_mac_window_for(q)]; + } } } @@ -2807,10 +2813,14 @@ void QWidgetPrivate::setSubWindowStacking(bool set) for (int i=0; iisWindow() && child->testAttribute(Qt::WA_WState_Created) && child->isVisibleTo(q)) { - if (set) - [qt_mac_window_for(q) addChildWindow:qt_mac_window_for(child) ordered:NSWindowAbove]; - else + if (set) { + NSWindow *childwin = qt_mac_window_for(child); + int childLevel = [childwin level]; + [qt_mac_window_for(q) addChildWindow:childwin ordered:NSWindowAbove]; + [childwin setLevel:childLevel]; + } else { [qt_mac_window_for(q) removeChildWindow:qt_mac_window_for(child)]; + } } } } -- cgit v0.12 From ff405f5623d7ed18c881c097368e3e9afd2e9443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 17 Aug 2010 10:45:17 +0200 Subject: Outline / fill inconsistency in X11 paint engine. Change ebbab30af417dfbf3df47dec15c0e2f8d6a30fa6 broke outline / fill consistency in the X11 engine. Since the positioning of lines is more important we'll round the fill coordinates the same way. The bug was visible in the filltest.qps arthur test. Reviewed-by: Gunnar Sletta --- src/gui/painting/qpaintengine_x11.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp index e521e01..5307142 100644 --- a/src/gui/painting/qpaintengine_x11.cpp +++ b/src/gui/painting/qpaintengine_x11.cpp @@ -1516,8 +1516,8 @@ void QX11PaintEnginePrivate::fillPolygon_translated(const QPointF *polygonPoints for (int i = 0; i < pointCount; ++i) { translated_points[i] = polygonPoints[i] + offset; - translated_points[i].rx() = qRound(translated_points[i].x()) + offs; - translated_points[i].ry() = qRound(translated_points[i].y()) + offs; + translated_points[i].rx() = qFloor(translated_points[i].x()) + offs; + translated_points[i].ry() = qFloor(translated_points[i].y()) + offs; } fillPolygon_dev(translated_points.data(), pointCount, gcMode, mode); @@ -1754,8 +1754,8 @@ void QX11PaintEnginePrivate::fillPath(const QPainterPath &path, QX11PaintEngineP for (int j = 0; j < polys.at(i).size(); ++j) { translated_points[j] = polys.at(i).at(j); if (!X11->use_xrender || !(render_hints & QPainter::Antialiasing)) { - translated_points[j].rx() = qRound(translated_points[j].rx() + aliasedCoordinateDelta) + offs; - translated_points[j].ry() = qRound(translated_points[j].ry() + aliasedCoordinateDelta) + offs; + translated_points[j].rx() = qFloor(translated_points[j].rx() + aliasedCoordinateDelta) + offs; + translated_points[j].ry() = qFloor(translated_points[j].ry() + aliasedCoordinateDelta) + offs; } } -- cgit v0.12 From e0c798ebb4fc56fa6be38f6ec3e82de147891260 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Mon, 16 Aug 2010 19:02:46 +1000 Subject: Repaint TextInput when password character changes in password mode Task-number: QTBUG-12838 Reviewed-by: Martin Jones --- .../graphicsitems/qdeclarativetextinput.cpp | 18 +++++++++++++----- .../tst_qdeclarativetextinput.cpp | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index bd8d404..b4f36f4 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -277,8 +277,10 @@ void QDeclarativeTextInput::setSelectionColor(const QColor &color) QPalette p = d->control->palette(); p.setColor(QPalette::Highlight, d->selectionColor); d->control->setPalette(p); - clearCache(); - update(); + if (d->control->hasSelectedText()) { + clearCache(); + update(); + } emit selectionColorChanged(color); } @@ -303,8 +305,10 @@ void QDeclarativeTextInput::setSelectedTextColor(const QColor &color) QPalette p = d->control->palette(); p.setColor(QPalette::HighlightedText, d->selectedTextColor); d->control->setPalette(p); - clearCache(); - update(); + if (d->control->hasSelectedText()) { + clearCache(); + update(); + } emit selectedTextColorChanged(color); } @@ -1233,8 +1237,12 @@ void QDeclarativeTextInput::setPasswordCharacter(const QString &str) Q_D(QDeclarativeTextInput); if(str.length() < 1) return; - emit passwordCharacterChanged(); d->control->setPasswordCharacter(str.constData()[0]); + EchoMode echoMode_ = echoMode(); + if (echoMode_ == Password || echoMode_ == PasswordEchoOnEdit) { + updateSize(); + } + emit passwordCharacterChanged(); } /*! diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index ca9009d..98a6012 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -98,6 +98,7 @@ private slots: void validators(); void inputMethods(); + void passwordCharacter(); void cursorDelegate(); void navigation(); void copyAndPaste(); @@ -768,6 +769,21 @@ void tst_qdeclarativetextinput::copyAndPaste() { #endif } +void tst_qdeclarativetextinput::passwordCharacter() +{ + QString componentStr = "import Qt 4.7\nTextInput { text: \"Hello world!\"; font.family: \"Helvetica\"; echoMode: TextInput.Password }"; + QDeclarativeComponent textInputComponent(&engine); + textInputComponent.setData(componentStr.toLatin1(), QUrl()); + QDeclarativeTextInput *textInput = qobject_cast(textInputComponent.create()); + QVERIFY(textInput != 0); + + textInput->setPasswordCharacter("X"); + QSize contentsSize = textInput->contentsSize(); + textInput->setPasswordCharacter("."); + // QTBUG-12383 content is updated and redrawn + QVERIFY(contentsSize != textInput->contentsSize()); +} + void tst_qdeclarativetextinput::cursorDelegate() { QDeclarativeView* view = createView(SRCDIR "/data/cursorTest.qml"); -- cgit v0.12 From 63434c07fbe4e3d8735a9e28200ce9b3b121bec8 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Aug 2010 19:47:41 +0200 Subject: fix QMAKE_SUBSTITUTES with shadow builds still doesn't work for nested directories, but that's because fileFixify() is plain broken. on the way, remove a superfluous check: we know that the input file name ends with .in - three lines up we made sure it does. Reviewed-by: joerg --- qmake/generators/makefile.cpp | 6 +++--- tests/auto/qmake/testdata/substitutes/sub/test2.in | 1 + tests/auto/qmake/testdata/substitutes/test.in | 2 ++ tests/auto/qmake/testdata/substitutes/test.pro | 2 ++ tests/auto/qmake/testdata/substitutes_build/README | 1 + tests/auto/qmake/tst_qmake.cpp | 16 ++++++++++++++++ 6 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 tests/auto/qmake/testdata/substitutes/sub/test2.in create mode 100644 tests/auto/qmake/testdata/substitutes/test.in create mode 100644 tests/auto/qmake/testdata/substitutes/test.pro create mode 100644 tests/auto/qmake/testdata/substitutes_build/README diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 45a96f5..851e587 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -471,9 +471,9 @@ MakefileGenerator::init() subs.at(i).toLatin1().constData()); continue; } - QFile in(fileFixify(subs.at(i))), out(fileInfo(subs.at(i)).fileName()); - if(out.fileName().endsWith(".in")) - out.setFileName(out.fileName().left(out.fileName().length()-3)); + QFile in(fileFixify(subs.at(i))); + QFile out(fileFixify(subs.at(i).left(subs.at(i).length()-3), + qmake_getpwd(), Option::output_dir)); if(in.open(QFile::ReadOnly)) { QString contents; QStack state; diff --git a/tests/auto/qmake/testdata/substitutes/sub/test2.in b/tests/auto/qmake/testdata/substitutes/sub/test2.in new file mode 100644 index 0000000..78a6069 --- /dev/null +++ b/tests/auto/qmake/testdata/substitutes/sub/test2.in @@ -0,0 +1 @@ +heya diff --git a/tests/auto/qmake/testdata/substitutes/test.in b/tests/auto/qmake/testdata/substitutes/test.in new file mode 100644 index 0000000..2fa05e0 --- /dev/null +++ b/tests/auto/qmake/testdata/substitutes/test.in @@ -0,0 +1,2 @@ +test +tst diff --git a/tests/auto/qmake/testdata/substitutes/test.pro b/tests/auto/qmake/testdata/substitutes/test.pro new file mode 100644 index 0000000..5bce312 --- /dev/null +++ b/tests/auto/qmake/testdata/substitutes/test.pro @@ -0,0 +1,2 @@ +QMAKE_SUBSTITUTES += test.in +# doesn't work for the time being: sub/test2.in diff --git a/tests/auto/qmake/testdata/substitutes_build/README b/tests/auto/qmake/testdata/substitutes_build/README new file mode 100644 index 0000000..81dc596 --- /dev/null +++ b/tests/auto/qmake/testdata/substitutes_build/README @@ -0,0 +1 @@ +Placeholder file to ensure this directory exists diff --git a/tests/auto/qmake/tst_qmake.cpp b/tests/auto/qmake/tst_qmake.cpp index 5efe714..825e49b 100644 --- a/tests/auto/qmake/tst_qmake.cpp +++ b/tests/auto/qmake/tst_qmake.cpp @@ -90,6 +90,7 @@ private slots: void bundle_spaces(); #endif void includefunction(); + void substitutes(); private: TestCompiler test_compiler; @@ -477,6 +478,21 @@ void tst_qmake::includefunction() QVERIFY(test_compiler.commandOutput().contains(warningMsg)); } +void tst_qmake::substitutes() +{ + QString workDir = base_path + "/testdata/substitutes"; + QVERIFY( test_compiler.qmake( workDir, "test" )); + QVERIFY( test_compiler.exists( workDir, "test", Exe, "1.0.0" )); + //QVERIFY( test_compiler.exists( workDir, "sub/test2", Exe, "1.0.0" )); + QVERIFY( test_compiler.makeDistClean( workDir )); + + QString buildDir = base_path + "/testdata/substitutes_build"; + QVERIFY( test_compiler.qmake( workDir, "test", buildDir )); + QVERIFY( test_compiler.exists( buildDir, "test", Exe, "1.0.0" )); + //QVERIFY( test_compiler.exists( buildDir, "sub/test2", Exe, "1.0.0" )); + QVERIFY( test_compiler.makeDistClean( buildDir )); +} + QTEST_MAIN(tst_qmake) #include "tst_qmake.moc" -- cgit v0.12 From 2b5469fcb541fd0c37c04acbe1470228272f8adf Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 17 Aug 2010 11:57:58 +0200 Subject: exclude QtXmlPatterns from the completeness assessment that context is a *huge* collection of cryptic error messages, translation of which does not add too much value. so skip it. --- translations/check-ts.xq | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/check-ts.xq b/translations/check-ts.xq index 2d6404c..1062e90 100644 --- a/translations/check-ts.xq +++ b/translations/check-ts.xq @@ -1,3 +1,3 @@ for $file in tokenize($files, codepoints-to-string(10)) - let $fresh := doc($file)/TS/context/message[not (translation/@type = 'obsolete')] + let $fresh := doc($file)/TS/context[not (name = 'QtXmlPatterns')]/message[not (translation/@type = 'obsolete')] return concat($file, ":", count($fresh/translation[not (@type = 'unfinished')]) * 100 idiv count($fresh)) -- cgit v0.12 From 40a2971d2ebe2b7409c13ab049ed26b249033d8e Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Tue, 17 Aug 2010 13:34:10 +0200 Subject: Fix compilation: QT_NO_TEXTSTREAM Merge-request: 2450 Reviewed-by: Oswald Buddenhagen --- src/plugins/bearer/connman/qconnmanservice_linux.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index eb88317..b15589e 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -1053,7 +1053,9 @@ bool QConnmanDeviceInterface::setProperty(const QString &name, const QDBusVarian { // QList args; +#ifndef QT_NO_TEXTSTREAM qWarning() << __FUNCTION__ << name << value.variant(); +#endif // args << qVariantFromValue(name); // args << qVariantFromValue(value); -- cgit v0.12 From 81644d683c0c8da3f14f162e31bc55038cb121d7 Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Tue, 17 Aug 2010 12:56:57 +0200 Subject: Fix memory leak in gesture manager If the user unregisters a recognizer before anyone ever used it we didn't delete it on application exit. This fix makes sure we do. Task: QTBUG-12845 Reviewed-by: Denis Dzyubenko --- src/gui/kernel/qgesturemanager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index fe9dd8a..e768a21 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -129,7 +129,12 @@ Qt::GestureType QGestureManager::registerGestureRecognizer(QGestureRecognizer *r void QGestureManager::unregisterGestureRecognizer(Qt::GestureType type) { QList list = m_recognizers.values(type); - m_recognizers.remove(type); + while (QGestureRecognizer *recognizer = m_recognizers.take(type)) { + if (!m_obsoleteGestures.contains(recognizer)) { + // inserting even an empty QSet will cause the recognizer to be deleted on destruction of the manager + m_obsoleteGestures.insert(recognizer, QSet()); + } + } foreach (QGesture *g, m_gestureToRecognizer.keys()) { QGestureRecognizer *recognizer = m_gestureToRecognizer.value(g); if (list.contains(recognizer)) { -- cgit v0.12 From 608ed55d87a714be9b0b9681345bd012b40db4e5 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 17 Aug 2010 14:37:32 +0200 Subject: Cocoa: add autotest to be more safe regarding child window stacking Autotests only. Use native events on mac to check that child windows stays on top of parent windows. Reviewed-by: prasanth --- tests/auto/macnativeevents/tst_macnativeevents.cpp | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/tests/auto/macnativeevents/tst_macnativeevents.cpp b/tests/auto/macnativeevents/tst_macnativeevents.cpp index ffd0596..ac7d661 100644 --- a/tests/auto/macnativeevents/tst_macnativeevents.cpp +++ b/tests/auto/macnativeevents/tst_macnativeevents.cpp @@ -67,6 +67,11 @@ private slots: void testDragWindow(); void testMouseEnter(); void testChildDialogInFrontOfModalParent(); +#ifdef QT_MAC_USE_COCOA + void testChildWindowInFrontOfParentWindow(); + void testChildToolWindowInFrontOfChildNormalWindow(); + void testChildWindowInFrontOfStaysOnTopParentWindow(); +#endif void testKeyPressOnToplevel(); }; @@ -308,6 +313,81 @@ void tst_MacNativeEvents::testChildDialogInFrontOfModalParent() QVERIFY(!child.isVisible()); } +#ifdef QT_MAC_USE_COCOA +void tst_MacNativeEvents::testChildWindowInFrontOfParentWindow() +{ + // Test that a child window always stacks in front of its parent window. + // Do this by first click on the parent, then on the child window button. + QWidget parent; + QPushButton child("a button", &parent); + child.setWindowFlags(Qt::Window); + connect(&child, SIGNAL(clicked()), &child, SLOT(close())); + parent.show(); + child.show(); + + QPoint parent_p = parent.geometry().bottomLeft() + QPoint(20, -20); + QPoint child_p = child.geometry().center(); + + NativeEventList native; + native.append(new QNativeMouseButtonEvent(parent_p, Qt::LeftButton, 1, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(parent_p, Qt::LeftButton, 0, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(child_p, Qt::LeftButton, 1, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(child_p, Qt::LeftButton, 0, Qt::NoModifier)); + + native.play(); + QTest::qWait(100); + QVERIFY(!child.isVisible()); +} + +void tst_MacNativeEvents::testChildToolWindowInFrontOfChildNormalWindow() +{ + // Test that a child tool window always stacks in front of normal sibling windows. + // Do this by first click on the sibling, then on the tool window button. + QWidget parent; + QWidget normalChild(&parent, Qt::Window); + QPushButton toolChild("a button", &parent); + toolChild.setWindowFlags(Qt::Tool); + connect(&toolChild, SIGNAL(clicked()), &toolChild, SLOT(close())); + parent.show(); + normalChild.show(); + toolChild.show(); + + QPoint normalChild_p = normalChild.geometry().bottomLeft() + QPoint(20, -20); + QPoint toolChild_p = toolChild.geometry().center(); + + NativeEventList native; + native.append(new QNativeMouseButtonEvent(normalChild_p, Qt::LeftButton, 1, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(normalChild_p, Qt::LeftButton, 0, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(toolChild_p, Qt::LeftButton, 1, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(toolChild_p, Qt::LeftButton, 0, Qt::NoModifier)); + + native.play(); + QTest::qWait(100); + QVERIFY(!toolChild.isVisible()); +} + +void tst_MacNativeEvents::testChildWindowInFrontOfStaysOnTopParentWindow() +{ + // Test that a child window stacks on top of a stays-on-top parent. + QWidget parent(0, Qt::WindowStaysOnTopHint); + QPushButton button("close", &parent); + button.setWindowFlags(Qt::Window); + connect(&button, SIGNAL(clicked()), &button, SLOT(close())); + parent.show(); + button.show(); + QPoint inside = button.geometry().center(); + + // Post a click on the button to close the child dialog: + NativeEventList native; + native.append(new QNativeMouseButtonEvent(inside, Qt::LeftButton, 1, Qt::NoModifier)); + native.append(new QNativeMouseButtonEvent(inside, Qt::LeftButton, 0, Qt::NoModifier)); + + native.play(); + QTest::qWait(100); + QVERIFY(!button.isVisible()); +} +#endif + void tst_MacNativeEvents::testKeyPressOnToplevel() { // Check that we receive keyevents for -- cgit v0.12 From ab97e11919927d38bfc2be990d2b4dd1327083ea Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 17 Aug 2010 15:15:31 +0200 Subject: qgrayraster: Remove unnecessary indirection in QT_FT_Outline_Decompose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since this function is only used inside qgrayraster.c, we can call the gray_* functions directly instead of going through function pointers. This allows inlining trivial methods like gray_line_to() et al. Reviewed-by: Samuel Rødal --- src/gui/painting/qgrayraster.c | 44 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 35 deletions(-) diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c index 539a33c..94039fb 100644 --- a/src/gui/painting/qgrayraster.c +++ b/src/gui/painting/qgrayraster.c @@ -1355,10 +1355,6 @@ /* */ /* outline :: A pointer to the source target. */ /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ /* user :: A typeless pointer which is passed to each */ /* emitter during the decomposition. It can be */ /* used to store the state during the */ @@ -1369,15 +1365,10 @@ /* */ static int QT_FT_Outline_Decompose( const QT_FT_Outline* outline, - const QT_FT_Outline_Funcs* func_interface, void* user ) { #undef SCALED -#if 0 -#define SCALED( x ) ( ( (x) << shift ) - delta ) -#else #define SCALED( x ) (x) -#endif QT_FT_Vector v_last; QT_FT_Vector v_control; @@ -1392,12 +1383,6 @@ int error; char tag; /* current point's state */ -#if 0 - int shift = func_interface->shift; - TPos delta = func_interface->delta; -#endif - - first = 0; for ( n = 0; n < outline->n_contours; n++ ) @@ -1451,7 +1436,7 @@ tags--; } - error = func_interface->move_to( &v_start, user ); + error = gray_move_to( &v_start, user ); if ( error ) goto Exit; @@ -1471,7 +1456,7 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); - error = func_interface->line_to( &vec, user ); + error = gray_line_to( &vec, user ); if ( error ) goto Exit; continue; @@ -1498,7 +1483,7 @@ if ( tag == QT_FT_CURVE_TAG_ON ) { - error = func_interface->conic_to( &v_control, &vec, + error = gray_conic_to( &v_control, &vec, user ); if ( error ) goto Exit; @@ -1511,7 +1496,7 @@ v_middle.x = ( v_control.x + vec.x ) / 2; v_middle.y = ( v_control.y + vec.y ) / 2; - error = func_interface->conic_to( &v_control, &v_middle, + error = gray_conic_to( &v_control, &v_middle, user ); if ( error ) goto Exit; @@ -1520,7 +1505,7 @@ goto Do_Conic; } - error = func_interface->conic_to( &v_control, &v_start, + error = gray_conic_to( &v_control, &v_start, user ); goto Close; } @@ -1551,20 +1536,20 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); - error = func_interface->cubic_to( &vec1, &vec2, &vec, user ); + error = gray_cubic_to( &vec1, &vec2, &vec, user ); if ( error ) goto Exit; continue; } - error = func_interface->cubic_to( &vec1, &vec2, &v_start, user ); + error = gray_cubic_to( &vec1, &vec2, &v_start, user ); goto Close; } } } /* close the contour with a line segment */ - error = func_interface->line_to( &v_start, user ); + error = gray_line_to( &v_start, user ); Close: if ( error ) @@ -1592,22 +1577,11 @@ static int gray_convert_glyph_inner( RAS_ARG ) { - static - const QT_FT_Outline_Funcs func_interface = - { - (QT_FT_Outline_MoveTo_Func) gray_move_to, - (QT_FT_Outline_LineTo_Func) gray_line_to, - (QT_FT_Outline_ConicTo_Func)gray_conic_to, - (QT_FT_Outline_CubicTo_Func)gray_cubic_to, - 0, - 0 - }; - volatile int error = 0; if ( qt_ft_setjmp( ras.jump_buffer ) == 0 ) { - error = QT_FT_Outline_Decompose( &ras.outline, &func_interface, &ras ); + error = QT_FT_Outline_Decompose( &ras.outline, &ras ); gray_record_cell( RAS_VAR ); } else -- cgit v0.12 From acfa3c743c23ca2443d618bda6f3c01f78777b77 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 17 Aug 2010 16:31:14 +0200 Subject: Add tests/benchmarks/README With some information from the dev mailing list. Reviewed-by: Thiago --- tests/benchmarks/README | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tests/benchmarks/README diff --git a/tests/benchmarks/README b/tests/benchmarks/README new file mode 100644 index 0000000..d437299 --- /dev/null +++ b/tests/benchmarks/README @@ -0,0 +1,81 @@ +The most reliable way of running benchmarks is to do it in an otherwise idle +system. On a busy system, the results will vary according to the other tasks +demanding attention in the system. + +We have managed to obtain quite reliable results by doing the following on +Linux (and you need root): + + - switching the scheduler to a Real-Time mode + - setting the processor affinity to one single processor + - disabling the other thread of the same core + +This should work rather well for CPU-intensive tasks. A task that is in Real- +Time mode will simply not be preempted by the OS. But if you make OS syscalls, +especially I/O ones, your task will be de-scheduled. Note that this includes +page faults, so if you can, make sure your benchmark's warmup code paths touch +most of the data. + +To do this you need a tool called schedtool (package schedtool), from +http://freequaos.host.sk/schedtool/ + +From this point on, we are using CPU0 for all tasks: + +If you have a Hyperthreaded multi-core processor (Core-i5 and Core-i7), you +have to disable the other thread of the same core as CPU0. To discover which +one it is: + +$ cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list + +This will print something like 0,4, meaning that CPUs 0 and 4 are sibling +threads on the same core. So we'll turn CPU 4 off: + +(as root) +# echo 0 > /sys/devices/system/cpu/cpu4/online + +To turn it back on, echo 1 into the same file. + +To run a task on CPU 0 exclusively, using FIFO RT priority 10, you run the +following: + +(as root) +# schedtool -F -p 10 -a 1 -e ./taskname + +For example: +# schedtool -F -p 10 -a 1 -e ./tst_bench_qstring -tickcounter + +Warning: if your task livelocks or takes far too long to complete, your system +may be unusable for a long time, especially if you don't have other cores to +run stuff on. To prevent that, run it before schedtool and time it. + +You can also limit the CPU time that the task is allowed to take. Run in the +same shell as you'll run schedtool: + +$ ulimit -s 300 +To limit to 300 seconds (5 minutes) + +If your task runs away, it will get a SIGXCPU after consuming 5 minutes of CPU +time (5 minutes running at 100%). + +If your app is multithreaded, you may want to give it more CPUs, like CPU0 and +CPU1 with -a 3 (it's a bitmask). + +For best results, you should disable ALL other cores and threads of the same +processor. The new Core-i7 have one processor with 4 cores, +each core can run 2 threads; the older Mac Pros have two processors with 4 +cores each. So on those Mac Pros, you'd disable cores 1, 2 and 3, while on the +Core-i7, you'll need to disable all other CPUs. + +However, disabling just the sibling thread seems to produce very reliable +results for me already, with variance often below 0.5% (even though there are +some measurable spikes). + +Other things to try: + +Running the benchmark with highest priority, i.e. "sudo nice -19" +usually produces stable results on some machines. If the benchmark also +involves displaying something on the screen (on X11), running it with +"-sync" is a must. Though, in that case the "real" cost is not correct, +but it is useful to discover regressions. + +Also; not many people know about ionice (1) + ionice - get/set program io scheduling class and priority -- cgit v0.12 From db41f54d5cfe9e1cfa13c78536718ca34f008284 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 17 Aug 2010 16:46:21 +0200 Subject: make error messages consistent this re-uses an existing string and obsoletes another one, so it is ok during string freeze. --- tools/assistant/tools/assistant/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp index 51ea9f9..02507ae 100644 --- a/tools/assistant/tools/assistant/main.cpp +++ b/tools/assistant/tools/assistant/main.cpp @@ -355,7 +355,7 @@ int main(int argc, char *argv[]) QHelpEngineCore cachedCollection(cachedCollectionFile); if (!cachedCollection.setupData()) { cmd.showMessage(QCoreApplication::translate("Assistant", - "Error reading collection file '%1': %2"). + "Error reading collection file '%1': %2."). arg(cachedCollectionFile). arg(cachedCollection.error()), true); return EXIT_FAILURE; -- cgit v0.12 From 5eaf1f41b17eb6f73420f1a9a5e48957015d2e4e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sat, 26 Jun 2010 14:34:49 +0200 Subject: Fixes QWS window decoration offset issues When using OpenGL ES in conjunction with Qt/Embedded, Q_BACKINGSTORE_SUBSURFACES is defined and the subsequent code path shared between this define and QWS defines results in window decoration offset errors. Merge-request: 714 Reviewed-by: Donald Carr --- src/gui/painting/qbackingstore.cpp | 9 ++++++++- src/gui/painting/qwindowsurface_qws.cpp | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index 83751ed..446c867 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -353,8 +353,10 @@ void QWidgetBackingStore::beginPaint(QRegion &toClean, QWidget *widget, QWindowS dirtyOnScreen += toClean; #ifdef Q_WS_QWS +#ifndef Q_BACKINGSTORE_SUBSURFACES toClean.translate(tlwOffset); #endif +#endif #ifdef QT_NO_PAINT_DEBUG windowSurface->beginPaint(toClean); @@ -1294,7 +1296,12 @@ void QWidgetBackingStore::sync() #ifdef Q_BACKINGSTORE_SUBSURFACES QWindowSurface *subSurface = w->windowSurface(); BeginPaintInfo beginPaintInfo; - beginPaint(toBePainted, w, subSurface, &beginPaintInfo, false); + + QPoint off = w->mapTo(tlw, QPoint()); + toBePainted.translate(off); + beginPaint(toBePainted, w, subSurface, &beginPaintInfo, true); + toBePainted.translate(-off); + if (beginPaintInfo.nothingToPaint) continue; diff --git a/src/gui/painting/qwindowsurface_qws.cpp b/src/gui/painting/qwindowsurface_qws.cpp index a816ed2..170668b 100644 --- a/src/gui/painting/qwindowsurface_qws.cpp +++ b/src/gui/painting/qwindowsurface_qws.cpp @@ -882,7 +882,11 @@ void QWSMemorySurface::beginPaint(const QRegion &rgn) const QVector rects = rgn.rects(); const QColor blank = Qt::transparent; for (QVector::const_iterator it = rects.begin(); it != rects.end(); ++it) { - p.fillRect(*it, blank); + QRect r = *it; +#ifdef Q_BACKINGSTORE_SUBSURFACES + r.translate(painterOffset()); +#endif + p.fillRect(r, blank); } } QWSWindowSurface::beginPaint(rgn); -- cgit v0.12 From b2056bcd48aa2288f1879de4d0f53cff443e4b16 Mon Sep 17 00:00:00 2001 From: Donald Carr Date: Mon, 16 Aug 2010 23:38:18 +0000 Subject: Adjusted define styling Adjusted multi-line define to single conjugated define in order to conform to the rest of the modified file. --- src/gui/painting/qbackingstore.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index 446c867..ac9b994 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -352,11 +352,9 @@ void QWidgetBackingStore::beginPaint(QRegion &toClean, QWidget *widget, QWindowS // Always flush repainted areas. dirtyOnScreen += toClean; -#ifdef Q_WS_QWS -#ifndef Q_BACKINGSTORE_SUBSURFACES +#if defined(Q_WS_QWS) && !defined(Q_BACKINGSTORE_SUBSURFACES) toClean.translate(tlwOffset); #endif -#endif #ifdef QT_NO_PAINT_DEBUG windowSurface->beginPaint(toClean); -- cgit v0.12 From 569b28760ba84a2cc5315bf06c173035dc14afc6 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 17 Aug 2010 17:30:34 +0200 Subject: Cocoa, Autotest: disable autotest that was added a bit premature The test is actually correct, but cannot be enabled before a second revision on the setStackingOrder function in qwidget_mac.mm has been rewritten to handle inter-child window stacking order Reviewed-by: prasanth --- tests/auto/macnativeevents/tst_macnativeevents.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/macnativeevents/tst_macnativeevents.cpp b/tests/auto/macnativeevents/tst_macnativeevents.cpp index ac7d661..d582417 100644 --- a/tests/auto/macnativeevents/tst_macnativeevents.cpp +++ b/tests/auto/macnativeevents/tst_macnativeevents.cpp @@ -69,7 +69,7 @@ private slots: void testChildDialogInFrontOfModalParent(); #ifdef QT_MAC_USE_COCOA void testChildWindowInFrontOfParentWindow(); - void testChildToolWindowInFrontOfChildNormalWindow(); +// void testChildToolWindowInFrontOfChildNormalWindow(); void testChildWindowInFrontOfStaysOnTopParentWindow(); #endif void testKeyPressOnToplevel(); @@ -339,6 +339,7 @@ void tst_MacNativeEvents::testChildWindowInFrontOfParentWindow() QVERIFY(!child.isVisible()); } +/* This test can be enabled once setStackingOrder has been fixed in qwidget_mac.mm void tst_MacNativeEvents::testChildToolWindowInFrontOfChildNormalWindow() { // Test that a child tool window always stacks in front of normal sibling windows. @@ -365,7 +366,7 @@ void tst_MacNativeEvents::testChildToolWindowInFrontOfChildNormalWindow() QTest::qWait(100); QVERIFY(!toolChild.isVisible()); } - +*/ void tst_MacNativeEvents::testChildWindowInFrontOfStaysOnTopParentWindow() { // Test that a child window stacks on top of a stays-on-top parent. -- cgit v0.12 From 749ad26d255327c9fa3fe857a30983cc6dfef0d9 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 17 Aug 2010 17:33:42 +0200 Subject: Cocoa: revert parts of cc6dc0aeefde881a95f5fea2b26f2f3d7bdc6e15 The reason is that we tried to fix the stacking order of child windows while we fixed a crash. But the patch turned out to break an auto-test Reviewed-by: prasanth --- src/gui/kernel/qwidget_mac.mm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 4ed4ccc..1979c84 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -2799,9 +2799,7 @@ void QWidgetPrivate::setSubWindowStacking(bool set) if (set) { if (parent->isVisible()) { NSWindow *childwin = qt_mac_window_for(q); - int childLevel = [childwin level]; [qt_mac_window_for(parent) addChildWindow:childwin ordered:NSWindowAbove]; - [childwin setLevel:childLevel]; } } else { [qt_mac_window_for(parent) removeChildWindow:qt_mac_window_for(q)]; @@ -2815,9 +2813,7 @@ void QWidgetPrivate::setSubWindowStacking(bool set) if (child->isWindow() && child->testAttribute(Qt::WA_WState_Created) && child->isVisibleTo(q)) { if (set) { NSWindow *childwin = qt_mac_window_for(child); - int childLevel = [childwin level]; [qt_mac_window_for(q) addChildWindow:childwin ordered:NSWindowAbove]; - [childwin setLevel:childLevel]; } else { [qt_mac_window_for(q) removeChildWindow:qt_mac_window_for(child)]; } -- cgit v0.12 From 837b6bba916c39665884e4967d70808f863c4487 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 17 Aug 2010 19:05:35 +0200 Subject: Fix the blending of ARGB_PM image when using palignr to load the data The data loaded for the first were incorrect because the offset was incorrect. The correct offset should be up to the alignment point. Instead of trying to load a temporary array, we just move one vector further since we know reading there is always safe. Reviewed-by: Andreas Kling --- src/gui/painting/qdrawhelper_ssse3.cpp | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/gui/painting/qdrawhelper_ssse3.cpp b/src/gui/painting/qdrawhelper_ssse3.cpp index bc4a7eb8..9c02009 100644 --- a/src/gui/painting/qdrawhelper_ssse3.cpp +++ b/src/gui/painting/qdrawhelper_ssse3.cpp @@ -118,22 +118,12 @@ inline static void blend_pixel(quint32 &dst, const quint32 src) \ /* We use two vectors to extract the src: prevLoaded for the first pixels, lastLoaded for the current pixels. */\ __m128i srcVectorPrevLoaded;\ - if (minusOffsetToAlignSrcOn16Bytes <= prologLength) {\ - srcVectorPrevLoaded = _mm_load_si128((__m128i *)&src[x - minusOffsetToAlignSrcOn16Bytes]);\ - } else {\ - quint32 temp[4] Q_DECL_ALIGN(16);\ - switch (prologLength) {\ - case 3:\ - temp[1] = src[x - 3];\ - case 2:\ - temp[2] = src[x - 2];\ - case 1:\ - temp[3] = src[x - 1];\ - default:\ - break;\ - }\ - srcVectorPrevLoaded = _mm_load_si128((__m128i *)temp);\ + if (minusOffsetToAlignSrcOn16Bytes > prologLength) {\ + /* We go forward 4 pixels to avoid reading before src. */\ + for (; x < prologLength + 4; ++x)\ + blend_pixel(dst[x], src[x]); \ }\ + srcVectorPrevLoaded = _mm_load_si128((__m128i *)&src[x - minusOffsetToAlignSrcOn16Bytes]);\ const int palignrOffset = minusOffsetToAlignSrcOn16Bytes << 2;\ \ const __m128i alphaShuffleMask = _mm_set_epi8(0xff,15,0xff,15,0xff,11,0xff,11,0xff,7,0xff,7,0xff,3,0xff,3);\ -- cgit v0.12 From 401ff4b290fcff0ef599af5986bc0b7816380575 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Wed, 18 Aug 2010 15:12:31 +1000 Subject: Add visible background element to declarative examples that didn't have any Invisible areas cause redraw artifacts with OpenVg paint engine. Task-number: Reviewed-by: Martin Jones --- examples/declarative/modelviews/package/view.qml | 3 +- examples/declarative/sqllocalstorage/hello.qml | 48 ++++++++++++---------- .../threading/threadedlistmodel/timedisplay.qml | 40 ++++++++++-------- 3 files changed, 51 insertions(+), 40 deletions(-) diff --git a/examples/declarative/modelviews/package/view.qml b/examples/declarative/modelviews/package/view.qml index 152881a..26230ef 100644 --- a/examples/declarative/modelviews/package/view.qml +++ b/examples/declarative/modelviews/package/view.qml @@ -40,7 +40,8 @@ import Qt 4.7 -Item { +Rectangle { + color: "white" width: 400 height: 200 diff --git a/examples/declarative/sqllocalstorage/hello.qml b/examples/declarative/sqllocalstorage/hello.qml index 421a74c..19b7378 100644 --- a/examples/declarative/sqllocalstorage/hello.qml +++ b/examples/declarative/sqllocalstorage/hello.qml @@ -40,32 +40,38 @@ //![0] import Qt 4.7 -Text { - text: "?" +Rectangle { + color: "white" + width: 200 + height: 100 + + Text { + text: "?" + anchors.horizontalCenter: parent.horizontalCenter + function findGreetings() { + var db = openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000); - function findGreetings() { - var db = openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000); + db.transaction( + function(tx) { + // Create the database if it doesn't already exist + tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)'); - db.transaction( - function(tx) { - // Create the database if it doesn't already exist - tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)'); + // Add (another) greeting row + tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]); - // Add (another) greeting row - tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]); + // Show all added greetings + var rs = tx.executeSql('SELECT * FROM Greeting'); - // Show all added greetings - var rs = tx.executeSql('SELECT * FROM Greeting'); - - var r = "" - for(var i = 0; i < rs.rows.length; i++) { - r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "\n" + var r = "" + for(var i = 0; i < rs.rows.length; i++) { + r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "\n" + } + text = r } - text = r - } - ) - } + ) + } - Component.onCompleted: findGreetings() + Component.onCompleted: findGreetings() + } } //![0] diff --git a/examples/declarative/threading/threadedlistmodel/timedisplay.qml b/examples/declarative/threading/threadedlistmodel/timedisplay.qml index 997f7a0..9fc3eb3 100644 --- a/examples/declarative/threading/threadedlistmodel/timedisplay.qml +++ b/examples/declarative/threading/threadedlistmodel/timedisplay.qml @@ -41,31 +41,35 @@ // ![0] import Qt 4.7 -ListView { +Rectangle { + color: "white" width: 200 height: 300 - model: listModel - delegate: Component { - Text { text: time } - } + ListView { - ListModel { id: listModel } + model: listModel + delegate: Component { + Text { text: time } + } - WorkerScript { - id: worker - source: "dataloader.js" - } + ListModel { id: listModel } + + WorkerScript { + id: worker + source: "dataloader.js" + } - Timer { - id: timer - interval: 2000; repeat: true - running: true - triggeredOnStart: true + Timer { + id: timer + interval: 2000; repeat: true + running: true + triggeredOnStart: true - onTriggered: { - var msg = {'action': 'appendCurrentTime', 'model': listModel}; - worker.sendMessage(msg); + onTriggered: { + var msg = {'action': 'appendCurrentTime', 'model': listModel}; + worker.sendMessage(msg); + } } } } -- cgit v0.12 From a082d8ee8d27aaa190d28c2493b8f0326e2c9724 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Wed, 18 Aug 2010 15:22:36 +1000 Subject: Fix previous commit Task-number: Reviewed-by: Trust me --- examples/declarative/threading/threadedlistmodel/timedisplay.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/declarative/threading/threadedlistmodel/timedisplay.qml b/examples/declarative/threading/threadedlistmodel/timedisplay.qml index 9fc3eb3..d807955 100644 --- a/examples/declarative/threading/threadedlistmodel/timedisplay.qml +++ b/examples/declarative/threading/threadedlistmodel/timedisplay.qml @@ -47,7 +47,7 @@ Rectangle { height: 300 ListView { - + anchors.fill: parent model: listModel delegate: Component { Text { text: time } -- cgit v0.12 From cea26da032449d6eed252890721c230fb9ad8dd3 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 18 Aug 2010 10:47:03 +0200 Subject: Update Polish translations --- translations/designer_pl.ts | 1332 ---------------------- translations/qt_pl.ts | 2635 +------------------------------------------ 2 files changed, 19 insertions(+), 3948 deletions(-) diff --git a/translations/designer_pl.ts b/translations/designer_pl.ts index cadcc2b..59b5baf 100644 --- a/translations/designer_pl.ts +++ b/translations/designer_pl.ts @@ -4,27 +4,22 @@ AbstractFindWidget - &Previous &Poprzednie - &Next &Następne - &Case sensitive Uwzględniaj &wielkość liter - Whole &words &Całe słowa - <img src=":/trolltech/shared/images/wrap.png">&nbsp;Search wrapped <img src=":/trolltech/shared/images/wrap.png">&nbsp;Przeszukano od początku @@ -32,17 +27,14 @@ AddLinkDialog - Insert Link Wstaw odsyłacz - Title: Tytuł: - URL: Adres URL: @@ -50,7 +42,6 @@ AppFontDialog - Additional Fonts Dodatkowe czcionki @@ -58,37 +49,30 @@ AppFontManager - '%1' is not a file. '%1' nie jest plikiem. - The font file '%1' does not have read permissions. Plik z czcionką '%1' nie ma praw do odczytu. - The font file '%1' is already loaded. Plik z czcionką '%1' jest już wczytany. - The font file '%1' could not be loaded. Nie można wczytać pliku z czcionką %1. - '%1' is not a valid font id. '%1' nie jest poprawnym identyfikatorem czcionki. - There is no loaded font matching the id '%1'. Brak wczytanej czcionki o identyfikatorze '%1'. - The font '%1' (%2) could not be unloaded. Nie można usunąć czcionki '%1' (%2). @@ -96,52 +80,42 @@ AppFontWidget - Fonts Czcionki - Add font files Dodaj pliki z czcionkami - Remove current font file Usuń bieżący plik z czcionką - Remove all font files Usuń wszystkie pliki z czcionkami - Add Font Files Dodaj pliki z czcionkami - Font files (*.ttf) Pliki z czcionkami (*.ttf) - Error Adding Fonts Błąd podczas dodawania czcionek - Error Removing Fonts Błąd podczas usuwania czcionek - Remove Fonts Unuń czcionki - Would you like to remove all fonts? Czy chcesz usunąć wszystkie czcionki? @@ -149,12 +123,10 @@ AppearanceOptionsWidget - Form Formularz - User Interface Mode Tryb interfejsu użytkownika @@ -162,17 +134,14 @@ AssistantClient - Unable to send request: Assistant is not responding. Nie można wysłac komendy. Asystent nie odpowiada. - The binary '%1' does not exist. Plik binarny '%1' nie istnieje. - Unable to launch assistant (%1). Nie można uruchomić asystenta (%1). @@ -180,92 +149,74 @@ BrushPropertyManager - No brush Brak szczotki - Solid Jednolity - Dense 1 Gęstość 1 - Dense 2 Gęstość 2 - Dense 3 Gęstość 3 - Dense 4 Gęstość 4 - Dense 5 Gęstość 5 - Dense 6 Gęstość 6 - Dense 7 Gęstość 7 - Horizontal Poziomo - Vertical Pionowo - Cross Krzyżyk - Backward diagonal Linie pochylone w prawo - Forward diagonal Linie pochylone w lewo - Crossing diagonal Linie krzyżujące się - Style Styl - Color Kolor - [%1, %2] [%1, %2] @@ -273,360 +224,277 @@ Command - - Change signal Zmień sygnał - - Change slot Zmień slot - Change signal-slot connection Zmień połączenie sygnału ze slotem - Change sender Zmień nadawcę - Change receiver Zmień odbiorcę - Add connection Dodaj połączenie - Adjust connection Dopasuj połączenie - Delete connections Usuń połączenia - Change source Zmień źródło - Change target Zmień przeznaczenie - Insert '%1' Wstaw '%1' - Raise '%1' Przenieś na wierzch '%1' - Lower '%1' Przenieś na spód '%1' - Delete '%1' Usuń '%1' - Reparent '%1' Zmień rodzica '%1' - Promote to custom widget Zastąp widżet - Demote from custom widget Przywróć do oryginalnego widżetu - Lay out using grid Rozmieść używając siatki - Lay out vertically Rozmieść w pionie - Lay out horizontally Rozmieść w poziomie - Break layout Usuń rozmieszczenie - - - Move Page Przenieś stronę - - - - Delete Page Usuń stronę - - Page Strona - page strona - - - - Insert Page Wstaw stronę - Change Tab order Zmień kolejność tabulacji - Create Menu Bar Utwórz pasek menu - Delete Menu Bar Usuń pasek menu - Create Status Bar Utwórz pasek stanu - Delete Status Bar Usuń pasek stanu - Add Tool Bar Dodaj pasek narzędzi - Add Dock Window Dodaj okno dokowalne - Adjust Size of '%1' Dopasuj rozmiar '%1' - Change Form Layout Item Geometry Zmień geometrię elementu w formularzu - Change Layout Item Geometry Zmień geometrię elementu w rozmieszczeniu - Change Table Contents Zmień zawartość tabeli - Change Tree Contents Zmień zawartość drzewa - - Add action Dodaj akcję - - Remove action Usuń akcję - Add menu Dodaj menu - Remove menu Usuń menu - Create submenu Utwórz podmenu - Delete Tool Bar Usuń pasek narzędzi - Set action text Ustaw tekst akcji - Insert action Wstaw akcję - - Move action Przenieś akcję - Change Title Zmień tytuł - Insert Menu Wstaw menu - Change signals/slots Zmień sygnały/sloty - Delete Subwindow Usuń podokno - Insert Subwindow Wstaw podokno - subwindow podokno - Subwindow Podokno - Change Z-order of '%1' Zmień porządek głębokości (Z-order) dla '%1' - Simplify Grid Layout Uprość rozmieszczenie w siatce - Create button group Utwórz grupę przycisków - Break button group Usuń grupę przycisków - Break button group '%1' Usuń grupę przycisków '%1' - Add buttons to group Dodaj przyciski do grupy - - Add '%1' to '%2' Command description for adding buttons to a QButtonGroup Dodaj '%1' do '%2' - Remove buttons from group Usuń przyciski z grupy - Remove '%1' from '%2' Command description for removing buttons from a QButtonGroup Usuń '%1' z '%2' - Morph %1/'%2' into %3 MorphWidgetCommand description Przekształć %1/%2 w %3 - Change layout of '%1' from %2 to %3 Zmień rozmieszczenie widżetu '%1' z %2 na %3 - Change script Zmień skrypt - Changed '%1' of '%2' Zmień '%1' w '%2' - Changed '%1' of %n objects Zmieniono '%1' w %n obiekcie @@ -635,12 +503,10 @@ - Reset '%1' of '%2' Przywróć domyślną wartość '%1' w '%2' - Reset '%1' of %n objects Przywrócono domyślną wartość '%1' w '%n' obiekcie @@ -649,12 +515,10 @@ - Add dynamic property '%1' to '%2' Dodaj dynamiczną właściwość '%1' do '%2' - Add dynamic property '%1' to %n objects Dodaj dynamiczną właściwość '%1' do %n obiektu @@ -663,12 +527,10 @@ - Remove dynamic property '%1' from '%2' Usuń dynamiczną właściwość '%1' z '%2' - Remove dynamic property '%1' from %n objects Usuń dynamiczną właściwość '%1' z %n obiektu @@ -680,22 +542,18 @@ ConnectDialog - Configure Connection Skonfiguruj połączenie - GroupBox GroupBox - Edit... Edycja... - Show signals and slots inherited from QWidget Pokaż sygnały i sloty klasy QWidget @@ -703,17 +561,14 @@ ConnectionDelegate - <object> <obiekt> - <signal> <sygnał> - <slot> <slot> @@ -721,19 +576,16 @@ DPI_Chooser - Standard (96 x 96) Embedded device standard screen resolution Standardowa (96 x 96) - Greenphone (179 x 185) Embedded device screen resolution Greenphone'a (179 x 185) - High (192 x 192) Embedded device high definition screen resolution Wysoka (192 x 192) @@ -742,89 +594,72 @@ Designer - Qt Designer Qt Designer - Custom Widgets Własne widżety - Promoted Widgets Zastępcze widżety - Unable to launch %1. Nie można uruchomić %1. - %1 timed out. %1 przekroczony czas operacji. - This file cannot be read because it was created using %1. Nie można odczytać pliku ponieważ został utworzony przy użyciu %1. - This file cannot be read because the extra info extension failed to load. Nie można odczytać pliku ponieważ dodatkowe informacje nie mogły zostać załadowane. - The converted file could not be read. Nie można odczytać skonwertowanego pliku. - Invalid UI file: The root element <ui> is missing. Niepoprawny plik UI: brak głównego elementu <ui>. - An error has occurred while reading the UI file at line %1, column %2: %3 Wystąpił błąd podczas czytania zawartości pliku UI, linia %1, kolumna %2: %3 - This file was created using Designer from Qt-%1 and cannot be read. Ten plik został utworzony za pomocą Qt Designer w wersji %1 i nie można go odczytać. - This file contains top level spacers.<br>They have <b>NOT</b> been saved into the form. Ten plik zawiera dystansy na najwyższym poziomie.<br><b>NIE</b> zostały one jednak zachowane w pliku. - Perhaps you forgot to create a layout? Możliwe że zapomniałeś utworzyć rozmieszczenia? - This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer. Ten plik został utworzony za pomocą Qt Designer w wersji %1 i będzie skonwertowany przez Qt Designer'a do nowego formularza. - The old form has not been touched, but you will have to save the form under a new name. Stary formularz nie był zmieniony, ale nowy będzie musiał być zapisany pod nową nazwą. - This file was created using Designer from Qt-%1 and could not be read: %2 Ten plik został utworzony za pomocą Qt Designer w wersji %1 i nie można go odczytać. %2 - Please run it through <b>uic3&nbsp;-convert</b> to convert it to Qt-4's ui format. Uruchom go przez <b>uic3&nbsp;-convert</b> aby skonwertować do formatu Qt-4. @@ -832,12 +667,10 @@ DesignerMetaEnum - %1 is not a valid enumeration value of '%2'. %1 nie jest poprawną wartością typu wyliczeniowego '%2'. - '%1' could not be converted to an enumeration value of type '%2'. Nie można skonwertować '%1' do wartości typu wyliczeniowego '%2'. @@ -845,7 +678,6 @@ DesignerMetaFlags - '%1' could not be converted to a flag value of type '%2'. Nie można skonwertować '%1' do wartości typu flaga '%2'. @@ -853,13 +685,11 @@ DeviceProfile - '%1' is not a number. Reading a number for an embedded device profile '%1' nie jest liczbą. - An invalid tag <%1> was encountered. Napotkano niepoprawny tag <%1>. @@ -867,27 +697,22 @@ DeviceProfileDialog - &Family &Rodzina - &Point Size &Wielkość punktu - Style Styl - Device DPI Rozdzielczość urządzenia - Name Nazwa @@ -895,57 +720,46 @@ DeviceSkin - The image file '%1' could not be loaded. Nie można wczytać pliku z obrazkiem %1. - The skin directory '%1' does not contain a configuration file. Katalog ze skórkami (skin) '%1' nie zawiera pliku konfiguracyjnego. - The skin configuration file '%1' could not be opened. Nie można otworzyć pliku z konfiguracją skórki (skin) '%1'. - Syntax error: %1 Błąd składni: %1 - The skin cursor image file '%1' does not exist. Plik z obrazkiem kursora '%1' dla skórki (skin) nie istnieje. - Syntax error in area definition: %1 Błąd składni w definicji obszaru: %1 - Mismatch in number of areas, expected %1, got %2. Niezgodność w ilości obszarów, spodziewano się %1, otrzymano %2. - The skin configuration file '%1' could not be read: %2 Nie można odczytać pliku z konfiguracją skórki (skin) '%1', powód: %2 - The skin "up" image file '%1' does not exist. Plik z obrazkiem "do góry" '%1' dla skórki (skin) nie istnieje. - The skin "down" image file '%1' does not exist. Plik z obrazkiem "w dół" '%1' dla skórki (skin) nie istnieje. - The skin "closed" image file '%1' does not exist. Plik z obrazkiem "zamknięte" '%1' dla skórki (skin) nie istnieje. @@ -953,7 +767,6 @@ EmbeddedOptionsControl - <html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Style</b></td><td>%3</td></tr><tr><td><b>Resolution</b></td><td>%4 x %5</td></tr></table></html> Format embedded device profile description <html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Styl</b></td><td>%3</td></tr><tr><td><b>Rozdzielczość</b></td><td>%4 x %5</td></tr></table></html> @@ -962,13 +775,11 @@ EmbeddedOptionsPage - Embedded Design Tab in preferences dialog Projekt dla urządzeń specjalizowanych - Device Profiles EmbeddedOptionsControl group box" Profile urządzeń @@ -977,27 +788,22 @@ FontPanel - Font Czcionka - &Writing system Sys&tem pisania - &Family &Rodzina - &Style &Styl - &Point size &Wielkość punktu @@ -1005,22 +811,18 @@ FontPropertyManager - PreferDefault Preferuj domyślny - NoAntialias Brak antyaliasingu - PreferAntialias Preferuj antyaliasing - Antialiasing Antyaliasing @@ -1028,7 +830,6 @@ FormBuilder - Invalid stretch value for '%1': '%2' Parsing layout stretch values ---------- @@ -1038,7 +839,6 @@ Parsing layout stretch values Niepoprawna wartość rozciągniecia dla '%1': '%2' - Invalid minimum size for '%1': '%2' Parsing grid layout minimum size values ---------- @@ -1051,28 +851,23 @@ Parsing grid layout minimum size values FormEditorOptionsPage - %1 % %1 % - Preview Zoom Powiększanie podglądu - Default Zoom Domyślne powiększenie - Forms Tab in preferences dialog Formularze - Default Grid Domyślna siatka @@ -1080,37 +875,30 @@ Parsing grid layout minimum size values FormLayoutRowDialog - Add Form Layout Row Dodaj wiersz do formularza - &Label text: Text &etykiety: - Field &type: &Typ pola: - &Field name: Nazwa &pola: - &Buddy: Etykieta &skojarzona: - &Row: &Wiersz: - Label &name: &Nazwa etykiety: @@ -1118,12 +906,10 @@ Parsing grid layout minimum size values FormWindow - Unexpected element <%1> Niespodziewany element <%1> - Error while pasting clipboard contents at line %1, column %2: %3 Błąd podczas wklejania zawartości schowka, linia %1, kolumna %2: %3 @@ -1131,62 +917,50 @@ Parsing grid layout minimum size values FormWindowSettings - Form Settings Ustawienia formularza - &Pixmap Function Funkcja ustawiania &pixmapy - &Include Hints Dodatkowe pliki &nagłówkowe - Embedded Design Projekt dla urządzeń specjalizowanych - &Author &Autor - Layout &Default &Rozmieszczenie domyślne - &Spacing: &Odstępy: - &Margin: &Marginesy: - &Layout Function Funkcja &rozmieszczania widżetów - Ma&rgin: Ma&rginesy: - Spa&cing: Od&stępy: - Grid Siatka @@ -1194,7 +968,6 @@ Parsing grid layout minimum size values IconSelector - All Pixmaps ( Wszystkie pixmapy ( @@ -1202,7 +975,6 @@ Parsing grid layout minimum size values ItemPropertyBrowser - XX Icon Selected off Sample string to determinate the width for the first column of the list item property browser XX ikona wybrana wyłączona @@ -1211,33 +983,27 @@ Parsing grid layout minimum size values MainWindowBase - Main Not currently used (main tool bar) Główny - File Plik - Edit Edycja - Tools Narzędzia - Form Formularz - Qt Designer Qt Designer @@ -1245,52 +1011,42 @@ Parsing grid layout minimum size values NewForm - New Form Nowy formularz - &Open... &Otwórz... - C&reate &Utwórz - &Close Za&mknij - Show this Dialog on Startup Pokazuj to okno przy uruchamianiu - Recent Ostatnie - &Recent Forms Os&tatnio edytowane formularze - Read error Błąd odczytu - A temporary form file could not be created in %1. Nie można utworzyć pliku z tymczasowym formularzem w %1. - The temporary form file %1 could not be written. Nie można zapisać pliku z tymczasowym formularzem w %1. @@ -1298,22 +1054,18 @@ Parsing grid layout minimum size values ObjectInspectorModel - Object Obiekt - Class Klasa - separator separator - <noname> <brak_nazwy> @@ -1321,12 +1073,10 @@ Parsing grid layout minimum size values ObjectNameDialog - Change Object Name Zmień nazwę obiektu - Object Name Nazwa obiektu @@ -1334,12 +1084,10 @@ Parsing grid layout minimum size values PluginDialog - Plugin Information Informacje o wtyczkach - 1 1 @@ -1347,7 +1095,6 @@ Parsing grid layout minimum size values PreferencesDialog - Preferences Ustawienia @@ -1355,32 +1102,26 @@ Parsing grid layout minimum size values PreviewConfigurationWidget - Form Formularz - Print/Preview Configuration Konfiguracja wydruku/podglądu - Style Styl - Style sheet Arkusz stylu - ... ... - Device skin Skórka (skin) urządzenia @@ -1388,7 +1129,6 @@ Parsing grid layout minimum size values PromotionModel - Not used Usage of promoted widgets Nie używana @@ -1397,8 +1137,6 @@ Parsing grid layout minimum size values Q3WizardContainer - - Page Strona @@ -1406,59 +1144,48 @@ Parsing grid layout minimum size values QAbstractFormBuilder - Unexpected element <%1> Niespodziewany element <%1> - An error has occurred while reading the UI file at line %1, column %2: %3 Wystąpił błąd podczas czytania zawartości pliku ui, linia %1, kolumna %2: %3 - Invalid UI file: The root element <ui> is missing. Niepoprawny plik UI: brak głównego elementu <ui>. - The creation of a widget of the class '%1' failed. Utworzenie widżetu klasy '%1' nie powiodło się. - Attempt to add child that is not of class QWizardPage to QWizard. Próba dodania potomka który nie jest klasy QWizardPage do QWizard. - Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3. This indicates an inconsistency in the ui-file. Próba dodania rozmieszczenia do widżetu '%1' (%2) który posiada już niezarządzane rozmieszczenie typu %3. To wskazuje na niespójność w pliku ui. - Empty widget item in %1 '%2'. Pusty element w %1 '%2'. - Flags property are not supported yet. Właściwości typu flaga nie są jeszcze obsługiwane. - While applying tab stops: The widget '%1' could not be found. Podczas przypisywania kolejności tabulacji: widżet '%1' nie został znaleziony. - Invalid QButtonGroup reference '%1' referenced by '%2'. Niepoprawny odnośnik QButtonGroup '%1', użyty w '%2'. - This version of the uitools library is linked without script support. Ta wersja biblioteki uitools nie zawiera obsługi skryptów. @@ -1466,12 +1193,10 @@ To wskazuje na niespójność w pliku ui. QAxWidgetPlugin - ActiveX control Kontrolka ActiveX - ActiveX control widget Widżet z kontrolką ActiveX @@ -1479,22 +1204,18 @@ To wskazuje na niespójność w pliku ui. QAxWidgetTaskMenu - Set Control Ustaw kontrolkę - Reset Control Przywróć pustą zawartość kontrolce - Licensed Control Kontrolka licencjonowana - The control requires a design-time license Kontrolka wymaga licencji podczas projektowania @@ -1502,67 +1223,54 @@ To wskazuje na niespójność w pliku ui. QCoreApplication - %1 is not a promoted class. %1 nie jest klasą zastępczą. - The base class %1 is invalid. Klasa podstawowa %1 jest niewłaściwa. - The class %1 already exists. Klasa %1 już istnieje. - Promoted Widgets Zastępcze widżety - The class %1 cannot be removed Nie można usunąć klasy %1 - The class %1 cannot be removed because it is still referenced. Nie można usunąć klasy %1 ponieważ w dalszym ciągu są do niej odwołania. - The class %1 cannot be renamed Nie można zmienić nazwy klasy %1 - The class %1 cannot be renamed to an empty name. Nie można zmienić nazwy klasy %1 na pustą nazwę. - There is already a class named %1. Istnieje już klasa o nazwie %1. - Cannot set an empty include file. Nie można ustawić pustego pliku nagłówkowego. - Exception at line %1: %2 Wyjątek w linii %1: %2 - Unknown error Nieznany błąd - An error occurred while running the script for %1: %2 Script: %3 Wystąpił błąd podczas uruchamiana skryptu dla %1: %2 @@ -1572,17 +1280,14 @@ Skrypt: %3 QDesigner - %1 - warning %1 - ostrzeżenie - Qt Designer Qt Designer - This application cannot be used for the Console edition of Qt Nie można użyć tej aplikacji w wydaniu Qt Console @@ -1590,105 +1295,82 @@ Skrypt: %3 QDesignerActions - Clear &Menu Wyczyść &menu - &Quit Za&kończ - Edit Widgets Modyfikuj widżety - CTRL+R CTRL+R - &Minimize &Zminimalizuj - CTRL+M CTRL+M - Bring All to Front Wszystkie na wierzch - Additional Fonts... Dodatkowe czcionki... - Qt Designer &Help Pomo&c Qt Designer - Current Widget Help Pomoc dla bieżącego widżetu - What's New in Qt Designer? Co nowego w Qt Designer? - About Plugins Informacje o wtyczkach - - About Qt Designer Informacje o Qt Designer - About Qt Informacje o Qt - &Recent Forms Os&tatnio edytowane formularze - - Open Form Otwórz formularz - Designer Projektant - Feature not implemented yet! Cecha nie zaimplementowana! - - Save Form? Zachować formularz? - The file %1 could not be opened. Reason: %2 Would you like to retry or select a different file? @@ -1697,145 +1379,114 @@ Powód: %2 Czy chcesz spróbować ponownie lub zmienić nazwę pliku? - Select New File Wybierz nowy plik - %1 already exists. Do you want to replace it? %1 już istnieje. Czy chcesz go zastąpić? - &Close Preview Za&mknij podgląd - Preferences... Ustawienia... - CTRL+SHIFT+S CTRL+SHIFT+S - - - Designer UI files (*.%1);;All Files (*) Pliki Designer UI (*.%1);;Wszystkie pliki (*) - Saved %1. Formularz %1 zachowany pomyślnie. - Read error Błąd odczytu - %1 Do you want to update the file location or generate a new form? %1 Czy chcesz zaktualizować położenie pliku lub wygenerować nowy formularz? - &Update &Uaktualnij - &New Form Nowy &formularz - Could not open file Nie można otworzyć pliku - Could not write file Nie można zapisać pliku - &New... &Nowy... - &Open... &Otwórz... - &Save &Zachowaj - Save &As... Zachowaj j&ako... - Save A&ll Zachowaj &wszystko - Save As &Template... Zachowaj jako &szablon... - - &Close Za&mknij - Save &Image... Zachowaj o&brazek... - &Print... &Drukuj... - View &Code... Pokaż &kod... - - Save Form As Zachowaj formularz jako - Preview failed Nie można utworzyć podglądu - Code generation failed Nie można wygenerować kodu - It was not possible to write the entire file %1 to disk. Reason:%2 Would you like to retry? @@ -1844,60 +1495,46 @@ Powód:%2 Czy chcesz spróbować ponownie? - - The backup file %1 could not be written. Nie można zapisać pliku zapasowego %1. - The backup directory %1 could not be created. Nie można utworzyć katalogu %1 na pliki zapasowe. - The temporary backup directory %1 could not be created. Nie można utworzyć tymczasowego katalogu %1 na pliki zapasowe. - Image files (*.%1) Pliki z obrazkami (*.%1) - - Save Image Zachowaj obrazek - The file %1 could not be written. Nie można zapisać pliku %1. - - Assistant Assistant - Saved image %1. Zachowano obrazek %1. - Please close all forms to enable the loading of additional fonts. Zamknij wszystkie formularze aby umożliwić wczytanie dodatkowych czcionek. - Printed %1. Wydrukowano %1. - ALT+CTRL+S ALT+CTRL+S @@ -1905,7 +1542,6 @@ Czy chcesz spróbować ponownie? QDesignerAppearanceOptionsPage - Appearance Tab in preferences dialog Wygląd @@ -1914,17 +1550,14 @@ Czy chcesz spróbować ponownie? QDesignerAppearanceOptionsWidget - Docked Window Okna dokowalne - Multiple Top-Level Windows Wiele okien głównych - Toolwindow Font Czcionka okna narzędzi @@ -1932,22 +1565,18 @@ Czy chcesz spróbować ponownie? QDesignerAxWidget - Reset control Przywróć pustą zawartość kontrolce - Set control Ustaw kontrolkę - Control loaded Kontrolka wczytana - A COM exception occurred when executing a meta call of type %1, index %2 of "%3". Wystąpił wyjątek COM podczas wykonywania metody typu %1 o indeksie %2 w "%3". @@ -1955,17 +1584,14 @@ Czy chcesz spróbować ponownie? QDesignerFormBuilder - Script errors occurred: Wystąpiły błędy w skrypcie: - The preview failed to build. Nie można utworzyć podglądu. - Designer Projektant @@ -1973,22 +1599,18 @@ Czy chcesz spróbować ponownie? QDesignerFormWindow - %1 - %2[*] %1 - %2[*] - Save Form? Zachować formularz? - Do you want to save the changes to this document before closing? Czy chcesz zachować zmiany w tym dokumencie przed zamknięciem? - If you don't save, your changes will be lost. Jeśli ich nie zachowasz, zostaną utracone. @@ -1996,38 +1618,30 @@ Czy chcesz spróbować ponownie? QDesignerMenu - Type Here Wpisz tutaj - Add Separator Dodaj separator - Remove action '%1' Usuń akcję '%1' - Insert action Wstaw akcję - - Add separator Dodaj separator - Insert separator Wstaw separator - Remove separator Usuń separator @@ -2035,22 +1649,18 @@ Czy chcesz spróbować ponownie? QDesignerMenuBar - Type Here Wpisz tutaj - Remove Menu '%1' Usuń menu '%1' - Remove Menu Bar Usuń pasek menu - Menu Menu @@ -2058,37 +1668,30 @@ Czy chcesz spróbować ponownie? QDesignerPluginManager - An XML error was encountered when parsing the XML of the custom widget %1: %2 Wystąpił błąd XML podczas przetwarzania kodu XML dla własnego widżetu %1: %2 - A required attribute ('%1') is missing. Brak wymaganego atrybutu "%1". - An invalid property specification ('%1') was encountered. Supported types: %2 Wystąpiła błędna specyfikacja właściwości "%1". Obsługiwane typy: %2 - '%1' is not a valid string property specification. "%1" nie jest poprawną specyfikacją właściwości typu ciąg. - The XML of the custom widget %1 does not contain any of the elements <widget> or <ui>. Kod XML własnego widżetu %1 nie zawiera żadnego elementu <widget> ani <ui>. - The class attribute for the class %1 is missing. Atrybut "class" dla klasy %1 nie istnieje. - The class attribute for the class %1 does not match the class name %2. Atrybut "class" dla klasy %1 nie odpowiada nazwie klasy %2. @@ -2096,7 +1699,6 @@ Czy chcesz spróbować ponownie? QDesignerPropertySheet - Dynamic Properties Dynamiczne właściwości @@ -2104,31 +1706,26 @@ Czy chcesz spróbować ponownie? QDesignerResource - The layout type '%1' is not supported, defaulting to grid. Rozmieszczenie typu '%1' nie jest obsługiwane. Będzie ono zastąpione siatką. - The container extension of the widget '%1' (%2) returned a widget not managed by Designer '%3' (%4) when queried for page #%5. Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget. Rozszerzenie pojemnikowe widżetu "%1" (%2) zwróciło widżet który nie jest zarządzany przez Designera "%3" (%4) podczas pytania o stronę #%5. Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w XML zwróconym przez metodę domXml() w widżecie użytkownika. - Unexpected element <%1> Parsing clipboard contents Niespodziewany element <%1> - Error while pasting clipboard contents at line %1, column %2: %3 Parsing clipboard contents Błąd podczas wklejania zawartości schowka, linia %1, kolumna %2: %3 - Error while pasting clipboard contents: The root element <ui> is missing. Parsing clipboard contents Błąd podczas wklejania zawartości schowka: Brak głównego elementu <ui>. @@ -2137,12 +1734,10 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w QDesignerSharedSettings - The template path %1 could not be created. Nie można utworzyć ścieżki %1 dla szablonów. - An error has been encountered while parsing device profile XML: %1 Wystąpił błąd podczas przetwarzania kodu XML dla profilu urządzenia: %1 @@ -2150,32 +1745,26 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w QDesignerToolWindow - Property Editor Edytor właściwości - Action Editor Edytor akcji - Object Inspector Hierarchia obiektów - Resource Browser Przeglądarka zasobów - Signal/Slot Editor Edytor sygnałów/slotów - Widget Box Panel widżetów @@ -2183,97 +1772,78 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w QDesignerWorkbench - &File &Plik - F&orm &Formularz - Preview in Podgląd w stylu - &View &Widok - &Settings U&stawienia - Widget Box Panel widżetów - The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them? Designer nie został poprawnie zamknięty w trakcie ostatniej sesji. Istnieją pliki zapasowe, czy chcesz je otworzyć? - The file <b>%1</b> is not a valid Designer UI file. Plik <b>%1</b> nie jest poprawnym plikiem UI Designera. - &Window &Okno - &Help Pomo&c - Edit Edycja - Toolbars Paski narzędzi - Save Forms? Zachować formularze? - If you do not review your documents, all your changes will be lost. Jeśli nie przejrzysz dokumentów, wszystkie zmiany zostaną utracone. - Review Changes Przeglądnij zmiany - Discard Changes Odrzuć zmiany - Backup Information Informacja o kopiach zapasowych - The file <b>%1</b> could not be opened. Nie można otworzyć pliku <b>%1</b>. - There are %n forms with unsaved changes. Do you want to review these changes before quitting? Jest %n formularz z niezachowanymi zmianami. Czy chcesz przejrzeć zmiany przed wyjściem z programu? @@ -2285,7 +1855,6 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w QFormBuilder - An empty class name was passed on to %1 (object name: '%2'). Empty class name passed to widget factory method ---------- @@ -2295,47 +1864,38 @@ Empty class name passed to widget factory method Pusta nazwa klasy została przekazana do %1 (nazwa obiektu: '%2'). - QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'. QFormBuilder nie mógł utworzyć własnego widżetu klasy '%1'. Będzie on zastąpiony klasą bazową '%2'. - QFormBuilder was unable to create a widget of the class '%1'. QFormBuilder nie mógł utworzyć widżetu klasy '%1'. - The layout type `%1' is not supported. Typ rozmieszczenia '%1' nie jest obsługiwany. - The set-type property %1 could not be read. Nie można odczytać właściwości %1 typu zbiór. - The enumeration-type property %1 could not be read. Nie można odczytać właściwości %1 typu wyliczeniowego. - Reading properties of the type %1 is not supported yet. Odczytywanie właściwości typu %1 nie jest jeszcze obsługiwane. - The property %1 could not be written. The type %2 is not supported yet. Nie można zapisać właściwości %1. Typ %2 nie jest jeszcze obsługiwany. - The enumeration-value '%1' is invalid. The default value '%2' will be used instead. Wartość "%1" typu wyliczeniowego jest niepoprawna. Użyta zostanie domyślna wartość "%2". - The flag-value '%1' is invalid. Zero will be used instead. Wartość "%1" flagi jest niepoprawna. Użyta zostanie wartość zerowa. @@ -2343,48 +1903,38 @@ Empty class name passed to widget factory method QStackedWidgetEventFilter - Previous Page Poprzednia strona - Next Page Następna strona - Delete Usuń - Before Current Page Przed bieżącą stroną - After Current Page Za bieżącą stroną - Change Page Order... Zmień porządek stron... - Change Page Order Zmień porządek stron - Page %1 of %2 Strona %1 z %2 - - Insert Page Wstaw stronę @@ -2392,12 +1942,10 @@ Empty class name passed to widget factory method QStackedWidgetPreviewEventFilter - Go to previous page of %1 '%2' (%3/%4). Przejdź do poprzedniej strony %1 '%2' (%3/%4). - Go to next page of %1 '%2' (%3/%4). Przejdź do następnej strony %1 '%2' (%3/%4). @@ -2405,28 +1953,22 @@ Empty class name passed to widget factory method QTabWidgetEventFilter - Delete Usuń - Before Current Page Przed bieżącą stroną - After Current Page Za bieżącą stroną - Page %1 of %2 Strona %1 z %2 - - Insert Page Wstaw stronę @@ -2434,37 +1976,30 @@ Empty class name passed to widget factory method QToolBoxHelper - Delete Page Usuń stronę - Before Current Page Przed bieżącą stroną - After Current Page Za bieżącą stroną - Change Page Order... Zmień porządek stron... - Change Page Order Zmień porządek stron - Page %1 of %2 Strona %1 z %2 - Insert Page Wstaw stronę @@ -2472,15 +2007,10 @@ Empty class name passed to widget factory method QtBoolEdit - - - True Prawda - - False Fałsz @@ -2488,12 +2018,10 @@ Empty class name passed to widget factory method QtBoolPropertyManager - True Prawda - False Fałsz @@ -2501,7 +2029,6 @@ Empty class name passed to widget factory method QtCharEdit - Clear Char Wyczyść znak @@ -2509,7 +2036,6 @@ Empty class name passed to widget factory method QtColorEditWidget - ... ... @@ -2517,22 +2043,18 @@ Empty class name passed to widget factory method QtColorPropertyManager - Red Czerwień - Green Zieleń - Blue Błękit - Alpha Kanał alfa @@ -2540,97 +2062,78 @@ Empty class name passed to widget factory method QtCursorDatabase - Cross Krzyż - Arrow Strzałka - Up Arrow Strzałka do góry - Wait Oczekiwanie - IBeam Kursor tekstowy - Size Vertical Rozmiar N-S - Size Horizontal Rozmiar W-E - Size Backslash Rozmiar NW-SE - Size Slash Rozmiar NE-SW - Size All Rozmiar N-E-S-W - Blank Pusty - Split Vertical Podzielony pionowo - Split Horizontal Podzielony poziomo - Pointing Hand Rączka wskazująca - Forbidden Zabroniony - Open Hand Rączka otwarta - Closed Hand Rączka zamknięta - What's This Co to jest - Busy Zajęty @@ -2638,12 +2141,10 @@ Empty class name passed to widget factory method QtFontEditWidget - ... ... - Select Font Wybierz czcionkę @@ -2651,37 +2152,30 @@ Empty class name passed to widget factory method QtFontPropertyManager - Bold Pogrubiony - Italic Kursywa - Underline Podkreślony - Family Rodzina - Point Size Wielkość punktu - Strikeout Przekreślony - Kerning Kerning @@ -2689,7 +2183,6 @@ Empty class name passed to widget factory method QtGradientDialog - Edit Gradient Modyfikuj gradient @@ -2697,304 +2190,242 @@ Empty class name passed to widget factory method QtGradientEditor - Start X Początek X - Start Y Początek Y - Final X Koniec X - Final Y Koniec Y - - Central X Środek X - - Central Y Środek Y - Focal X Ogniskowa X - Focal Y Ogniskowa Y - Radius Promień - Angle Kąt - Linear Liniowy - Radial Radialny - Conical Stożkowy - Pad Brak - Repeat Powtórzone - Reflect Odbite - Form Formularz - Gradient Editor Edytor gradientu - 1 1 - 2 2 - 3 3 - 4 4 - 5 5 - Gradient Stops Editor Edytor punktów gradientu - This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions. Ten obszar pozwala na edycję punktów gradientu. Aby skopiować istniejący punkt kliknij dwukrotnie na jego uchwyt. W celu stworzenia nowego punktu kliknij dwukrotnie poza istniejącymi uchwytami punków. Przeciągnij i upuść uchwyt aby go przesunąć. Naciśnij prawy przycisk myszy aby pokazać menu z dodatkowymi akcjami. - Zoom Powiększenie - Position Pozycja - Hue Barwa - H H - Saturation Nasycenie - S S - Sat Nasycenie - Value Wartość - V V - Val Wartość - Alpha Kanał alfa - A A - Type Rodzaj - Spread Rozciąganie - Color Kolor - Current stop's color Kolor bieżącego punktu - HSV HSV - RGB RGB - Current stop's position Pozycja bieżącego punktu - % % - Zoom In Powiększ - Zoom Out Pomniejsz - Toggle details extension Przełącz rozszerzenie ze szczegółami - > > - Linear Type Typ liniowy - ... ... - Radial Type Typ radialny - Conical Type Typ stożkowy - Pad Spread Powtarzaj punkt brzegowy - Repeat Spread Powtarzaj cały zakres - Reflect Spread Powtarzaj z odbiciami - This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop. Ten obszar pokazuje podgląd edytowanego gradientu. Możesz tutaj również zmieniać parametry specyficzne dla typu gradientu, takie jak: punkt początkowy i końcowy, promień, itp... poprzez przeciągnięcie i upuszczenie uchwytu. - Show HSV specification Pokaż specyfikację HSV - Show RGB specification Pokaż specyfikację RGB - Reset Zoom Normalny rozmiar @@ -3002,37 +2433,30 @@ Empty class name passed to widget factory method QtGradientStopsWidget - New Stop Nowy punkt - Delete Usuń - Flip All Odwróć wszystko - Select All Zaznacz wszystko - Zoom In Powiększ - Zoom Out Pomniejsz - Reset Zoom Normalny rozmiar @@ -3040,46 +2464,34 @@ Empty class name passed to widget factory method QtGradientView - Grad Grad - Remove Gradient Usuń gradient - Are you sure you want to remove the selected gradient? Czy na pewno chcesz usunąć zaznaczony gradient? - - New... Nowy... - - Edit... Modyfikuj... - - Rename Zmień nazwę - - Remove Usuń - Gradient View Widok gradientów @@ -3087,8 +2499,6 @@ Empty class name passed to widget factory method QtGradientViewDialog - - Select Gradient Wybierz gradient @@ -3096,7 +2506,6 @@ Empty class name passed to widget factory method QtKeySequenceEdit - Clear Shortcut Wyczyść skrót @@ -3104,17 +2513,14 @@ Empty class name passed to widget factory method QtLocalePropertyManager - %1, %2 %1, %2 - Language Język - Country Kraj @@ -3122,17 +2528,14 @@ Empty class name passed to widget factory method QtPointFPropertyManager - (%1, %2) (%1, %2) - X X - Y Y @@ -3140,17 +2543,14 @@ Empty class name passed to widget factory method QtPointPropertyManager - (%1, %2) (%1, %2) - X X - Y Y @@ -3158,12 +2558,10 @@ Empty class name passed to widget factory method QtPropertyBrowserUtils - [%1, %2, %3] (%4) [%1, %2, %3] (%4) - [%1, %2] [%1, %2] @@ -3171,27 +2569,22 @@ Empty class name passed to widget factory method QtRectFPropertyManager - [(%1, %2), %3 x %4] [(%1, %2), %3 x %4] - X X - Y Y - Width Szerokość - Height Wysokość @@ -3199,27 +2592,22 @@ Empty class name passed to widget factory method QtRectPropertyManager - [(%1, %2), %3 x %4] [(%1, %2), %3 x %4] - X X - Y Y - Width Szerokość - Height Wysokość @@ -3227,128 +2615,98 @@ Empty class name passed to widget factory method QtResourceEditorDialog - %1 already exists. Do you want to replace it? %1 już istnieje. Czy chcesz go zastąpić? - The file does not appear to be a resource file; element '%1' was found where '%2' was expected. Plik nie wygląda na plik z zasobami; znaleziono element '%1' podczas gdy oczekiwano elementu '%2'. - %1 [read-only] %1 - [tylko do odczytu] - - %1 [missing] %1 - [brak pliku] - <no prefix> <brak przedrostka> - - New Resource File Nowy plik z zasobami - - Resource files (*.qrc) Pliki z zasobami (*.qrc) - Import Resource File Zaimportuj plik z zasobami - newPrefix nowyPrzedrostek - Add Files Dodaj pliki - Incorrect Path Niepoprawna ścieżka - - - - Copy Skopiuj - Copy As... Skopiuj jako... - Keep Pozostaw - Skip Opuść - Clone Prefix Sklonuj przedrostek - Enter the suffix which you want to add to the names of the cloned files. This could for example be a language extension like "_de". Wprowadź przyrostek jaki ma być dodany do sklonowanych plików. To może być np. rozszerzenie określające język: "_de". - - Copy As Skopiuj jako - <p>The selected file:</p><p>%1</p><p>is outside of the current resource file's directory:</p><p>%2</p><p>Please select another path within this directory.<p> <p>Zaznaczony plik:</p><p>%1</p><p>jest umiejscowiony na zewnątrz katalogu z bieżącym plikiem z zasobami:</p><p>%2</p><p>Zaznacz inną ścieżkę w tym katalogu.<p> - Could not overwrite %1. Nie można nadpisać %1. - <p><b>Warning:</b> The file</p><p>%1</p><p>is outside of the current resource file's parent directory.</p> <p><b>Ostrzeżenie:</b> Plik</p><p>%1</p><p>jest na zewnątrz katalogu w którym jest bieżący plik z zasobami.</p> - <p>To resolve the issue, press:</p><table><tr><th align="left">Copy</th><td>to copy the file to the resource file's parent directory.</td></tr><tr><th align="left">Copy As...</th><td>to copy the file into a subdirectory of the resource file's parent directory.</td></tr><tr><th align="left">Keep</th><td>to use its current location.</td></tr></table> <p>Aby rozwiązać problem, naciśnij:</p><table><tr><th align="left">Skopiuj</th><td>żeby skopiować plik do katalogu w którym jest plik z zasobami.</td></tr><tr><th align="left">Skopiuj jako...</th><td>żeby skopiować plik do poddrzewa katalogu w którym jest plik z zasobami.</td></tr><tr><th align="left">Zatrzymaj</th><td>żeby użyć jego bieżącą ścieżkę.</td></tr></table> - Could not copy %1 to @@ -3359,153 +2717,120 @@ jako: %2 - A parse error occurred at line %1, column %2 of %3: %4 Wystąpił błąd przetwarzania w linii %1, kolumnie %2 w %3: %4 - Save Resource File Zachowaj plik z zasobami - Edit Resources Edytor zasobów - New... Nowy... - Open... Otwórz... - - Remove Usuń - - Move Up Przenieś do góry - - Move Down Przenieś w dół - - Add Prefix Dodaj przedrostek - Add Files... Dodaj pliki... - Change Prefix Zmień przedrostek - Change Language Zmień język - Change Alias Zmień alias - Clone Prefix... Sklonuj przedrostek... - Prefix / Path Przedrostek / Ścieżka - Language / Alias Język / Alias - <html><p><b>Warning:</b> There have been problems while reloading the resources:</p><pre>%1</pre></html> <html><p><b>Ostrzeżenie:</b> Natrafiono na problemy podczas przeładowania zasobów:</p><pre>%1</pre></html> - Resource Warning Ostrzeżenie z systemu zasobów - Dialog Okno dialogowe - New File Nowy plik - N N - Remove File Usuń plik - R R - I I - New Resource Nowy zasób - A A - Remove Resource or File Usuń zasób lub plik - Could not write %1: %2 Nie można zapisać "%1", %2 - Open Resource File Otwórz plik z zasobami @@ -3513,24 +2838,20 @@ jako: QtResourceView - Size: %1 x %2 %3 Rozmiar: %1 x %2 %3 - Edit Resources... Modyfikuj zasoby... - Reload Przeładuj - Copy Path Skopiuj ścieżkę @@ -3538,7 +2859,6 @@ jako: QtResourceViewDialog - Select Resource Wybierz zasób @@ -3546,17 +2866,14 @@ jako: QtSizeFPropertyManager - %1 x %2 %1 x %2 - Width Szerokość - Height Wysokość @@ -3564,33 +2881,26 @@ jako: QtSizePolicyPropertyManager - - <Invalid> <Niepoprawna> - [%1, %2, %3, %4] [%1, %2, %3, %4] - Horizontal Policy Strategia pozioma - Vertical Policy Strategia pionowa - Horizontal Stretch Rozciąganie w poziomie - Vertical Stretch Rozciąganie w pionie @@ -3598,17 +2908,14 @@ jako: QtSizePropertyManager - %1 x %2 %1 x %2 - Width Szerokość - Height Wysokość @@ -3616,107 +2923,86 @@ jako: QtToolBarDialog - < S E P A R A T O R > < S E P A R A T O R > - Customize Toolbars Dostosuj paski narzędzi - 1 1 - Actions Akcje - Toolbars Paski narzędzi - New Nowy - Remove Usuń - Rename Zmień nazwę - Up Do góry - <- <- - -> -> - Down W dół - Current Toolbar Actions Akcje bieżącego paska narzędzi - Custom Toolbar Własne paski narzędzi - Add new toolbar Dodaj nowy pasek narzędzi - Remove selected toolbar Usuń wybrany pasek narzędzi - Rename toolbar Zmień nazwę paska narzędzi - Move action up Przenieś akcję w górę - Remove action from toolbar Usuń akcję z paska narzędzi - Add action to toolbar Dodaj akcję do paska narzędzi - Move action down Przenieś akcję w dół @@ -3724,12 +3010,10 @@ jako: QtTreePropertyBrowser - Property Właściwość - Value Wartość @@ -3737,64 +3021,52 @@ jako: SaveFormAsTemplate - Add path... Dodaj ścieżkę... - Template Exists Szablon istnieje - Overwrite Template Nadpisz szablon - Open Error Błąd otwarcia - There was an error opening template %1 for writing. Reason: %2 Wystąpił błąd podczas otwierania szablonu %1 do zapisu. Powód: %2 - Write Error Błąd zapisu - There was an error writing the template %1 to disk. Reason: %2 Wystąpił błąd podczas zapisywania szablonu %1 na dysk. Powód: %2 - Pick a directory to save templates in Wybierz katalog do zachowywania szablonów - &Category: &Kategoria: - &Name: &Nazwa: - A template with the name %1 already exists. Do you want overwrite the template? Szablon o nazwie %1 już istnieje. Czy chcesz nadpisać szablon? - Save Form As Template Zachowaj formularz jako szablon @@ -3802,7 +3074,6 @@ Czy chcesz nadpisać szablon? ScriptErrorDialog - An error occurred while running the scripts for "%1": Wystąpił błąd podczas uruchamiana skryptu dla "%1": @@ -3812,22 +3083,18 @@ Czy chcesz nadpisać szablon? SelectSignalDialog - Go to slot Przejdź do slotu - Select signal Wybierz sygnał - signal sygnał - class klasa @@ -3835,7 +3102,6 @@ Czy chcesz nadpisać szablon? SignalSlotConnection - SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4) NADAJNIK(%1), SYGNAŁ(%2), ODBIORNIK(%3), SLOT(%4) @@ -3843,32 +3109,26 @@ Czy chcesz nadpisać szablon? SignalSlotDialogClass - Signals and slots Sygnały i sloty - Slots Sloty - ... ... - Signals Sygnały - Add Dodaj - Delete Usuń @@ -3876,12 +3136,10 @@ Czy chcesz nadpisać szablon? Spacer - Horizontal Spacer '%1', %2 x %3 Poziomy dystans '%1', %2 x %3 - Vertical Spacer '%1', %2 x %3 Pionowy dystans '%1', %2 x %3 @@ -3889,7 +3147,6 @@ Czy chcesz nadpisać szablon? TemplateOptionsPage - Template Paths Tab in preferences dialog Ścieżki z szablonami @@ -3898,52 +3155,42 @@ Czy chcesz nadpisać szablon? ToolBarManager - Configure Toolbars... Skonfiguruj paski narzędzi... - Window Okno - Help Pomoc - Style Styl - Dock views Dokowalne widoki - File Plik - Edit Edycja - Tools Narzędzia - Form Formularz - Toolbars Paski narzędzi @@ -3951,22 +3198,18 @@ Czy chcesz nadpisać szablon? VersionDialog - Qt Designer Qt Designer - %1<br/>Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). - <h3>%1</h3><br/><br/>Version %2 <h3>%1</h3><br/><br/>Wersja %2 - <br/>Qt Designer is a graphical user interface designer for Qt applications.<br/> <br/>Qt Designer jest aplikacją umożliwiającą projektowanie interfejsów graficznych użytkownika w aplikacjach korzystających z Qt.<br/> @@ -3974,47 +3217,38 @@ Czy chcesz nadpisać szablon? VideoPlayerTaskMenu - Available Mime Types Dostępne typy mime - Display supported mime types... Pokaż dostępne typy mime... - Load... Załaduj... - Play Odtwórz - Pause Pauza - Stop Zatrzymaj - Choose Video Player Media Source Wybierz źródło odtwarzacza wideo - An error has occurred in '%1': %2 Wystąpił błąd w "%1": %2 - Video Player Error Błąd odtwarzacza wideo @@ -4022,7 +3256,6 @@ Czy chcesz nadpisać szablon? WidgetDataBase - The file contains a custom widget '%1' whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged. Plik zawiera własny widżet '%1' którego klasa bazowa (%2) różni się od bieżącego elementu w bazie danych z widżetami (%3). Baza danych z widżetami została niezmieniona. @@ -4030,87 +3263,70 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ActionEditor - Actions Akcje - New... Nowa... - Delete Usuń - New action Nowa akcja - Edit action Modyfikuj akcję - Edit... Modyfikuj... - Go to slot... Przejdź do slotu... - Copy Skopiuj - Cut Wytnij - Paste Wklej - Select all Zaznacz wszystko - Configure Action Editor Skonfiguruj edytor akcji - Icon View Widok z ikonkami - Detailed View Szczegółowy widok - Remove actions Usuń akcje - Remove action '%1' Usuń akcję '%1' - Used In Użyta w @@ -4118,32 +3334,26 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ActionModel - Name Nazwa - Used Użyta - Text Tekst - Shortcut Skrót - Checkable Przełączalny - ToolTip Podpowiedź @@ -4151,27 +3361,22 @@ Czy chcesz nadpisać szablon? qdesigner_internal::BrushManagerProxy - The element '%1' is missing the required attribute '%2'. Brak wymaganego atrybutu '%2' w elemencie '%1'. - Empty brush name encountered. Wystąpiła pusta nazwa szczotki. - An unexpected element '%1' was encountered. Wystąpił niespodziewany element '%1'. - An error occurred when reading the brush definition file '%1' at line line %2, column %3: %4 Wystąpił błąd podczas czytania pliku z definicją szczotki '%1' w linii %2, w kolumnie %3: %4 - An error occurred when reading the resource file '%1' at line %2, column %3: %4 Wystąpił błąd podczas czytania pliku z zasobami '%1' w linii %2, w kolumnie %3: %4 @@ -4179,17 +3384,14 @@ Czy chcesz nadpisać szablon? qdesigner_internal::BuddyEditor - Add buddy Dodaj skojarzoną etykietę - Remove buddies Usuń skojarzoną etykietę - Remove %n buddies Usuń %n skojarzoną etykietę @@ -4198,7 +3400,6 @@ Czy chcesz nadpisać szablon? - Add %n buddies Dodaj %n skojarzoną etykietę @@ -4207,7 +3408,6 @@ Czy chcesz nadpisać szablon? - Set automatically Ustaw automatycznie @@ -4215,7 +3415,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::BuddyEditorPlugin - Edit Buddies Modyfikuj skojarzone etykiety @@ -4223,7 +3422,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::BuddyEditorTool - Edit Buddies Modyfikuj skojarzone etykiety @@ -4231,12 +3429,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ButtonGroupMenu - Select members Zaznacz składniki grupy - Break Usuń grupę @@ -4244,32 +3440,26 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ButtonTaskMenu - Assign to button group Przypisz do grupy przycisków - Button group Grupa przycisków - New button group Nowej - Change text... Zmień tekst... - None Żadnej - Button group '%1' Grupa przycisków '%1' @@ -4277,57 +3467,46 @@ Czy chcesz nadpisać szablon? qdesigner_internal::CodeDialog - Save... Zachowaj... - Copy All Skopiuj wszystko - &Find in Text... Z&najdź w tekście... - A temporary form file could not be created in %1. Nie można utworzyć pliku z tymczasowym formularzem w %1. - The temporary form file %1 could not be written. Nie można zapisać pliku z tymczasowym formularzem w %1. - %1 - [Code] %1 - [Kod] - Save Code Zachowaj kod - Header Files (*.%1) Pliki nagłówkowe (*.%1) - The file %1 could not be opened: %2 Nie można otworzyć pliku "%1", %2 - The file %1 could not be written: %2 Nie można zapisać pliku "%1", %2 - %1 - Error %1 - Błąd @@ -4335,7 +3514,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ColorAction - Text Color Color tekstu @@ -4343,12 +3521,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ComboBoxTaskMenu - Edit Items... Modyfikuj elementy... - Change Combobox Contents Zmień zawartość combobox'a @@ -4356,7 +3532,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::CommandLinkButtonTaskMenu - Change description... Zmień opis... @@ -4364,17 +3539,14 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ConnectionEdit - Select All Zaznacz wszystko - Delete Usuń - Deselect All Odznacz wszystko @@ -4382,52 +3554,42 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ConnectionModel - Sender Nadajnik - Signal Sygnał - Receiver Odbiornik - Slot Slot - <sender> <nadajnik> - <signal> <sygnał> - <receiver> <odbiornik> - <slot> <slot> - Signal and Slot Editor Edytor sygnałów i slotów - The connection already exists!<br>%1 Połączenie już istnieje!<br>%1 @@ -4435,42 +3597,34 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ContainerWidgetTaskMenu - Insert Page Before Current Page Wstaw stronę przed bieżącą stroną - Insert Page After Current Page Wstaw stronę za bieżącą stroną - Add Subwindow Dodaj podokno - Delete Usuń - Insert Wstaw - Subwindow Podokno - Page Strona - Page %1 of %2 Strona %1 z %2 @@ -4478,18 +3632,15 @@ Czy chcesz nadpisać szablon? qdesigner_internal::DPI_Chooser - System (%1 x %2) System resolution Systemowa (%1 x %2) - User defined Zdefiniowana przez użytkownika - x DPI X/Y separator x @@ -4498,49 +3649,38 @@ Czy chcesz nadpisać szablon? qdesigner_internal::DesignerPropertyManager - - AlignLeft Wyrównanie do lewej - AlignHCenter Wyrównanie w poziomie do środka - AlignRight Wyrównanie do prawej - AlignJustify Wyjustowanie - AlignTop Wyrównanie do góry - - AlignVCenter Wyrównanie w pionie do środka - AlignBottom Wyrównanie do dołu - %1, %2 %1, %2 - Customized (%n roles) Dostosowana (%n rola) @@ -4549,75 +3689,58 @@ Czy chcesz nadpisać szablon? - Inherited Odziedziczony - Horizontal Poziomo - Vertical Pionowo - Normal Off Normalny wyciśnięty - Normal On Normalny wciśnięty - Disabled Off Wyłączony wyciśnięty - Disabled On Wyłączony wciśnięty - Active Off Aktywny wyciśnięty - Active On Aktywny wciśnięty - Selected Off Zaznaczony wyciśnięty - Selected On Zaznaczony wciśnięty - - translatable przetłumaczalny - - disambiguation ujednoznacznienie - - comment komentarz @@ -4625,48 +3748,38 @@ Czy chcesz nadpisać szablon? qdesigner_internal::DeviceProfileDialog - Device Profiles (*.%1) Profile urządzeń (*.%1) - Default Domyślny - Save Profile Zachowaj profil - Save Profile - Error Błąd podczas zachowywania profilu - Unable to open the file '%1' for writing: %2 Nie można otworzyć pliku '%1' do zapisu: %2 - Open profile Otwórz profil - - Open Profile - Error Błąd podczas otwierania profilu - Unable to open the file '%1' for reading: %2 Nie można otworzyć pliku '%1' do odczytu: %2 - '%1' is not a valid profile: %2 '%1' nie jest poprawnym profilem: %2 @@ -4674,57 +3787,46 @@ Czy chcesz nadpisać szablon? qdesigner_internal::Dialog - Dialog Okno dialogowe - StringList Lista napisów - New String Nowy napis - &New &Nowy - Delete String Usuń napis - &Delete &Usuń - &Value: &Wartość: - Move String Up Przenieś w górę - Up Do góry - Move String Down Przenieś w dół - Down W dół @@ -4732,52 +3834,42 @@ Czy chcesz nadpisać szablon? qdesigner_internal::EmbeddedOptionsControl - None Brak - Add a profile Dodaj profil - Edit the selected profile Modyfikuj zaznaczony profil - Delete the selected profile Usuń zaznaczony profil - Add Profile Dodaj profil - New profile Nowy profil - Edit Profile Modyfikuj profil - Delete Profile Usuń profil - Would you like to delete the profile '%1'? Czy chcesz usunąć profil '%1'? - Default Domyślny @@ -4785,12 +3877,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FilterWidget - Filter Filtr - Clear text Wyczyść tekst @@ -4798,12 +3888,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormEditor - Resource File Changed Zmieniony plik z zasobami - The file "%1" has changed outside Designer. Do you want to reload it? Plik "%1" zmienił się na zewnątrz Designera. Czy chcesz go ponownie załadować? @@ -4811,7 +3899,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormLayoutMenu - Add form layout row... Dodaj wiersz do formularza... @@ -4819,58 +3906,46 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormWindow - Edit contents Modyfikuj zawartość - F2 F2 - Resize Zmień rozmiar - Key Move Przeniesienie - Key Resize Zmiana rozmiaru - Cannot paste widgets. Designer could not find a container without a layout to paste into. Nie można wkleić widżetów. Nie można było odnaleźć pojemnika bez rozmieszczenia do którego można by wkleić widżety. - Break the layout of the container you want to paste into, select this container and then paste again. Usuń rozmieszczenie w pojemniku do którego chcesz wkleić, zaznacz ten pojemnik i ponownie wklej. - Paste error Błąd wklejania - Lay out Rozmieść - - Drop widget Upuść widżet - Paste %n action(s) Wklej %n akcję @@ -4879,12 +3954,10 @@ Czy chcesz nadpisać szablon? - Insert widget '%1' Wstaw widżet '%1 - Paste %n widget(s) Wklej %n widżet @@ -4893,27 +3966,22 @@ Czy chcesz nadpisać szablon? - Paste (%1 widgets, %2 actions) Wklej (%1 widżetów, %2 akcji) - Select Ancestor Wybierz przodka - A QMainWindow-based form does not contain a central widget. Formularz bazujący na QMainWindow nie zawiera centralnego widżetu. - Raise widgets Przenieś widżety na wierzch - Lower widgets Przenieś widżety na spód @@ -4921,12 +3989,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormWindowBase - Delete Usuń - Delete '%1' Usuń '%1' @@ -4934,200 +4000,159 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormWindowManager - Cu&t Wy&tnij - Cuts the selected widgets and puts them on the clipboard Wycina zaznaczone widżety i umieszcza je w schowku - &Copy S&kopiuj - Copies the selected widgets to the clipboard Kopiuje zaznaczone widżety do schowka - &Paste Wk&lej - Pastes the clipboard's contents Wkleja zawartość schowka - &Delete &Usuń - Deletes the selected widgets Usuwa zaznaczone widżety - Select &All Zaznacz &wszystko - Selects all widgets Wybiera wszystkie widżety - Bring to &Front Przenieś na w&ierzch - - Raises the selected widgets Przenosi zaznaczone widżety na wierzch - Send to &Back Przenieś na &spód - - Lowers the selected widgets Przenosi zaznaczone widżety na spód - Adjust &Size Dopasuj &wielkość - Adjusts the size of the selected widget Dopasuj wielkość zaznaczonego widżetu - Lay Out &Horizontally Rozmieść w po&ziomie - Lays out the selected widgets horizontally Rozmieszcza zaznaczone widżety w poziomie - Lay Out &Vertically Rozmieść w pio&nie - Lays out the selected widgets vertically Rozmieszcza zaznaczone widżety w pionie - Lay Out in a &Grid Rozmieść w &siatce - Lays out the selected widgets in a grid Rozmieszcza zaznaczone widżety w siatce - Lay Out Horizontally in S&plitter Rozmieść poziomo w s&plitterze - Lays out the selected widgets horizontally in a splitter Rozmieszcza zaznaczone widżety poziomo w splitterze - Lay Out Vertically in Sp&litter Rozmieść pionowo w sp&litterze - Lays out the selected widgets vertically in a splitter Rozmieszcza zaznaczone widżety pionowo w splitterze - &Break Layout &Usuń rozmieszczenie - Breaks the selected layout Usuwa zaznaczone rozmieszczenie - &Preview... Pod&gląd... - Preview current form Podgląd bierzącego formularza - Form &Settings... Us&tawienia formularza... - Break Layout Usuń rozmieszczenie - Adjust Size Dopasuj wielkość - Could not create form preview Title of warning message box Nie można utworzyć podglądu formularza - Form Settings - %1 Ustawienia formularza - %1 - Removes empty columns and rows Usuń puste kolumny i wiersze - Lay Out in a &Form Layout Rozmieść w &formularzu - Lays out the selected widgets in a form layout Rozmieszcza zaznaczone widżety w formularzu - Si&mplify Grid Layout Up&rość rozmieszczenie w siatce @@ -5135,12 +4160,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::FormWindowSettings - None Żaden - Device Profile: %1 Profil urządzenia: %1 @@ -5148,37 +4171,30 @@ Czy chcesz nadpisać szablon? qdesigner_internal::GridPanel - Visible Widoczna - Snap Przyciągaj - Reset Przywróć ustawienia - Form Formularz - Grid Siatka - Grid &X Siatka &X - Grid &Y Siatka &Y @@ -5186,7 +4202,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::GroupBoxTaskMenu - Change title... Zmień tytuł... @@ -5194,7 +4209,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::HtmlTextEdit - Insert HTML entity Wstaw jednostkę HTML @@ -5202,92 +4216,74 @@ Czy chcesz nadpisać szablon? qdesigner_internal::IconSelector - The pixmap file '%1' cannot be read. Nie można odczytać pliku z pixmapą %1. - The file '%1' does not appear to be a valid pixmap file: %2 Plik '%1' nie wygląda na poprawny plik z pixmapą: %2 - The file '%1' could not be read: %2 Nie można odczytać pliku "%1", %2 - Pixmap Read Error Błąd przy odczycie pixmapy - ... ... - Normal Off Normalny wyciśnięty - Normal On Normalny wciśnięty - Disabled Off Wyłączony wyciśnięty - Disabled On Wyłączony wciśnięty - Active Off Aktywny wyciśnięty - Active On Aktywny wciśnięty - Selected Off Zaznaczony wyciśnięty - Selected On Zaznaczony wciśnięty - Choose Resource... Wybierz zasób... - Choose File... Wybierz plik... - Reset Przywróć - Reset All Przywróć wszystkie - Choose a Pixmap Wybierz pixmapę @@ -5295,58 +4291,46 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ItemListEditor - Properties &<< Własciwości &<< - - Properties &>> Własciwości &>> - Items List Lista elementów - New Item Nowy element - &New &Nowy - Delete Item Usuń element - &Delete &Usuń - Move Item Up Przenieś element do góry - U U - Move Item Down Przenieś element w dół - D D @@ -5354,12 +4338,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::LabelTaskMenu - Change rich text... Zmień tekst sformatowany... - Change plain text... Zmień zwykły tekst... @@ -5367,7 +4349,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::LanguageResourceDialog - Choose Resource Wybierz zasób @@ -5375,7 +4356,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::LineEditTaskMenu - Change text... Zmień tekst... @@ -5383,17 +4363,14 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ListWidgetEditor - New Item Nowy element - Edit List Widget Modyfikuj listę - Edit Combobox Modyfikuj combobox @@ -5401,12 +4378,10 @@ Czy chcesz nadpisać szablon? qdesigner_internal::ListWidgetTaskMenu - Edit Items... Modyfikuj elementy... - Change List Contents Zmień zawartość listy @@ -5414,22 +4389,18 @@ Czy chcesz nadpisać szablon? qdesigner_internal::MdiContainerWidgetTaskMenu - Next Subwindow Następne podokno - Previous Subwindow Poprzednie podokno - Tile Obok siebie - Cascade Kaskadowo @@ -5437,7 +4408,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::MenuTaskMenu - Remove Usuń @@ -5445,7 +4415,6 @@ Czy chcesz nadpisać szablon? qdesigner_internal::MorphMenu - Morph into Przekształć w @@ -5453,42 +4422,34 @@ Czy chcesz nadpisać szablon? qdesigner_internal::NewActionDialog - New Action... Nowa akcja... - &Text: &Tekst: - &Icon: &Ikonka: - Shortcut: Skrót: - Checkable: Przełączalny: - ToolTip: Podpowiedź: - ... ... - Object &name: &Nazwa obiektu: @@ -5496,41 +4457,34 @@ Czy chcesz nadpisać szablon? qdesigner_internal::NewDynamicPropertyDialog - Set Property Name Ustaw nazwę właściwości - The current object already has a property named '%1'. Please select another, unique one. Bieżący obiekt posiada już właściwość o nazwie '%1'. Wybierz inną, unikalną nazwę. - Create Dynamic Property Utwórz dynamiczną właściwość - Property Name Nazwa właściwości - Property Type Typ właściwości - The '_q_' prefix is reserved for the Qt library. Please select another name. Przedrostek '_q_' jest zarezerwowany dla biblioteki Qt. Wybierz inną nazwę. - horizontalSpacer poziomy dystans @@ -5538,83 +4492,67 @@ Wybierz inną nazwę. qdesigner_internal::NewFormWidget - Default size Domyślny rozmiar - QVGA portrait (240x320) QVGA portret (240x320) - QVGA landscape (320x240) QVGA pejzaż (320x240) - VGA portrait (480x640) VGA portret (480x640) - VGA landscape (640x480) VGA pejzaż (640x480) - Widgets New Form Dialog Categories Widżety - Custom Widgets Własne widżety - None Żadne - Error loading form Błąd podczas ładowania formularza - Unable to open the form template file '%1': %2 Nie można otworzyć pliku '%1' z szablonem formularza: %2 - Internal error: No template selected. Błąd wewnętrzny: Nie zaznaczono szablonu. - 0 0 - Choose a template for a preview Wybierz szablon do podglądu - Embedded Design Projekt dla urządzeń specjalizowanych - Device: Urządzenie: - Screen Size: Rozmiar ekranu: @@ -5622,37 +4560,30 @@ Wybierz inną nazwę. qdesigner_internal::NewPromotedClassPanel - Add Dodaj - New Promoted Class Nowa klasa zastępcza - Base class name: Nazwa bazowej klasy: - Promoted class name: Nazwa zastępczej klasy: - Header file: Plik nagłówkowy: - Global include Nagłówek globalny - Reset Przywróć ustawienia @@ -5660,12 +4591,10 @@ Wybierz inną nazwę. qdesigner_internal::ObjectInspector - Change Current Page Zmień bieżącą stronę - &Find in Text... Z&najdź w tekście... @@ -5673,32 +4602,26 @@ Wybierz inną nazwę. qdesigner_internal::OrderDialog - Index %1 (%2) Indeks %1 (%2) - Change Page Order Zmień porządek stron - Page Order Porządek stron - Move page up Przenieś stronę do góry - Move page down Przenieś stronę w dół - %1 %2 %1 %2 @@ -5706,47 +4629,38 @@ Wybierz inną nazwę. qdesigner_internal::PaletteEditor - Edit Palette Modyfikuj paletę - Tune Palette Dopasuj paletę - Show Details Pokazuj szczegóły - Compute Details Obliczaj szczegóły - Quick Szybko - Preview Podgląd - Disabled Wyszarzony - Inactive Nieaktywny - Active Aktywny @@ -5754,7 +4668,6 @@ Wybierz inną nazwę. qdesigner_internal::PaletteEditorButton - Change Palette Zmień paletę @@ -5762,22 +4675,18 @@ Wybierz inną nazwę. qdesigner_internal::PaletteModel - Color Role Rola koloru - Active Aktywna - Inactive Nieaktywna - Disabled Wyszarzona @@ -5785,28 +4694,22 @@ Wybierz inną nazwę. qdesigner_internal::PixmapEditor - Copy Path Skopiuj ścieżkę - Paste Path Wklej ścieżkę - Choose Resource... Wybierz zasób... - Choose File... Wybierz plik... - - ... ... @@ -5814,7 +4717,6 @@ Wybierz inną nazwę. qdesigner_internal::PlainTextEditorDialog - Edit text Modyfikuj tekst @@ -5822,37 +4724,30 @@ Wybierz inną nazwę. qdesigner_internal::PluginDialog - Components Komponenty - Plugin Information Informacje o wtyczkach - Qt Designer couldn't find any plugins Qt Designer nie mógł znaleźć żadnej wtyczki - Qt Designer found the following plugins Qt Designer znalazł następujące wtyczki: - Refresh Odśwież - Scan for newly installed custom widget plugins. Szukaj nowo zainstalowanych wtyczek z widżetami. - New custom widget plugins have been found. Znaleziono nową wtyczkę z widżetami. @@ -5860,7 +4755,6 @@ Wybierz inną nazwę. qdesigner_internal::PreviewActionGroup - %1 Style Styl %1 @@ -5868,47 +4762,38 @@ Wybierz inną nazwę. qdesigner_internal::PreviewConfigurationWidget - Default Domyślny - None Żadna - Browse... Przeglądaj... - Load Custom Device Skin Załaduj dostosowaną skórkę (skin) urządzenia - All QVFB Skins (*.%1) Wszystkie skórki (skin) QVFB (*.%1) - %1 - Duplicate Skin %1 - zduplikowana skórka (skin) - The skin '%1' already exists. Skórka (skin) '%1' już istnieje. - %1 - Error %1 - Błąd - %1 is not a valid skin directory: %2 %1 nie jest poprawnym katalogiem ze skórką (skin) @@ -5918,24 +4803,20 @@ Wybierz inną nazwę. qdesigner_internal::PreviewDeviceSkin - &Portrait P&ortret - Landscape (&CCW) Rotate form preview counter-clockwise Pejzaż (&CCW) - &Landscape (CW) Rotate form preview clockwise P&ejzaż (CW) - &Close Za&mknij @@ -5943,7 +4824,6 @@ Wybierz inną nazwę. qdesigner_internal::PreviewManager - %1 - [Preview] %1 - [Podgląd] @@ -5951,7 +4831,6 @@ Wybierz inną nazwę. qdesigner_internal::PreviewMdiArea - The moose in the noose ate the goose who was loose. Palette editor background @@ -5962,57 +4841,46 @@ chrząszcz brzmi w trzcinie. qdesigner_internal::PreviewWidget - Preview Window Podgląd okna - LineEdit LineEdit - ComboBox Combobox - PushButton PushButton - ButtonGroup2 ButtonGroup2 - CheckBox1 Checkbox1 - CheckBox2 CheckBox2 - ButtonGroup ButtonGroup - RadioButton1 RadioButton1 - RadioButton2 RadioButton2 - RadioButton3 RadioBUtton3 @@ -6020,22 +4888,18 @@ chrząszcz brzmi w trzcinie. qdesigner_internal::PromotionModel - Name Nazwa - Header file Plik nagłówkowy - Global include Nagłówek globalny - Usage Użycie @@ -6043,27 +4907,22 @@ chrząszcz brzmi w trzcinie. qdesigner_internal::PromotionTaskMenu - Promoted widgets... Zastępcze widżety... - Promote to ... Zastąp... - Promote to Zastąp - Demote to %1 Przywróć do %1 - Change signals/slots... Zmień sygnały/sloty... @@ -6071,59 +4930,48 @@ chrząszcz brzmi w trzcinie. qdesigner_internal::PropertyEditor - Add Dynamic Property... Dodaj dynamiczną właściwość ... - Remove Dynamic Property Usuń dynamiczną właściwość - Sorting Sortowanie - Color Groups Kolorowanie grup - Tree View Widok drzewiasty - Drop Down Button View Widok z rozszerzalnymi przyciskami - Configure Property Editor Skonfiguruj edytor właściwości - Object: %1 Class: %2 Obiekt: %1 Klasa: %2 - String... String... - Bool... Bool... - Other... Inne... @@ -6131,7 +4979,6 @@ Klasa: %2 qdesigner_internal::PropertyLineEdit - Insert line break Wstaw znak końca linii @@ -6139,27 +4986,22 @@ Klasa: %2 qdesigner_internal::QDesignerPromotionDialog - Promoted Widgets Zastępcze widżety - Promoted Classes Zastępcze klasy - Promote Zastąp - %1 - Error %1 - Błąd - Change signals/slots... Zmień sygnały/sloty... @@ -6167,22 +5009,18 @@ Klasa: %2 qdesigner_internal::QDesignerResource - Loading qrc file ładowanie pliku qrc - The specified qrc file <p><b>%1</b></p><p>could not be found. Do you want to update the file location?</p> Plik qrc <p><b>%1</b></p><p> nie został znaleziony. Czy chcesz uaktualnić ścieżkę do pliku?</p> - New location for %1 Nowe położenie dla %1 - Resource files (*.qrc) Pliki z zasobami (*.qrc) @@ -6190,57 +5028,46 @@ Klasa: %2 qdesigner_internal::QDesignerTaskMenu - Change objectName... Zmień nazwę obiektu... - Change toolTip... Zmień podpowiedź... - Change whatsThis... Zmień "co to jest"... - Create Menu Bar Utwórz pasek menu - Add Tool Bar Dodaj pasek narzędzi - Create Status Bar Utwórz pasek stanu - Change styleSheet... Zmień arkusz stylu... - Remove Status Bar Usuń pasek stanu - Change script... Zmień skrypt... - no signals available brak dostępnych sygnałów - Set size constraint on %n widget(s) Ustaw ograniczenie rozmiaru w %n obiekcie @@ -6249,57 +5076,46 @@ Klasa: %2 - Change signals/slots... Zmień sygnały/sloty... - Go to slot... Przejdź do slotu... - Size Constraints Ograniczenia rozmiaru - Set Minimum Width Ustaw minimalną szerokość - Set Minimum Height Ustaw minimalną wysokość - Set Minimum Size Ustaw minimalny rozmiar - Set Maximum Width Ustaw maksymalną szerokość - Set Maximum Height Ustaw maksymalną wysokość - Set Maximum Size Ustaw maksymalny rozmiar - Edit ToolTip Modyfikuj podpowiedź - Edit WhatsThis Modyfikuj "Co to jest" @@ -6307,42 +5123,34 @@ Klasa: %2 qdesigner_internal::QDesignerWidgetBox - - Unexpected element <%1> Niespodziewany element <%1> - A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4 %5 Wystąpił błąd przetwarzania w linii %1, kolumnie %2 kodu XML określonego dla widżetu %3: %4 %5 - The XML code specified for the widget %1 does not contain any widget elements. %2 Kod XML określony dla widżetu %1 nie zawiera żadnego elementu typu widżet. %2 - An error has been encountered at line %1 of %2: %3 Wystąpił błąd w linii %1 w %2: %3 - Unexpected element <%1> encountered when parsing for <widget> or <ui> Wystąpił niespodziewany element <%1> podczas przetwarzania elementu <widget> lub <ui> - Unexpected end of file encountered when parsing widgets. Wystąpił niespodziewany koniec pliku podczas przetwarzania widżetów. - A widget element could not be found. Nie można odnależć elementu <widget>. @@ -6350,73 +5158,58 @@ Klasa: %2 qdesigner_internal::QtGradientStopsController - H H - S S - V V - - Hue Barwa - Sat Nas. - Val Wart. - Saturation Nasycenie - Value Wartość - R R - G G - B B - Red Czerwień - Green Zieleń - Blue Błękit @@ -6424,27 +5217,22 @@ Klasa: %2 qdesigner_internal::RichTextEditorDialog - Edit text Modyfikuj tekst - &Cancel &Anuluj - &OK &OK - Rich Text Rich Text - Source Źródło @@ -6452,72 +5240,58 @@ Klasa: %2 qdesigner_internal::RichTextEditorToolBar - Bold Pogrubienie - Italic Kursywa - CTRL+I CTRL+I - Underline Podkreślenie - CTRL+U CTRL+U - CTRL+B CTRL+B - Left Align Wyrównanie do lewej - Center Wyrównanie do środka - Right Align Wyrównanie do prawej - Justify Wyjustuj - Superscript Indeks górny - Subscript Indeks dolny - Insert &Link Wstaw &Odsyłacz - Insert &Image Wstaw &obrazek @@ -6525,17 +5299,14 @@ Klasa: %2 qdesigner_internal::ScriptDialog - Edit script Modyfikuj skrypt - Syntax error Błąd składni - <html>Enter a Qt Script snippet to be executed while loading the form.<br>The widget and its children are accessible via the variables <i>widget</i> and <i>childWidgets</i>, respectively. <html>Wprowadź skrypt Qt który będzie wykonany podczas ładowania formularza.<br>Widżet i jego dzieci są dostępne przez zmienne <i>widget</i> i <i>childWidgets</i>, odpowiednio. @@ -6543,7 +5314,6 @@ Klasa: %2 qdesigner_internal::ScriptErrorDialog - Script errors Błędy skryptu @@ -6551,23 +5321,18 @@ Klasa: %2 qdesigner_internal::SignalSlotDialog - There is already a slot with the signature '%1'. Slot '%1' już istnieje. - There is already a signal with the signature '%1'. Sygnał '%1' już istnieje. - %1 - Duplicate Signature %1 - zduplikowany zapis - - Signals/Slots of %1 Sygnały/sloty obiektu %1 @@ -6575,12 +5340,10 @@ Klasa: %2 qdesigner_internal::SignalSlotEditorPlugin - Edit Signals/Slots Modyfikuj sygnały/sloty - F4 F4 @@ -6588,7 +5351,6 @@ Klasa: %2 qdesigner_internal::SignalSlotEditorTool - Edit Signals/Slots Modyfikuj sygnały/sloty @@ -6596,7 +5358,6 @@ Klasa: %2 qdesigner_internal::StatusBarTaskMenu - Remove Usuń @@ -6604,7 +5365,6 @@ Klasa: %2 qdesigner_internal::StringListEditorButton - Change String List Zmień listę tekstów @@ -6612,38 +5372,30 @@ Klasa: %2 qdesigner_internal::StyleSheetEditorDialog - Edit Style Sheet Modyfikuj arkusz stylu - - Valid Style Sheet Poprawny arkusz stylu - Invalid Style Sheet Niepoprawny arkusz stylu - Add Resource... Dodaj zasób... - Add Gradient... Dodaj gradient... - Add Color... Dodaj kolor... - Add Font... Dodaj czcionkę... @@ -6651,27 +5403,22 @@ Klasa: %2 qdesigner_internal::TabOrderEditor - Start from Here Rozpocznij stąd - Restart Rozpocznij od nowa - Tab Order List... Lista kolejności tabulacji... - Tab Order List Lista kolejności tabulacji - Tab Order Kolejność tabulacji @@ -6679,7 +5426,6 @@ Klasa: %2 qdesigner_internal::TabOrderEditorPlugin - Edit Tab Order Modyfikuj kolejność tabulacji @@ -6687,7 +5433,6 @@ Klasa: %2 qdesigner_internal::TabOrderEditorTool - Edit Tab Order Modyfikuj kolejność tabulacji @@ -6695,48 +5440,38 @@ Klasa: %2 qdesigner_internal::TableWidgetEditor - Edit Table Widget Modyfikuj tablę - &Items &Elementy - New Row Nowy wiersz - &Columns &Kolumny - &Rows &Wiersze - Properties &<< Własciwości &<< - - Properties &>> Własciwości &>> - Table Items Elementy tabeli - New Column Nowa kolumna @@ -6744,7 +5479,6 @@ Klasa: %2 qdesigner_internal::TableWidgetTaskMenu - Edit Items... Modyfikuj elementy... @@ -6752,22 +5486,18 @@ Klasa: %2 qdesigner_internal::TemplateOptionsWidget - Pick a directory to save templates in Wybierz katalog do zachowywania szablonów - Form Formularz - Additional Template Paths Dodatkowe ścieżki z szablonami - ... ... @@ -6775,22 +5505,18 @@ Klasa: %2 qdesigner_internal::TextEditTaskMenu - Change HTML... Zmień HTML... - Edit HTML Modyfikuj HTML - Edit Text Modyfikuj tekst - Change Plain Text... Zmień zwykły tekst... @@ -6798,22 +5524,18 @@ Klasa: %2 qdesigner_internal::TextEditor - Choose Resource... Wybierz zasób... - Choose File... Wybierz plik... - Choose a File Wybierz plik - ... ... @@ -6821,27 +5543,22 @@ Klasa: %2 qdesigner_internal::ToolBarEventFilter - Insert Separator Wstaw separator - Remove action '%1' Usuń akcję '%1' - Remove Toolbar '%1' Usuń pasek narzędzi '%1' - Insert Separator before '%1' Wstaw separator przed '%1' - Append Separator Dodaj separator @@ -6849,125 +5566,98 @@ Klasa: %2 qdesigner_internal::TreeWidgetEditor - Edit Tree Widget Modyfikuj drzewo - &Items &Elementy - Tree Items Drzewo elementów - &Columns &Kolumny - Per column properties Właściowści dla kolumny - Common properties Wspólne właściwości - - New Item Nowy element - - New Subitem Nowy podelement - Properties &<< Własciwości &<< - - Properties &>> Własciwości &>> - New &Subitem Nowy &podelement - Delete Item Usuń element - Move Item Left (before Parent Item) Przenieś element w lewo (przed element nadrzędny) - L L - Move Item Right (as a First Subitem of the Next Sibling Item) Przenieś element w prawo (jako pierwszy podelement kolejnego elementu) - R R - Move Item Up Przenieś element do góry - U U - Move Item Down Przenieś element w dół - D D - New Column Nowa kolumna - 1 1 - &New &Nowy - &Delete &Usuń @@ -6975,7 +5665,6 @@ Klasa: %2 qdesigner_internal::TreeWidgetTaskMenu - Edit Items... Modyfikujj elementy... @@ -6983,7 +5672,6 @@ Klasa: %2 qdesigner_internal::WidgetBox - Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML. Ostrzeżenie: Błąd tworzenia widżetu w panelu widżetów. Mogło to być spowodowane niepoprawnym kodem XML widżetu. @@ -6991,42 +5679,34 @@ Klasa: %2 qdesigner_internal::WidgetBoxTreeWidget - Scratchpad Notatnik - Custom Widgets Własne widżety - Expand all Rozwiń wszystkie - Collapse all Zwiń wszystkie - List View Widok w formie listy - Icon View Widok z ikonkami - Remove Usuń - Edit name Modyfikuj nazwę @@ -7034,7 +5714,6 @@ Klasa: %2 qdesigner_internal::WidgetDataBase - A custom widget plugin whose class name (%1) matches that of an existing class has been found. Została znaleziona wtyczka widżetu, w której nazwa klasy (%1) odpowiada istniejącej już klasie. @@ -7042,7 +5721,6 @@ Klasa: %2 qdesigner_internal::WidgetEditorTool - Edit Widgets Modyfikuj widżety @@ -7050,34 +5728,28 @@ Klasa: %2 qdesigner_internal::WidgetFactory - The custom widget factory registered for widgets of class %1 returned 0. Fabryka widżetów użytkownika zarejestrowana dla widżetów klasy %1 zwróciła 0. - A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class %1. It returned a widget of class %2. Wystąpiła niezgodność nazwy klasy podczas tworzenia widżetu przy pomocy fabryki widżetów użytkownika zarejestrowanej dla klasy %1. Zwrócony został widżet klasy %2. - %1 Widget Widżet %1 - The current page of the container '%1' (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget. Podczas tworzenia rozmieszczenia nie można było określić bieżącej strony (%2) pojemnika '%1'. Wskazuje to na niespójność pliku ui, prawdopodobnie utworzone zostało zbędne rozmieszczenie dla tego pojemnika. - Attempt to add a layout to a widget '%1' (%2) which already has an unmanaged layout of type %3. This indicates an inconsistency in the ui-file. Próba dodania rozmieszczenia do widżetu '%1' (%2) który posiada już niezarządzane rozmieszczenie typu %3. To wskazuje na niespójność w pliku "ui". - Cannot create style '%1'. Nie można utworzyć stylu '%1'. @@ -7085,12 +5757,10 @@ To wskazuje na niespójność w pliku "ui". qdesigner_internal::WizardContainerWidgetTaskMenu - Next Dalej - Back Wstecz @@ -7098,7 +5768,6 @@ To wskazuje na niespójność w pliku "ui". qdesigner_internal::ZoomMenu - %1 % Zoom factor %1 % @@ -7107,7 +5776,6 @@ To wskazuje na niespójność w pliku "ui". qdesigner_internal::ZoomablePreviewDeviceSkin - &Zoom &Powiększenie diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts index 53549da..f0b144e 100644 --- a/translations/qt_pl.ts +++ b/translations/qt_pl.ts @@ -4,7 +4,6 @@ CloseButton - Close Tab Zamknij kartę @@ -12,12 +11,10 @@ FakeReply - Fake error ! Fałszywy błąd! - Invalid URL Niepoprawny URL @@ -25,37 +22,30 @@ MAC_APPLICATION_MENU - Services Usługi - Hide %1 Ukryj %1 - Hide Others Ukryj pozostałe - Show All Pokaż wszystko - Preferences... Preferencje… - Quit %1 Zakończ %1 - About %1 %1… @@ -63,32 +53,26 @@ Phonon:: - Notifications Powiadomienia - Music Muzyka - Video Wideo - Communication Komunikacja - Games Gry - Accessibility Dostępność @@ -96,24 +80,18 @@ Phonon::AudioOutput - - <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> <html>Urządzenie dźwiękowe <b>%1</b> nie działa.<br/>Przywracanie do <b>%2</b>.</html> - <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> <html>Przełączanie na urządzenie dźwiękowe <b>%1</b><br/>które właśnie stało się dostępne i ma wyższy priorytet.</html> - - Revert back to device '%1' Przywróć do urządzenia '%1' - <html>Switching to the audio playback device <b>%1</b><br/>which has higher preference or is specifically configured for this stream.</html> <html>Przełączanie na urządzenie dźwiękowe <b>%1</b><br/>które ma wyższy priorytet lub jest specjalnie skonfigurowane dla tego strumienia.</html> @@ -121,14 +99,12 @@ Phonon::Gstreamer::Backend - Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. Some video features have been disabled. Ostrzeżenie: Wygląda na to, że pakiet gstreamer0.10-plugins-good nie jest zainstalowany w tym systemie. Niektóre możliwości wideo zostały wyłączone. - Warning: You do not seem to have the base GStreamer plugins installed. All audio and video support has been disabled Ostrzeżenie: Wygląda na to, że podstawowe wtyczki GStreamer nie są zainstalowane w tym systemie. @@ -138,7 +114,6 @@ Obsługa dźwięku i wideo została wyłączona Phonon::Gstreamer::MediaObject - Cannot start playback. Check your GStreamer installation and make sure you @@ -149,49 +124,34 @@ Sprawdź instalację Gstreamer i upewnij się że zainstalowałeś libgstreamer-plugins-base. - Missing codec helper script assistant. - Plugin codec installation failed for codec: %0 Błąd podczas instalacji wtyczki dla kodeka: %0 - A required codec is missing. You need to install the following codec(s) to play this content: %0 Brak wymaganego kodeka. Aby odtworzyć zawartość musisz zainstalować poniższy kodek: %0 - - - - - - - - Could not open media source. Nie można otworzyć źródła mediów. - Invalid source type. Niepoprawny typ źródła. - Could not locate media source. Nie można znaleźć źródła mediów. - Could not open audio device. The device is already in use. Nie można otworzyć urządzenia dźwiękowego. Urządzenie jest już używane. - Could not decode media source. Nie można zdekodować źródła mediów. @@ -199,162 +159,130 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF - Audio Output Wyjście dźwięku - The audio output device Wyjściowe urządzenie dźwiękowe - No error Brak błędu - Not found Nie znaleziono - Out of memory Brak pamięci - Not supported Nieobsługiwane - Overflow Przepełnienie - Underflow Niedopełnienie - Already exists Już istnieje - Path not found Nie znaleziono ścieżki - In use W użyciu - Not ready Brak gotowości - Access denied Odmowa dostępu - Could not connect Nie można połączyć - Disconnected Rozłączono - Permission denied Brak uprawnień - Insufficient bandwidth Niewystarczająca szerokość pasma - Network unavailable Sieć niedostępna - Network communication error Błąd komunikacji sieciowej - Streaming not supported Transmisje strumieniowe nie są obsługiwane - Server alert Ostrzeżenie serwera - Invalid protocol Nieprawidłowy protokół - Invalid URL Nieprawidłowy adres URL - Multicast error Błąd multiemisji - Proxy server error Błąd serwera pośredniczącego - Proxy server not supported Nieobsługiwany serwer pośredniczący - Audio output error Błąd wyjściowego sygnału dźwiękowego - Video output error Błąd wyjściowego sygnału wideo - Decoder error Błąd dekodera - Audio or video components could not be played Nie można odtworzyć dźwięku lub wideo - DRM error Błąd DRM - Unknown error (%1) Nieznany błąd (%1) @@ -362,33 +290,34 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::AbstractMediaPlayer - Not ready to play Brak gotowości odtwarzania - - Error opening file Błąd otwierania pliku - Error opening URL Błąd otwierania adresu URL - + Error opening resource + Błąd otwierania zasobu + + + Error opening source: resource not opened + Błąd otwierania źródła: zasób nie został otwarty + + Setting volume failed Ustawienie głośności zakończone błędem - Loading clip failed Załadowanie klipu zakończone błędem - Playback complete Zakończono odtwarzanie @@ -396,22 +325,18 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::AbstractVideoPlayer - Pause failed Zatrzymanie zakończone błędem - Seek failed Wyszukiwanie zakończone błędem - Getting position failed Ustalanie pozycji zakończone błędem - Opening clip failed Otwieranie klipu zakończone błędem @@ -419,7 +344,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::AudioEqualizer - %1 Hz %1 Hz @@ -427,7 +351,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::AudioPlayer - Getting position failed Ustalanie pozycji zakończone błędem @@ -435,11 +358,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::DsaVideoPlayer - - - - - Video display error Błąd wyświetlacza wideo @@ -447,7 +365,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::EffectFactory - Enabled Włączono @@ -455,61 +372,51 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::EnvironmentalReverb - Decay HF ratio (%) DecayHFRatio: Ratio of high-frequency decay time to the value specified by DecayTime. Współczynnik zanikania HF (%) - Decay time (ms) DecayTime: Time over which reverberation is diminished. Czas zanikania (ms) - Density (%) Density Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Diffusion value. Gęstość (%) - Diffusion (%) Diffusion: Delay between first and subsequent reflections. Note that the S60 platform documentation does not make clear the distinction between this value and the Density value. Rozpraszanie (%) - Reflections delay (ms) ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection. Opóźnienie odbić (ms) - Reflections level (mB) ReflectionsLevel: Amplitude of reflections. This value is corrected by the RoomLevel to give the final reflection amplitude. Poziom odbić (mB) - Reverb delay (ms) ReverbDelay: Amount of time between arrival of the first reflection and start of the late reverberation. Opóźnienie pogłosu (ms) - Reverb level (mB) ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude. Poziom pogłosu (mB) - Room HF level RoomHFLevel: Amplitude of low-pass filter used to attenuate the high frequency component of reflected sound. Poziom HF pomieszczenia - Room level (mB) RoomLevel: Master volume control for all reflected sound. Poziom pomieszczenia (mB) @@ -518,12 +425,18 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::MediaObject - Error opening source: type not supported Błąd otwierania źródła: typ źródła nie jest obsługiwany - + Error opening source: resource is compressed + Błąd otwierania źródła: zasób jest skompresowany + + + Error opening source: resource not valid + Błąd otwierania źródła: niepoprawny zasób + + Error opening source: media type could not be determined Błąd otwierania źródła: nie można określić typu multimediów @@ -531,7 +444,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::StereoWidening - Level (%) Poziom (%) @@ -539,8 +451,6 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::MMF::SurfaceVideoPlayer - - Video display error Błąd wyświetlacza wideo @@ -548,22 +458,14 @@ zainstalowałeś libgstreamer-plugins-base. Phonon::VolumeSlider - - - - Volume: %1% Głośność: %1% - - - Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% Użyj tego suwaka aby zmienić głośność. Skrajnie lewa pozycja to 0%, skrajnie prawa to %1% - Muted Wyciszony @@ -571,12 +473,10 @@ zainstalowałeś libgstreamer-plugins-base. Q3Accel - %1, %2 not defined %1, %2 nie określone - Ambiguous %1 not handled Niejednoznaczne %1, nie obsłużone @@ -584,27 +484,22 @@ zainstalowałeś libgstreamer-plugins-base. Q3DataTable - Delete Skasuj - False Fałsz - Insert Wstaw - True Prawda - Update Uaktualnij @@ -612,7 +507,6 @@ zainstalowałeś libgstreamer-plugins-base. Q3FileDialog - %1 File not found. Check path and filename. @@ -621,323 +515,246 @@ Plik nie znaleziony. Sprawdź ścieżkę i nazwę pliku. - <qt>Are you sure you wish to delete %1 "%2"?</qt> <qt>Na pewno chcesz skasować %1 "%2"?</qt> - - - - All Files (*) Wszystkie pliki (*) - Attributes Atrybuty - Back Powrót - - Cancel Anuluj - Copy or Move a File Skopiuj lub przenieś plik - Create New Folder Utwórz nowy katalog - Date Data - &Delete &Skasuj - Delete %1 Skasuj %1 - Detail View Szczegóły - Dir Katalog - - Directories Katalogi - Directory: Katalog: - - Error Błąd - File Plik - - - File &name: Nazwa &pliku: - File &type: &Rodzaj pliku: - Find Directory Znajdź katalog - Inaccessible Niedostępny - List View Lista - Look &in: Sprawdź &w: - Name Nazwa - New Folder Nowy katalog - New Folder %1 Nowy katalog %1 - New Folder 1 Nowy katalog 1 - &No &Nie - - &OK &OK - One directory up Katalog wyżej - - - &Open &Otwórz - - - Open Otwórz - Preview File Contents Podgląd zawartości pliku - Preview File Info Podgląd informacji o pliku - Read: %1 Czytaj: %1 - Read-only Tylko do odczytu - Read-write Do zapisu i odczytu - R&eload &Odśwież - &Rename &Zmień nazwę - - &Save &Zachowaj - - Save As Zachowaj jako - Show &hidden files Pokaż &ukryte pliki - Size Rozmiar - Sort Sortuj - Sort by &Date Sortuj po &dacie - Sort by &Name Sortuj &po nazwie - Sort by &Size Sortuj po &rozmiarze - Special Specjalny - Symlink to Directory Dowiązanie symboliczne do katalogu - Symlink to File Dowiązanie symboliczne do pliku - Symlink to Special Dowiązanie symboliczne do pliku specjalnego - the directory katalog - the file plik - the symlink dowiązanie symboliczne - Type Rodzaj - &Unsorted &Bez sortowania - - Write: %1 Pisz: %1 - Write-only Tylko do zapisu - &Yes &Tak - All Files (*.*) Wszystkie pliki (*.*) - Open Otwórz - Select a Directory Wybierz katalog @@ -945,36 +762,30 @@ Sprawdź ścieżkę i nazwę pliku. Q3LocalFs - Could not create directory %1 Nie można utworzyć katalogu %1 - Could not open %1 Nie można otworzyć %1 - - Could not read directory %1 Nie można czytać katalogu %1 - Could not remove file or directory %1 Nie można usunąć pliku lub katalogu %1 - Could not rename %1 to @@ -985,7 +796,6 @@ na %2 - Could not write %1 Nie można zapisać @@ -995,12 +805,10 @@ na Q3MainWindow - Customize... Ustawienia użytkownika... - Line up Wyrównaj położenie @@ -1008,7 +816,6 @@ na Q3NetworkProtocol - Operation stopped by the user Operacja zatrzymana przez użytkownika @@ -1016,8 +823,6 @@ na Q3ProgressDialog - - Cancel Anuluj @@ -1025,28 +830,22 @@ na Q3TabDialog - Apply Zatwierdź - Cancel Anuluj - Defaults Domyślne - Help Pomoc - - OK OK @@ -1054,38 +853,30 @@ na Q3TextEdit - Clear Wyczyść - &Copy S&kopiuj - Cu&t W&ytnij - &Paste &Wklej - &Redo &Przywróć - - Select All Zaznacz wszystko - &Undo &Cofnij @@ -1093,67 +884,54 @@ na Q3TitleBar - Close Zamknij okno - Closes the window Zamyka okno - Contains commands to manipulate the window Zawiera polecenia zarządzające oknem - Displays the name of the window and contains controls to manipulate it Wyświetla nazwę okna i zawiera elementy do zarządzania nim - Makes the window full screen Powiększa maksymalnie okno - Maximize Zmaksymalizuj - Minimize Zminimalizuj - Puts a minimized window back to normal Przywraca normalny rozmiar uprzednio zminimalizowanego okna - Moves the window out of the way Przenosi okno w inne położenie - Puts a maximized window back to normal Przywraca normalny rozmiar uprzednio zmaksymalizowanego okna - Restore down Przywróć pod spód - Restore up Przywróć na wierzch - System System @@ -1161,7 +939,6 @@ na Q3ToolBar - More... Więcej... @@ -1169,51 +946,38 @@ na Q3UrlOperator - - (unknown) (nieznany) - - The protocol `%1' does not support copying or moving files or directories Protokół '%1' nie obsługuje kopiowania lub przenoszenia plików lub katalogów - The protocol `%1' does not support creating new directories Protokół '%1' nie obsługuje tworzenia nowych katalogów - The protocol `%1' does not support getting files Protokół '%1' nie obsługuje pobierania plików - The protocol `%1' does not support listing directories Protokół '%1' nie obsługuje pokazywania katalogów - The protocol `%1' does not support putting files Protokół '%1' nie obsługuje wysyłania plików - The protocol `%1' does not support removing files or directories Protokół '%1' nie obsługuje usuwania plików lub katalogów - The protocol `%1' does not support renaming files or directories Protokół '%1' nie obsługuje zmiany nazwy plików lub katalogów - - - The protocol `%1' is not supported Protokół '%1' nie jest obsługiwany @@ -1221,27 +985,22 @@ na Q3Wizard - < &Back < &Wstecz - &Cancel &Anuluj - &Finish &Zakończ - &Help &Pomoc - &Next > &Dalej > @@ -1249,45 +1008,30 @@ na QAbstractSocket - - - Connection refused Połączenie odrzucone - - - - Host not found Host nie znaleziony - Connection timed out Przekroczony czas połączenia - - - Operation on socket is not supported Operacja na gnieździe nie jest obsługiwana - Socket is not connected Gniazdo nie jest podłączone - - Socket operation timed out Przekroczony czas operacji gniazda - Network unreachable Sieć niedostępna @@ -1295,17 +1039,14 @@ na QAbstractSpinBox - Step &down Krok w &dół - &Step up Krok do &góry - &Select All &Zaznacz wszystko @@ -1313,7 +1054,6 @@ na QAccessibleButton - Press Wciśnij @@ -1321,27 +1061,22 @@ na QApplication - Activate Uaktywnij - Activates the program's main window Uaktywnia główne okno programu - Executable '%1' requires Qt %2, found Qt %3. Program '%1' wymaga do uruchomienia Qt %2, znaleziono Qt %3. - Incompatible Qt Library Error Niekompatybilność biblioteki Qt - QT_LAYOUT_DIRECTION Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. LTR @@ -1350,22 +1085,18 @@ na QAxSelect - Select ActiveX Control Wybierz kontrolkę ActiveX - OK OK - &Cancel &Anuluj - COM &Object: &Obiekt COM: @@ -1373,17 +1104,14 @@ na QCheckBox - Check Zaznacz - Toggle Przełącz - Uncheck Odznacz @@ -1391,57 +1119,46 @@ na QColorDialog - &Add to Custom Colors &Dodaj do własnych kolorów - A&lpha channel: Kanał &alfa: - Select Color Wybierz kolor - &Basic colors &Kolory podstawowe - Bl&ue: Błęki&t: - &Custom colors Wła&sne kolory - &Green: &Zieleń: - Hu&e: &Barwa: - &Red: &Czerwień: - &Sat: &Nasycenie: - &Val: &Wartość: @@ -1449,23 +1166,18 @@ na QComboBox - - Open Otwórz - False Fałsz - True Prawda - Close Zamknij @@ -1473,43 +1185,36 @@ na QCoreApplication - %1: already exists QSystemSemaphore %1: już istnieje - %1: does not exist QSystemSemaphore %1: nie istnieje - %1: out of resources QSystemSemaphore %1: zasoby wyczerpane - %1: unknown error %2 QSystemSemaphore %1: nieznany błąd %2 - %1: key is empty QSystemSemaphore %1: klucz jest pusty - %1: unable to make key QSystemSemaphore %1: nie można utworzyć klucza - %1: ftok failed QSystemSemaphore %1: wystąpił błąd w funkcji ftok() @@ -1518,22 +1223,18 @@ na QDB2Driver - Unable to connect Nie można nawiązać połączenia - Unable to commit transaction Nie można dokonać transakcji - Unable to rollback transaction Nie można wycofać transakcji - Unable to set autocommit Nie można ustawić trybu automatycznego dokonywania transakcji @@ -1541,33 +1242,26 @@ na QDB2Result - - Unable to execute statement Nie można wykonać polecenia - Unable to prepare statement Nie można przygotować polecenia - Unable to bind variable Nie można powiązać zmiennej - Unable to fetch record %1 Nie można pobrać rekordu %1 - Unable to fetch next Nie można pobrać kolejnego wiersza danych - Unable to fetch first Nie można pobrać pierwszego wiersza danych @@ -1575,22 +1269,18 @@ na QDateTimeEdit - am am - AM AM - pm pm - PM PM @@ -1598,17 +1288,14 @@ na QDeclarativeAbstractAnimation - Cannot animate non-existent property "%1" Nie można animować nieistniejącej właściwości "%1" - Cannot animate read-only property "%1" Nie można animować właściwości (tylko do odczytu): "%1" - Animation is an abstract class "Animation" jest klasą abstrakcyjną @@ -1616,7 +1303,6 @@ na QDeclarativeAnchorAnimation - Cannot set a duration of < 0 Nie można ustawić ujemnego czasu trwania @@ -1624,67 +1310,50 @@ na QDeclarativeAnchors - Possible anchor loop detected on fill. Wykryto możliwe zapętlenie dla kotwicy "fill". - Possible anchor loop detected on centerIn. Wykryto możliwe zapętlenie dla kotwicy "centerIn". - - - - Cannot anchor to an item that isn't a parent or sibling. Nie można doczepić kotwicy do elementu który nie jest rodzicem ani rodzeństwem. - Possible anchor loop detected on vertical anchor. Wykryto możliwe zapętlenie dla pionowej kotwicy. - Possible anchor loop detected on horizontal anchor. Wykryto możliwe zapętlenie dla poziomej kotwicy. - Cannot specify left, right, and hcenter anchors. Nie można jednocześnie podać lewej, prawej i centralnej poziomej kotwicy. - - Cannot anchor to a null item. Nie można doczepić kotwicy do zerowego elementu. - Cannot anchor a horizontal edge to a vertical edge. Nie można doczepić poziomej krawędzi do pionowej. - - Cannot anchor item to self. Nie można doczepić kotwicy do tego samego elementu. - Cannot specify top, bottom, and vcenter anchors. Nie można jednocześnie podać górnej, dolnej i centralnej pionowej kotwicy. - Baseline anchor cannot be used in conjunction with top, bottom, or vcenter anchors. Bazowa kotwica nie może być użyta w połączeniu z górną, dolną lub centralną pionową kotwicą. - Cannot anchor a vertical edge to a horizontal edge. Nie można doczepić pionowej krawędzi do poziomej. @@ -1692,7 +1361,6 @@ na QDeclarativeAnimatedImage - Qt was built without support for QMovie Qt zostało zbudowane bez obsługi QMovie @@ -1700,7 +1368,6 @@ na QDeclarativeBehavior - Cannot change the animation assigned to a Behavior. Nie można zmienić animacji przypisanej do "Zachowania". @@ -1708,7 +1375,6 @@ na QDeclarativeBinding - Binding loop detected for property "%1" Zapętlenie powiązania dla właściwości "%1" @@ -1716,7 +1382,6 @@ na QDeclarativeCompiledBindings - Binding loop detected for property "%1" Zapętlenie powiązania dla właściwości "%1" @@ -1724,37 +1389,26 @@ na QDeclarativeCompiler - - - - - - Invalid property assignment: "%1" is a read-only property Niepoprawne przypisanie wartości: "%1" jest właściwością tylko do odczytu - Invalid property assignment: unknown enumeration Niepoprawne przypisanie wartości: nieznana wartość wyliczeniowa - Invalid property assignment: string expected Niepoprawne przypisanie wartości: oczekiwano ciągu - Invalid property assignment: url expected Niepoprawne przypisanie wartości: oczekiwano url - Invalid property assignment: unsigned int expected Niepoprawne przypisanie wartości: oczekiwano liczby naturalnej - Invalid property assignment: int expected Niepoprawne przypisanie wartości: oczekiwano liczby całkowitej @@ -1767,356 +1421,278 @@ na Niepoprawne przypisanie wartości: oczekiwano liczby zmiennoprzecinkowej podwójnej precyzji - - Invalid property assignment: number expected Niepoprawne przypisanie wartości: oczekiwano liczby - Invalid property assignment: color expected Niepoprawne przypisanie wartości: oczekiwano koloru - Invalid property assignment: date expected Niepoprawne przypisanie wartości: oczekiwano daty - Invalid property assignment: time expected Niepoprawne przypisanie wartości: oczekiwano czasu - Invalid property assignment: datetime expected Niepoprawne przypisanie wartości: oczekiwano daty i czasu - Invalid property assignment: point expected Niepoprawne przypisanie wartości: oczekiwano punktu - Invalid property assignment: size expected Niepoprawne przypisanie wartości: oczekiwano rozmiaru - Invalid property assignment: rect expected Niepoprawne przypisanie wartości: oczekiwano prostokąta - Invalid property assignment: boolean expected Niepoprawne przypisanie wartości: oczekiwano wartości boolowskiej - Invalid property assignment: 3D vector expected - Niepoprawne przypisanie wartości: oczekiwano wektoru 3D + Niepoprawne przypisanie wartości: oczekiwano wektora 3D - Invalid property assignment: unsupported type "%1" Niepoprawne przypisanie wartości: nieobsługiwany typ "%1" - Element is not creatable. Nie można utworzyć elementu ("creatable" wyłączone). - Component elements may not contain properties other than id Elementy komponentu nie mogą posiadać właściwości innych niż "id" - Invalid component id specification Niepoprawna specyfikacja "id" komponentu - - id is not unique Wartość "id" nie jest unikatowa - Invalid component body specification Niepoprawna specyfikacja "body" komponentu - Component objects cannot declare new properties. Instancje komponentu nie mogą deklarować nowych właściwości. - Component objects cannot declare new signals. Instancje komponentu nie mogą deklarować nowych sygnałów. - Component objects cannot declare new functions. Instancje komponentu nie mogą deklarować nowych funkcji. - Cannot create empty component specification Nie można utworzyć pustej specyfikacji komponentu - Incorrectly specified signal assignment Przypisanie sygnału błędnie podane - Cannot assign a value to a signal (expecting a script to be run) Nie można przypisać wartości do sygnału (oczekiwano uruchomienia skryptu) - Empty signal assignment Przypisanie pustego sygnału - Empty property assignment Przypisanie pustej właściwości - Attached properties cannot be used here Dołączone właściwości nie mogą być tutaj użyte - - Non-existent attached object Nieistniejący dołączony obiekt - - Invalid attached object assignment Niepoprawne przypisanie dołączonego obiektu - Cannot assign to non-existent default property Nie można przypisać wartości do nieistniejącej domyślnej właściwości - - Cannot assign to non-existent property "%1" Nie można przypisać wartości do nieistniejącej właściwości "%1" - Invalid use of namespace Niepoprawne użycie przestrzeni nazw - Not an attached property name Nie jest to nazwa dołączonej właściwości - Invalid use of id property Niepoprawne użycie właściwości "id" - - Property has already been assigned a value Wartość została już przypisana do właściwości - - Invalid grouped property access Błędny dostęp do zgrupowanej właściwości - Cannot assign a value directly to a grouped property Nie można bezpośrednio przypisać wartości do zgrupowanej właściwości - Invalid property use Niepoprawne użycie właściwości - Property assignment expected Oczekiwano przypisania wartości - Single property assignment expected Oczekiwano przypisania pojedynczej wartości - Unexpected object assignment Nieoczekiwane przypisanie obiektu - Cannot assign object to list Nie można przypisać obiektu do listy - Can only assign one binding to lists Tylko jedno powiązanie może być przypisane do listy - Cannot assign primitives to lists Nie można przypisać elementu do listy - Cannot assign multiple values to a script property Nie można przypisać wielu wartości do skryptowej właściwości - Invalid property assignment: script expected Niepoprawne przypisanie wartości: oczekiwano skryptu - Cannot assign object to property Nie można przypisać obiektu dla właściwości - "%1" cannot operate on "%2" "%1" nie może operować na "%2" - Duplicate default property Powielona domyślna właściwość - Duplicate property name Powielona nazwa właściwości - Property names cannot begin with an upper case letter Nazwy właściwości nie mogą rozpoczynać się wielką literą - Illegal property name Niepoprawna nazwa właściwości - Duplicate signal name Powielona nazwa sygnału - Signal names cannot begin with an upper case letter Nazwy sygnałów nie mogą rozpoczynać się wielką literą - Illegal signal name Niepoprawna nazwa sygnału - Duplicate method name - Powielona nazwa medoty + Powielona nazwa metody - Method names cannot begin with an upper case letter Nazwy metod nie mogą rozpoczynać się wielką literą - Illegal method name Niepoprawna nazwa metody - Property value set multiple times Wartość właściwości ustawiona wielokrotnie - Invalid property nesting Niepoprawne zagnieżdżenie właściwości - Cannot override FINAL property Nie można nadpisać właściwości "FINAL" - Invalid property type Niepoprawny typ właściwości - Invalid empty ID Niepoprawny pusty identyfikator - IDs cannot start with an uppercase letter Identyfikatory nie mogą rozpoczynać się wielką literą - IDs must start with a letter or underscore Identyfikatory muszą rozpoczynać się literą lub znakiem podkreślenia - IDs must contain only letters, numbers, and underscores Identyfikatory mogą zawierać jedynie litery, cyfry i znaki podkreślenia - ID illegally masks global JavaScript property - - No property alias location - - Invalid alias location Niepoprawne położenie aliasu - Invalid alias reference. An alias reference must be specified as <id> or <id>.<property> Niepoprawna referencja aliasu. Referencja aliasu musi być podana jako <id> lub <id> <property> - Invalid alias reference. Unable to find id "%1" Niepoprawna referencja aliasu. Nie można odnaleźć identyfikatora "%1" @@ -2124,7 +1700,6 @@ na QDeclarativeComponent - Invalid empty URL Niepoprawny pusty URL @@ -2132,23 +1707,18 @@ na QDeclarativeCompositeTypeManager - - Resource %1 unavailable Zasób %1 nie jest dostępny - Namespace %1 cannot be used as a type Przestrzeń nazw %1 nie może być użyta jako typ - %1 %2 %1 %2 - Type %1 unavailable Typ %1 nie jest dostępny @@ -2156,23 +1726,18 @@ na QDeclarativeConnections - - Cannot assign to non-existent property "%1" Nie można przypisać wartości do nieistniejącej właściwości "%1" - Connections: nested objects not allowed Połączenia: zagnieżdżone obiekty nie są dozwolone - Connections: syntax error Połączenia: błąd składni - Connections: script expected Połączenia: oczekiwano skryptu @@ -2180,33 +1745,26 @@ na QDeclarativeEngine - executeSql called outside transaction() "executeSql" zawołane na zewnątrz "transation()" - Read-only Transaction Transakcja tylko do odczytu - Version mismatch: expected %1, found %2 Niezgodność wersji: oczekiwano %1, znaleziono %2 - SQL transaction failed Transakcja SQL zakończona błędem - transaction: missing callback - - SQL: database version mismatch SQL: niezgodność wersji bazy danych @@ -2214,12 +1772,10 @@ na QDeclarativeFlipable - front is a write-once property "front" jest właściwością tylko do odczytu - back is a write-once property "back" jest właściwością tylko do odczytu @@ -2227,75 +1783,58 @@ na QDeclarativeImportDatabase - module "%1" definition "%2" not readable definicja "%2" modułu "%1" nie może zostać odczytana - plugin cannot be loaded for module "%1": %2 wtyczka nie może zostać załadowana dla modułu "%1": %2 - module "%1" plugin "%2" not found wtyczka "%2" modułu "%1" nie została odnaleziona - - module "%1" version %2.%3 is not installed wersja %2.%3 modułu %1 nie jest zainstalowana - module "%1" is not installed moduł "%1" nie jest zainstalowany - - "%1": no such directory "%1": brak katalogu - import "%1" has no qmldir and no namespace - - %1 is not a namespace - %1 nie jest przestrzenią nazw - - nested namespaces not allowed - zagnieżdżone przestrzenie nazw nie są dozwolone - - local directory lokalny katalog - is ambiguous. Found in %1 and in %2 jest niejednoznaczny. Znaleziono w %1 i w %2 - is ambiguous. Found in %1 in version %2.%3 and %4.%5 jest niejednoznaczny. Znaleziono w %1 w wersji %2.%3 i %4.%5 - is instantiated recursively jest zinstancjonowany rekurencyjnie - is not a type nie jest typem @@ -2303,7 +1842,6 @@ na QDeclarativeKeyNavigationAttached - KeyNavigation is only available via attached properties "KeyNavigation" jest dostępny jedynie poprzez dołączone właściwości @@ -2311,7 +1849,6 @@ na QDeclarativeKeysAttached - Keys is only available via attached properties "Keys" jest dostępny jedynie poprzez dołączone właściwości @@ -2319,59 +1856,46 @@ na QDeclarativeListModel - remove: index %1 out of range remove: indeks %1 poza zakresem - insert: value is not an object insert: wartość nie jest obiektem - insert: index %1 out of range insert: indeks %1 poza zakresem - move: out of range move: poza zakresem - append: value is not an object append: wartość nie jest obiektem - set: value is not an object set: wartość nie jest obiektem - - set: index %1 out of range set: indeks %1 poza zakresem - - ListElement: cannot contain nested elements ListElement: nie może zawierać zagnieżdżonych elementów - ListElement: cannot use reserved "id" property ListElement: nie można używać zarezerwowanej właściwości "id" - ListElement: cannot use script for property value ListElement: nie można używać skryptu jako wartości właściwości - ListModel: undefined property '%1' ListModel: niezdefiniowana właściwość "%1" @@ -2379,7 +1903,6 @@ na QDeclarativeLoader - Loader does not support loading non-visual elements. Ładowanie elementów niewizualnych nie jest obsługiwane. @@ -2387,18 +1910,14 @@ na QDeclarativeParentAnimation - Unable to preserve appearance under complex transform - - Unable to preserve appearance under non-uniform scale - Unable to preserve appearance under scale of 0 @@ -2406,18 +1925,14 @@ na QDeclarativeParentChange - Unable to preserve appearance under complex transform - - Unable to preserve appearance under non-uniform scale - Unable to preserve appearance under scale of 0 @@ -2425,144 +1940,110 @@ na QDeclarativeParser - - - Illegal unicode escape sequence - Illegal character Niepoprawny znak - Unclosed string at end of line Niedomknięty ciąg na końcu linii - Illegal escape squence - Unclosed comment at end of file Niedomknięty komentarz na końcu linii - Illegal syntax for exponential number Niepoprawna składnia liczby o postaci wykładniczej - Identifier cannot start with numeric literal Identyfikator nie może rozpoczynać się stałą liczbową - Unterminated regular expression literal Niedokończone wyrażenie regularne - Invalid regular expression flag '%0' Niepoprawna flaga "%0" w wyrażeniu regularnym - - Unterminated regular expression backslash sequence - Unterminated regular expression class Niedokończona klasa wyrażenia regularnego - - Syntax error Błąd składni - Unexpected token `%1' Nieoczekiwany znak "%1" - - Expected token `%1' Oczekiwany znak "%1" - - - Property value set multiple times Wartość właściwości ustawiona wielokrotnie - Expected type name Oczekiwana nazwa typu - Invalid import qualifier ID - Reserved name "Qt" cannot be used as an qualifier "Qt" jest nazwą zarezerwowaną i nie może być użyta jako kwalifikator - Script import qualifiers must be unique. Kwalifikator importu skryptu musi być unikatowy. - Script import requires a qualifier Import skryptu wymaga użycia kwalifikatora - Library import requires a version Import biblioteki wymaga podania wersji - Expected parameter type Oczekiwany typ parametru - Invalid property type modifier Niepoprawny modyfikator typu właściwości - Unexpected property type modifier Nieoczekiwany modyfikator typu właściwości - Expected property type Oczekiwany typ właściwości - Readonly not yet supported "Tylko do odczytu" nie jest jeszcze obsługiwane - JavaScript declaration outside Script element Deklaracja "JavaScript" na zewnątrz elementu "Script" @@ -2570,7 +2051,6 @@ na QDeclarativePauseAnimation - Cannot set a duration of < 0 Nie można ustawić ujemnego czasu trwania @@ -2578,19 +2058,14 @@ na QDeclarativePixmap - Error decoding: %1: %2 Błąd dekodowania: %1: %2 - - Failed to get image from provider: %1 Pobieranie obrazka od dostawcy zakończone błędem: %1 - - Cannot open: %1 Nie można otworzyć: %1 @@ -2617,7 +2092,6 @@ na QDeclarativePropertyAnimation - Cannot set a duration of < 0 Nie można ustawić ujemnego czasu trwania @@ -2625,17 +2099,14 @@ na QDeclarativePropertyChanges - PropertyChanges does not support creating state-specific objects. "PropertyChanges" nie obsługuje tworzenia obiektów charakterystycznych dla stanów. - Cannot assign to non-existent property "%1" Nie można przypisać wartości do nieistniejącej właściwości "%1" - Cannot assign to read-only property "%1" Nie można przypisać wartości do właściwości (tylko do odczytu): "%1" @@ -2643,13 +2114,10 @@ na QDeclarativeTextInput - - Could not load cursor delegate - Could not instantiate cursor delegate @@ -2657,47 +2125,38 @@ na QDeclarativeVME - Unable to create object of type %1 Nie można utworzyć obiektu typu %1 - Cannot assign value %1 to property %2 Nie można przypisać wartości %1 do właściwości %2 - Cannot assign object type %1 with no default method Nie można przypisać obiektu typu %1 który nie posiada domyślnej metody - Cannot connect mismatched signal/slot %1 %vs. %2 Nie można podłączyć niezgodnych sygnałów / slotów (%1 i %2) - Cannot assign an object to signal property %1 - Cannot assign object to list Nie można przypisać obiektu do listy - Cannot assign object to interface property - Unable to create attached object Nie można utworzyć dołączonego obiektu - Cannot set properties on %1 as it is null Nie można ustawić właściwości dla %1 ponieważ jest on zerowy @@ -2705,7 +2164,6 @@ na QDeclarativeVisualDataModel - Delegate component must be Item type. @@ -2713,8 +2171,6 @@ na QDeclarativeXmlListModel - - Qt was built without support for xmlpatterns Qt zostało zbudowane bez obsługi xmlpatterns @@ -2722,7 +2178,6 @@ na QDeclarativeXmlListModelRole - An XmlRole query must not start with '/' Zapytanie XmlRole nie może rozpoczynać się od "/" @@ -2730,7 +2185,6 @@ na QDeclarativeXmlRoleList - An XmlListModel query must start with '/' or "//" Zapytanie XmlListModel nie może rozpoczynać się od "/" ani od "//" @@ -2738,17 +2192,14 @@ na QDial - QDial QDial - SpeedoMeter Miernik prędkości - SliderHandle Uchwyt suwaka @@ -2756,12 +2207,10 @@ na QDialog - What's This? Co to jest? - Done Zrobione @@ -2769,124 +2218,98 @@ na QDialogButtonBox - Abort Przerwij - Apply Zastosuj - &Save &Zachowaj - Cancel Anuluj - &Cancel &Anuluj - Close Zamknij - &Close &Zamknij - Close without Saving Zamknij bez zapisywania - Discard Odrzuć - Don't Save Nie zachowuj - Help Pomoc - Ignore Zignoruj - &No &Nie - N&o to All Ni&e dla wszystkich - - - OK OK - Open Otwórz - Reset Resetuj - Restore Defaults Przywróć ustawienia - Retry Ponów - Save Zachowaj - Save All Zachowaj wszystko - &Yes &Tak - Yes to &All Ta&k dla wszystkich - &OK &OK @@ -2894,28 +2317,23 @@ na QDirModel - Date Modified Data modyfikacji - Kind Match OS X Finder Typ - Name Nazwa - Size Rozmiar - Type All other platforms Rodzaj @@ -2924,17 +2342,14 @@ na QDockWidget - Close Zamknij - Dock Zadokuj - Float Uwolnij @@ -2942,12 +2357,10 @@ na QDoubleSpinBox - More Więcej - Less Mniej @@ -2955,27 +2368,22 @@ na QErrorMessage - Debug Message: Komunikat dla programisty: - Fatal Error: Błąd krytyczny: - &OK &OK - &Show this message again &Pokaż ten komunikat ponownie - Warning: Ostrzeżenie: @@ -2983,38 +2391,30 @@ na QFile - - Destination file exists Plik wyjściowy już istnieje - Will not rename sequential file using block copy Nie można zmienić nazwy pliku sekwencyjnego używając kopiowania blokowego - Cannot remove source file Nie można usunąć oryginalnego pliku - Cannot open %1 for input Nie można otworzyć pliku wejściowego %1 - Cannot open for output Nie można otworzyć pliku wyjściowego - Failure to write block Nie można zapisać bloku - Cannot create %1 for output Nie można utworzyć pliku wyjściowego %1 @@ -3022,22 +2422,18 @@ na QFileDialog - %1 already exists. Do you want to replace it? %1 już istnieje. Czy chcesz zamienić? - '%1' is write protected. Do you want to delete it anyway? '%1' jest zabezpieczony przed zapisem. Czy na pewno chcesz go skasować? - - %1 Directory not found. Please verify the correct directory name was given. @@ -3046,7 +2442,6 @@ Katalog nie znaleziony. Sprawdź podaną nazwę katalogu. - %1 File not found. Please verify the correct file name was given. @@ -3055,237 +2450,178 @@ Plik nie znaleziony. Proszę o sprawdzenie podanej nazwy pliku. - Are sure you want to delete '%1'? Czy na pewno chcesz skasować '%1'? - Recent Places Ostatnie miejsca - - Back Powrót - Could not delete directory. Nie można skasować katalogu. - &Delete &Skasuj - - Detail View Szczegóły - Directories Katalogi - - Directory: Katalog: - Drive Urządzenie - - File Plik - File Folder Match Windows Explorer Katalog - Folder All other platforms Katalog - Alias Mac OS X Finder Alias - Shortcut All other platforms Skrót - - Files of type: Pliki rodzaju: - - List View Lista - My Computer Mój komputer - - - &Open &Otwórz - - Parent Directory Katalog wyżej - &Rename &Zmień nazwę - - &Save &Zachowaj - Show &hidden files Pokaż &ukryte pliki - Unknown Nieznany - Open Otwórz - Save As Zachowaj jako - Find Directory Znajdź katalog - All Files (*.*) Wszystkie pliki (*.*) - Show Pokaż - - Forward Do przodu - New Folder Nowy katalog - &New Folder &Nowy katalog - - &Choose &Wybierz - Remove Usuń - - All Files (*) Wszystkie pliki (*) - - File &name: Nazwa &pliku: - - Look in: Szukaj w: - - Create New Folder Utwórz nowy katalog - Go back Wróć - Go forward Przejdź dalej - Go to the parent directory Przejdź do katalogu wyżej - Create a New Folder Utwórz nowy katalog - Change to list view mode Pokaż listę - Change to detail view mode Pokaż szczegóły @@ -3293,83 +2629,64 @@ Proszę o sprawdzenie podanej nazwy pliku. QFileSystemModel - - %1 TB %1 TB - - %1 GB %1 GB - - %1 MB %1 MB - - %1 KB %1 KB - %1 bytes %1 bajtów - Invalid filename Niepoprawna nazwa pliku - <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. <b>Nazwa "%1" nie może zostać użyta.</b><p>Spróbuj użyć nowej nazwy z mniejszą liczbą znaków lub bez znaków przystankowych. - Name Nazwa - Size Rozmiar - Kind Match OS X Finder Typ - Type All other platforms Rodzaj - Date Modified Data modyfikacji - My Computer Mój komputer - Computer Komputer - %1 byte(s) %1 bajt(ów) @@ -3377,223 +2694,172 @@ Proszę o sprawdzenie podanej nazwy pliku. QFontDatabase - - Normal Normalny - - - Bold Pogrubiony - - Demi Bold Na wpół pogrubiony - - - Black it's about font weight Bardzo gruby - Demi Na wpół - - Light it's about font weight Cienki - - Italic Kursywa - - Oblique Pochyły - Any Każdy - Latin Łaciński - Greek Grecki - Cyrillic Cyrylica - Armenian Ormiański - Hebrew Hebrajski - Arabic Arabski - Syriac Syryjski - Thaana Thaana - Devanagari Devanagari - Bengali Bengalski - Gurmukhi Gurmukhi - Gujarati Gudżaracki - Oriya Orija - Tamil Tamilski - Telugu Telugu - Kannada Kannada - Malayalam Malajalam - Sinhala Syngaleski - Thai Tajski - Lao Laotański - Tibetan Tybetański - Myanmar Birmański - Georgian Gruziński - Khmer Khmerski - Simplified Chinese Uproszczony chiński - Traditional Chinese Tradycyjny chiński - Japanese Japoński - Korean Koreański - Vietnamese Wietnamski - Symbol Symboliczny - Ogham Ogamiczny - Runic Runiczny - N'Ko N'Ko @@ -3601,47 +2867,38 @@ Proszę o sprawdzenie podanej nazwy pliku. QFontDialog - Effects Efekty - &Font &Czcionka - Font st&yle St&yl czcionki - Sample Przykład - Select Font Wybierz czcionkę - &Size &Rozmiar - Stri&keout Pr&zekreślenie - &Underline &Podkreślenie - Wr&iting System Sys&tem pisania @@ -3649,143 +2906,102 @@ Proszę o sprawdzenie podanej nazwy pliku. QFtp - - Changing directory failed: %1 Zmiana katalogu zakończona błędem: %1 - Connected to host Podłączony do hosta - - - Connected to host %1 Podłączony do hosta %1 - - Connecting to host failed: %1 Podłączanie do hosta zakończone błędem: %1 - - - Connection closed Połączenie zamknięte - - Connection refused for data connection Połączenie do przesyłu danych odrzucone - - Connection refused to host %1 Połączenie do hosta %1 odrzucone - Connection to %1 closed Połączenie do %1 zakończone - - Creating directory failed: %1 Tworzenie katalogu zakończone błędem: %1 - - Downloading file failed: %1 Pobieranie pliku zakończone błędem: %1 - Host %1 found Host %1 znaleziony - - Host %1 not found Host %1 nie znaleziony - Host found Host znaleziony - - Listing directory failed: %1 Listowanie katalogu zakończone błędem: %1 - - Login failed: %1 Logowanie zakończone błędem: %1 - - Not connected Nie podłączony - Connection timed out to host %1 Przekroczony czas połączenia do hosta %1 - - Removing directory failed: %1 Usuwanie katalogu zakończone błędem: %1 - - Removing file failed: %1 Usuwanie pliku zakończone błędem: %1 - - - - Unknown error Nieznany błąd - - Uploading file failed: %1 Wysyłanie pliku zakończone błędem: @@ -3795,12 +3011,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QHostInfo - Unknown error Nieznany błąd - No host name given Nie podano nazwy hosta @@ -3808,37 +3022,22 @@ Proszę o sprawdzenie podanej nazwy pliku. QHostInfoAgent - - - - Host not found Host nie znaleziony - - - - Unknown address type Nieznany typ adresu - - - Unknown error Nieznany błąd - - No host name given Nie podano nazwy hosta - - Invalid hostname Niepoprawna nazwa hosta @@ -3846,153 +3045,110 @@ Proszę o sprawdzenie podanej nazwy pliku. QHttp - Connected to host Podłączony do hosta - Connected to host %1 Podłączony do hosta %1 - - Connection closed Połączenie zakończone - - Connection refused Połączenie odrzucone - Connection to %1 closed Połączenie do %1 zamknięte - Host %1 found Host %1 znaleziony - - - Host %1 not found Host %1 nie znaleziony - Host found Host znaleziony - - HTTP request failed Komenda HTTP zakończona błędem - - - - Invalid HTTP chunked body Niepoprawne ciało HTTP - - Invalid HTTP response header Niepoprawny nagłówek odpowiedzi HTTP - - No server set to connect to Brak serwera do podłączenia - - Request aborted Komenda przerwana - - Server closed connection unexpectedly Serwer nieoczekiwanie zakończył połączenie - - - - Unknown error Nieznany błąd - HTTPS connection requested but SSL support not compiled in Zażądano połączenia HTTPS lecz obsługa SSL nie jest wkompilowana - - Wrong content length Błędna długość zawartości - Unknown authentication method Nieznana metoda autoryzacji - Proxy authentication required Wymagana autoryzacja pośrednika - Authentication required Wymagana autoryzacja - Error writing response to device Błąd zapisywania odpowiedzi do urządzenia - Proxy requires authentication Pośrednik wymaga autoryzacji - Host requires authentication Host wymaga autoryzacji - Data corrupted Dane uszkodzone - Unknown protocol specified Podano nieznany protokół - SSL handshake failed Nawiązanie sesji SSL zakończone błędem - Connection refused (or timed out) Połączenie odrzucone (przekroczony czas połączenia) @@ -4000,47 +3156,38 @@ Proszę o sprawdzenie podanej nazwy pliku. QHttpSocketEngine - Did not receive HTTP response from proxy Nie odebrano odpowiedzi HTTP od pośrednika - Error parsing authentication request from proxy Błąd parsowania żądania autoryzacji od pośrednika - Authentication required Wymagana autoryzacja - Proxy denied connection Pośrednik odmówił połączenia - Error communicating with HTTP proxy Błąd podczas komunikacji z pośrednikiem HTTP - Proxy server not found Nie znaleziono serwera pośredniczącego - Proxy connection refused Odmowa połączenia z pośrednikiem - Proxy server connection timed out Przekroczony czas połączenia do serwera pośredniczącego - Proxy connection closed prematurely Przedwczesne zakończenie połączenia z pośrednikiem @@ -4048,22 +3195,18 @@ Proszę o sprawdzenie podanej nazwy pliku. QIBaseDriver - Could not start transaction Nie można rozpocząć transakcji - Error opening database Błąd otwierania bazy danych - Unable to commit transaction Nie można dokonać transakcji - Unable to rollback transaction Nie można wycofać transakcji @@ -4071,89 +3214,70 @@ Proszę o sprawdzenie podanej nazwy pliku. QIBaseResult - Could not allocate statement Nie można zaallokować polecenia - - Could not describe input statement Nie można opisać polecenia wejściowego - Could not describe statement Nie można opisać polecenia - Could not fetch next item Nie można pobrać kolejnego elementu - - Could not find array Nie można odnaleźć tablicy - Could not get array data Nie można pobrać danych z tablicy - Could not get query info Nie można pobrać informacji o zapytaniu - Could not get statement info Nie można pobrać informacji o poleceniu - Could not prepare statement Nie można przygotować polecenia - Could not start transaction Nie można rozpocząć transakcji - Unable to close statement Nie można zamknąć polecenia - Unable to commit transaction Nie można dokonać transakcji - Unable to create BLOB Nie można utworzyć obiektu typu BLOB - Unable to execute query Nie można wykonać zapytania - Unable to open BLOB Nie można otworzyć obiektu typu BLOB - Unable to read BLOB Nie można odczytać obiektu typu BLOB - Unable to write BLOB Nie można zapisać obiektu typu BLOB @@ -4161,27 +3285,22 @@ Proszę o sprawdzenie podanej nazwy pliku. QIODevice - No space left on device Brak wolnego miejsca na urządzeniu - No such file or directory Brak pliku lub katalogu - Permission denied Brak uprawnień - Too many open files Zbyt wiele otwartych plików - Unknown error Nieznany błąd @@ -4189,32 +3308,26 @@ Proszę o sprawdzenie podanej nazwy pliku. QInputContext - Mac OS X input method Metoda wprowadzania Mac OS X - Windows input method Metoda wprowadzania Windows - XIM XIM - FEP FEP - XIM input method Metoda wprowadzania XIM - S60 FEP input method Metoda wprowadzania S60 FEP @@ -4222,7 +3335,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QInputDialog - Enter a value: Podaj wartość: @@ -4230,67 +3342,50 @@ Proszę o sprawdzenie podanej nazwy pliku. QLibrary - Could not mmap '%1': %2 Nie można wykonać przypisania '%1': %2 - Could not unmap '%1': %2 Nie można usunąć przypisania '%1': %2 - Plugin verification data mismatch in '%1' Niezgodność podczas weryfikacji danych we wtyczce "%1" - The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] Wtyczka '%1' używa niepoprawnej wersji biblioteki QT. (%2.%3.%4) [%5] - The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" Wtyczka '%1' używa niepoprawnej wersji biblioteki QT. Oczekiwano klucza "%2", uzyskano "%3" - Unknown error Nieznany błąd - - - The shared library was not found. Biblioteka współdzielona niedostępna. - The file '%1' is not a valid Qt plugin. Plik "%1" nie jest poprawną wtyczką Qt. - The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) Wtyczka "%1" używa innej wersji biblioteki Qt. (Nie można łączyć bibliotek zwykłych i debugowych.) - - Cannot load library %1: %2 Nie można załadować biblioteki %1: %2 - - Cannot unload library %1: %2 Nie można zwolnić biblioteki %1: %2 - - Cannot resolve symbol "%1" in %2: %3 Nie można zidentyfikować symbolu "%1" w %2: %3 @@ -4298,37 +3393,30 @@ Proszę o sprawdzenie podanej nazwy pliku. QLineEdit - &Copy S&kopiuj - Cu&t W&ytnij - Delete Skasuj - &Paste &Wklej - &Redo &Przywróć - Select All Zaznacz wszystko - &Undo &Cofnij @@ -4336,23 +3424,18 @@ Proszę o sprawdzenie podanej nazwy pliku. QLocalServer - - %1: Name error %1: Błąd nazwy - %1: Permission denied %1: Brak uprawnień - %1: Address in use %1: Adres użyty - %1: Unknown error %2 %1: Nieznany błąd %2 @@ -4360,70 +3443,46 @@ Proszę o sprawdzenie podanej nazwy pliku. QLocalSocket - - %1: Connection refused %1: Odmowa połączenia - - %1: Remote closed %1: Drugi koniec odłączony - - - - %1: Invalid name %1: Niepoprawna nazwa - - %1: Socket access error %1: Błąd dostępu do gniazda - - %1: Socket resource error %1: Błąd zasobów gniazda - - %1: Socket operation timed out %1: Przekroczony czas operacji gniazda - - %1: Datagram too large %1: Za duży datagram - - - %1: Connection error %1: Błąd połączenia - - %1: The socket operation is not supported %1: Operacja nie jest obsługiwana przez gniazdo - %1: Unknown error %1: Nieznany błąd - - %1: Unknown error %2 %1: Nieznany błąd %2 @@ -4431,27 +3490,22 @@ Proszę o sprawdzenie podanej nazwy pliku. QMYSQLDriver - Unable to begin transaction Nie można rozpocząć transakcji - Unable to commit transaction Nie można potwierdzić transakcji - Unable to connect Nie można nawiązać połączenia - Unable to open database ' Nie można otworzyć bazy danych ' - Unable to rollback transaction Nie można wycofać transakcji @@ -4459,60 +3513,46 @@ Proszę o sprawdzenie podanej nazwy pliku. QMYSQLResult - - Unable to bind outvalues Nie można powiązać wartości zewnętrznych - Unable to bind value Nie można powiązać wartości - Unable to execute query Nie można wykonać zapytania - Unable to execute statement Nie można wykonać polecenia - - Unable to fetch data Nie można pobrać danych - - Unable to prepare statement Nie można przygotować polecenia - Unable to reset statement Nie można skasować polecenia - Unable to store result Nie można zachować wyników - Unable to store statement results Nie można zachować wyników polecenia - Unable to execute next query Nie można wykonać następnego zapytania - Unable to store next result Nie można zachować następnego wyniku @@ -4520,7 +3560,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QMdiArea - (Untitled) (Nienazwany) @@ -4528,92 +3567,74 @@ Proszę o sprawdzenie podanej nazwy pliku. QMdiSubWindow - %1 - [%2] %1 - [%2] - Close Zamknij - Minimize Zminimalizuj - Restore Down Przywróć pod spód - &Restore &Przywróć - &Move Prze&nieś - &Size &Rozmiar - Mi&nimize Zmi&nimalizuj - Ma&ximize Zma&ksymalizuj - Stay on &Top Pozostaw na &wierzchu - &Close &Zamknij - Maximize Zmaksymalizuj - Unshade Rozwiń - Shade Zwiń - Restore Przywróć - Help Pomoc - Menu Menu - - [%1] - [%1] @@ -4621,21 +3642,14 @@ Proszę o sprawdzenie podanej nazwy pliku. QMenu - - Close Zamknij - - - Execute Wykonaj - - Open Otwórz @@ -4643,7 +3657,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QMenuBar - Actions Akcje @@ -4651,40 +3664,30 @@ Proszę o sprawdzenie podanej nazwy pliku. QMessageBox - About Qt Informacje o Qt - Help Pomoc - Hide Details... Ukryj szczegóły... - - - - OK OK - <h3>About Qt</h3><p>This program uses Qt version %1.</p> <h3>Informacje o Qt</h3><p> Ten program używa Qt w wersji %1.</p> - <p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p><p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://qt.nokia.com/">qt.nokia.com</a> for more information.</p> <p>Qt jest zestawem narzędzi programistycznych dedykowanym dla języka C++. Służy on do opracowywania aplikacji międzyplatformowych.</p><p>Qt umożliwia jednoźródłowe przenoszenie między systemami MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux i wszystkimi głównymi wersjami komercyjnymi systemu Unix. Środowisko Qt jest dostępne dla urządzeń wbudowanych opartych na systemie Linux ( Qt dla wbudowanego systemu Linux) oraz Windows CE.</p><p>Zestaw Qt jest dostępny w trzech różnych opcjach licencjonowania stworzonych w celu zadowolenia naszych różnych użytkowników.</p><p>Qt podlegający licencji zgodnie z naszą komercyjną umową licencyjną jest odpowiedni do opracowywania oprogramowań własnościowych/komercyjnych, dzięki czemu kod źródłowy nie jest udostępniany osobom trzecim. W przeciwnym razie zestaw Qt jest niezgodny z warunkami licencji GNU LGPL w wersji 2.1 lub GNU GPL w wersji 3.0.</p><p>Środowisko Qt objęte licencją GNU LGPL w wersji 2.1 nadaje się do tworzenia aplikacji Qt (własnościowych lub oprogramowań otwartych) tylko wtedy, gdy przestrzegane są warunki licencji GNU LGPL w wersji 2.1.</p><p>Qt objęty Powszechną Licencją Publiczną GNU w wersji 3.0 jest odpowiedni do opracowywania aplikacji QT, aby móc korzystać z aplikacji w połączeniu z oprogramowaniem podlegającym warunkom licencji GNU GPL w wersji 3.0 lub aby przestrzegać warunków licencji GNU GPL w wersji 3.0.</p><p>Więcej informacji na temat licencji Qt można znaleźć na stronie <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a>.</p><p>Copyright (C) 2010 Nokia Corporation i/lub oddziały firmy.</p><p>Qt jest produktem firmy Nokia. Dodatkowe informacje znajdują się na stronie <a href="http://qt.nokia.com/">qt.nokia.com</a> </p> - Show Details... Pokaż szczegóły... @@ -4692,7 +3695,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QMultiInputContext - Select IM Wybierz metodę wprowadzania @@ -4700,12 +3702,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QMultiInputContextPlugin - Multiple input method switcher Przełącznik metody wprowadzania - Multiple input method switcher that uses the context menu of the text widgets Przełącznik metody wprowadzania, który w widżetach tekstowych używa podręcznego menu @@ -4713,132 +3713,106 @@ Proszę o sprawdzenie podanej nazwy pliku. QNativeSocketEngine - Another socket is already listening on the same port Inne gniazdo nasłuchuje już na tym porcie - Attempt to use IPv6 socket on a platform with no IPv6 support Próba użycia IPv6 na platformie bez obsługi IPv6 - Connection refused Połączenie odrzucone - Connection timed out Przekroczony czas połączenia - Datagram was too large to send Datagram za długi do wysłania - Host unreachable Komputer niedostępny - Invalid socket descriptor Niepoprawny opis gniazda - Network error Błąd sieci - Network operation timed out Przekroczony czas operacji sieciowej - Network unreachable Sieć niedostępna - Operation on non-socket Nieprawidłowa operacja na gnieździe - Out of resources Zasoby wyczerpane - Permission denied Brak uprawnień - Protocol type not supported Nieobsługiwany typ protokołu - The address is not available Adres nie jest dostępny - The address is protected Adres jest zabezpieczony - The bound address is already in use Adres jest aktualnie w użyciu - The remote host closed the connection Zdalny host zakończył połączenie - Unable to initialize broadcast socket Nie można uruchomić gniazda rozsyłającego - Unable to initialize non-blocking socket Nie można uruchomić gniazda w nieblokującym trybie - Unable to receive a message Nie można odebrać wiadomości - Unable to send a message Nie można wysłać wiadomości - Unable to write Nie można zapisać - Unknown error Nieznany błąd - Unsupported socket operation Nieobsługiwana operacja gniazda - The proxy type is invalid for this operation Typ pośrednika nie jest poprawny dla tej operacji @@ -4846,7 +3820,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessCacheBackend - Error opening %1 Błąd otwierania %1 @@ -4854,12 +3827,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessDataBackend - Operation not supported on %1 Operacja nieobsługiwana na %1 - Invalid URI: %1 Niepoprawny URI: %1 @@ -4867,17 +3838,14 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessDebugPipeBackend - Write error writing to %1: %2 Błąd w trakcie zapisywania do %1: %2 - Socket error on %1: %2 Błąd gniazda na %1: %2 - Remote host closed the connection prematurely on %1 Zdalny host przedwcześnie zakończył połączenie na %1 @@ -4885,30 +3853,22 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessFileBackend - - Request for opening non-local file %1 Żądanie otwarcia zdalnego pliku %1 - - Error opening %1: %2 Błąd otwierania %1: %2 - Write error writing to %1: %2 Błąd w trakcie zapisywania do %1: %2 - - Cannot open %1: Path is a directory Nie można otworzyć %1: Ścieżka jest katalogiem - Read error reading from %1: %2 Błąd w trakcie czytania z %1: %2 @@ -4916,27 +3876,22 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessFtpBackend - No suitable proxy found Nie odnaleziono odpowiedniego pośrednika - Cannot open %1: is a directory Nie można otworzyć %1: jest to katalog - Logging in to %1 failed: authentication required Błąd podczas logowania do %1: wymagana autoryzacja - Error while downloading %1: %2 Błąd podczas pobierania %1: %2 - Error while uploading %1: %2 Błąd podczas wysyłania %1: %2 @@ -4944,7 +3899,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessHttpBackend - No suitable proxy found Nie odnaleziono odpowiedniego pośrednika @@ -4952,7 +3906,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkAccessManager - Network access is disabled. Dostęp do sieci wyłączony. @@ -4960,22 +3913,18 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkReply - Error downloading %1 - server replied: %2 Błąd podczas pobierania %1 - odpowiedź serwera: %2 - Protocol "%1" is unknown Protokół "%1" nie jest znany - Network session error. Błąd sesji sieciowej. - Temporary network failure. Chwilowy błąd w sieci. @@ -4983,8 +3932,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkReplyImpl - - Operation canceled Operacja anulowana @@ -4992,7 +3939,6 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkSession - Invalid configuration. Niepoprawna konfiguracja. @@ -5000,47 +3946,34 @@ Proszę o sprawdzenie podanej nazwy pliku. QNetworkSessionPrivateImpl - Roaming error Błąd roamingu - Session aborted by user or system Sesja przerwana przez użytkownika lub system - Unidentified Error Niezidentyfikowany błąd - - Unknown session error. Nieznany błąd sesji. - - The session was aborted by the user or system. Sesja została przerwana przez użytkownika lub system. - - The requested operation is not supported by the system. Zażądana operacja nie jest obsługiwana przez system. - - The specified configuration cannot be used. Podana konfiguracja nie może być użyta. - - Roaming was aborted or is not possible. Roaming przerwany albo niemożliwy. @@ -5048,28 +3981,23 @@ Proszę o sprawdzenie podanej nazwy pliku. QOCIDriver - Unable to initialize QOCIDriver Nie można dokonać inicjalizacji - Unable to logon Nie można się zalogować - Unable to begin transaction Nie można rozpocząć transakcji - Unable to commit transaction Nie można dokonać transakcji - Unable to rollback transaction Nie można wycofać transakcji @@ -5077,44 +4005,34 @@ Proszę o sprawdzenie podanej nazwy pliku. QOCIResult - - - Unable to bind column for batch execute Nie można powiązać kolumny dla wykonania zestawu poleceń - Unable to execute batch statement Nie można wykonać polecenia wsadowego - Unable to goto next Nie można przejść do kolejnego wiersza danych - Unable to alloc statement Nie można przydzielić miejsca na polecenie - Unable to prepare statement Nie można przygotować polecenia - Unable to get statement type Nie można pobrać typu polecenia - Unable to bind value Nie można powiązać wartości - Unable to execute statement Nie można wykonać polecenia @@ -5122,32 +4040,26 @@ Proszę o sprawdzenie podanej nazwy pliku. QODBCDriver - Unable to commit transaction Nie można potwierdzić transakcji - Unable to connect Nie można nawiązać połączenia - Unable to disable autocommit Nie można wyłączyć trybu automatycznego dokonywania transakcji - Unable to enable autocommit Nie można włączyć trybu automatycznego dokonywania transakcji - Unable to rollback transaction Nie można wycofać transakcji - Unable to connect - Driver doesn't support all functionality required Nie można nawiązać połączenia - sterownik nie obsługuje całej potrzebnej funkcjonalności @@ -5155,51 +4067,38 @@ Proszę o sprawdzenie podanej nazwy pliku. QODBCResult - - QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration QODBCResult::reset: Nie można ustawić 'SQL_CURSOR_STATIC' jako atrybutu polecenia. Proszę sprawdzić konfiguracje sterownika ODBC - Unable to bind variable Nie można powiązać zmiennej - - Unable to execute statement Nie można wykonać polecenia - Unable to fetch next Nie można pobrać kolejnych danych - Unable to prepare statement Nie można przygotować polecenia - - - Unable to fetch last Nie można pobrać ostatnich danych - Unable to fetch Nie można pobrać - Unable to fetch first Nie można pobrać pierwszych danych - Unable to fetch previous Nie można pobrać poprzednich danych @@ -5207,19 +4106,14 @@ Proszę o sprawdzenie podanej nazwy pliku. QObject - - PulseAudio Sound Server Serwer dźwięku PulseAudio - "%1" duplicates a previous role name and will be disabled. - - invalid query: "%1" Niepoprawne zapytanie: "%1" @@ -5227,12 +4121,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QPPDOptionsModel - Name Nazwa - Value Wartość @@ -5240,32 +4132,26 @@ Proszę o sprawdzenie podanej nazwy pliku. QPSQLDriver - Could not begin transaction Nie można rozpocząć transakcji - Could not commit transaction Nie można potwierdzić transakcji - Could not rollback transaction Nie można wycofać transakcji - Unable to connect Nie można nawiązać połączenia - Unable to subscribe Nie można wykonać subskrypcji - Unable to unsubscribe Nie można zrezygnować z subskrypcji @@ -5273,12 +4159,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QPSQLResult - Unable to create query Nie można utworzyć zapytania - Unable to prepare statement Nie można przygotować polecenia @@ -5286,102 +4170,82 @@ Proszę o sprawdzenie podanej nazwy pliku. QPageSetupWidget - Centimeters (cm) Centymetry (cm) - Millimeters (mm) Milimetry (mm) - Inches (in) Cale (in) - Points (pt) Punkty (pt) - Form Formularz - Paper Papier - Page size: Rozmiar strony: - Width: Szerokość: - Height: Wysokość: - Paper source: Źródło papieru: - Orientation Położenie - Portrait Portret - Landscape Pejzaż - Reverse landscape Odwrócony pejzaż - Reverse portrait Odwrócony portret - Margins Marginesy - top margin Górny margines - left margin Lewy margines - right margin Prawy margines - bottom margin Dolny margines @@ -5389,12 +4253,10 @@ Proszę o sprawdzenie podanej nazwy pliku. QPluginLoader - Unknown error Nieznany błąd - The plugin was not loaded. Wtyczka nie została załadowana. @@ -5402,433 +4264,344 @@ Proszę o sprawdzenie podanej nazwy pliku. QPrintDialog - A0 (841 x 1189 mm) A0 (841 x 1189 mm) - A1 (594 x 841 mm) A1 (594 x 841 mm) - A2 (420 x 594 mm) A2 (420 x 594 mm) - A3 (297 x 420 mm) A3 (297 x 420 mm) - A4 (210 x 297 mm, 8.26 x 11.7 inches) A4 (210 x 297 mm, 8.26 x 11.7 cali) - A5 (148 x 210 mm) A5 (148 x 210 mm) - A6 (105 x 148 mm) A6 (105 x 148 mm) - A7 (74 x 105 mm) A7 (74 x 105 mm) - A8 (52 x 74 mm) A8 (52 x 74 mm) - A9 (37 x 52 mm) A9 (37 x 52 mm) - Print current page Wydrukuj bieżącą stronę - - Aliases: %1 Aliasy: %1 - B0 (1000 x 1414 mm) B0 (1000 x 1414 mm) - B1 (707 x 1000 mm) B1 (707 x 1000 mm) - B10 (31 x 44 mm) B10 (31 x 44 mm) - B2 (500 x 707 mm) B2 (500 x 707 mm) - B3 (353 x 500 mm) B3 (353 x 500 mm) - B4 (250 x 353 mm) B4 (250 x 353 mm) - B5 (176 x 250 mm, 6.93 x 9.84 inches) B5 (176 x 250 mm, 6.93 x 9.84 cali) - B6 (125 x 176 mm) B6 (125 x 176 mm) - B7 (88 x 125 mm) B7 (88 x 125 mm) - B8 (62 x 88 mm) B8 (62 x 88 mm) - B9 (44 x 62 mm) B9 (44 x 62 mm) - C5E (163 x 229 mm) C5E (163 x 229 mm) - DLE (110 x 220 mm) DLE (110 x 220 mm) - locally connected podłączony lokalnie - OK OK - Print all Drukuj wszystko - Print range Drukuj zakres - - unknown nieznany - Executive (7.5 x 10 inches, 191 x 254 mm) Executive (7.5 x 10 cali, 191 x 254 mm) - Folio (210 x 330 mm) Folio (210 x 330 mm) - Ledger (432 x 279 mm) Ledger (432 x 279 mm) - Legal (8.5 x 14 inches, 216 x 356 mm) Legal (8.5 x 14 cali, 216 x 356 mm) - Letter (8.5 x 11 inches, 216 x 279 mm) Letter (8.5 x 11 cali, 216 x 279 mm) - Tabloid (279 x 432 mm) Tabloid (279 x 432 mm) - US Common #10 Envelope (105 x 241 mm) US Common #10 Envelope (105 x 241 mm) - - - Print Drukowanie - Print To File ... Drukuj do pliku ... - File %1 is not writable. Please choose a different file name. Plik %1 jest plikiem tylko do odczytu. Proszę wybrać inną nazwę pliku. - %1 already exists. Do you want to overwrite it? %1 już istnieje. Czy chcesz nadpisać? - %1 is a directory. Please choose a different file name. %1 jest katalogiem. Proszę wybrać inną nazwę pliku. - File exists Plik istnieje - <qt>Do you want to overwrite it?</qt> <qt>Czy chcesz nadpisać?</qt> - Print selection Drukuj zaznaczone - A0 A0 - A1 A1 - A2 A2 - A3 A3 - A4 A4 - A5 A5 - A6 A6 - A7 A7 - A8 A8 - A9 A9 - B0 B0 - B1 B1 - B2 B2 - B3 B3 - B4 B4 - B5 B5 - B6 B6 - B7 B7 - B8 B8 - B9 B9 - B10 B10 - C5E C5E - DLE DLE - Executive Executive - Folio Folio - Ledger Ledger - Legal Legal - Letter Letter - Tabloid Tabloid - US Common #10 Envelope US Common #10 Envelope - Custom Niestandardowy - - &Options >> &Opcje >> - &Print Wy&drukuj - &Options << &Opcje << - Print to File (PDF) Drukuj do pliku (PDF) - Print to File (Postscript) Drukuj do pliku (Postscript) - Local file Plik lokalny - Write %1 file Zapisz %1 plik - The 'From' value cannot be greater than the 'To' value. Wartość "od" nie może być większa od wartości "do". @@ -5836,108 +4609,86 @@ Proszę wybrać inną nazwę pliku. QPrintPreviewDialog - %1% %1% - Print Preview Podgląd wydruku - Next page Następna strona - Previous page Poprzednia strona - First page Pierwsza strona - Last page Ostatnia strona - Fit width Dopasuj szerokość - Fit page Dopasuj stronę - Zoom in Powiększ - Zoom out Pomniejsz - Portrait Portret - Landscape Pejzaż - Show single page Pokaż pojedynczą stronę - Show facing pages Pokaż sąsiednie strony - Show overview of all pages Pokaż wszystkie strony - Print Wydrukuj - Page setup Ustawienia strony - Close Zamknij - Export to PDF Wyeksportuj do PDF - Export to PostScript Wyeksportuj do PostScript - - Page Setup Ustawienia strony @@ -5945,17 +4696,14 @@ Proszę wybrać inną nazwę pliku. QPrintPropertiesWidget - Form Forma - Page Strona - Advanced Zaawansowane @@ -5963,102 +4711,82 @@ Proszę wybrać inną nazwę pliku. QPrintSettingsOutput - Form Forma - Copies Liczba kopii - Print range Zakres wydruku - Print all Drukuj wszystko - Pages from Strony od - to do - Selection Wybrane strony - Output Settings Ustawienia wyjściowe - Copies: Kopie: - Collate Parami - Reverse Odwróć - Options Opcje - Color Mode Tryb koloru - Color Kolor - Grayscale Skala szarości - Duplex Printing Drukowanie dupleksowe - None Brak - Long side Długa strona - Short side Krótka strona - Current Page Bieżąca strona @@ -6066,47 +4794,38 @@ Proszę wybrać inną nazwę pliku. QPrintWidget - Form Forma - Printer Drukarka - &Name: &Nazwa: - P&roperties &Właściwości - Location: Położenie: - Preview Podgląd - Type: Typ: - Output &file: &Plik wyjściowy: - ... ... @@ -6114,62 +4833,38 @@ Proszę wybrać inną nazwę pliku. QProcess - - Could not open input redirection for reading Nie można otworzyć wejściowego przekierowania do odczytu - - Could not open output redirection for writing Nie można otworzyć wyjściowego przekierowania do zapisu - Resource error (fork failure): %1 Błąd zasobów (błąd forkowania): %1 - - - - - - - - - Process operation timed out Przekroczony czas operacji procesu - - - - Error reading from process Błąd odczytywania z procesu - - - Error writing to process Błąd zapisywania do procesu - Process crashed Wystąpił błąd w procesie - proces zakończony - No program defined Nie zdefiniowano programu - Process failed to start: %1 Nie można rozpocząć procesu: %1 @@ -6177,7 +4872,6 @@ Proszę wybrać inną nazwę pliku. QProgressDialog - Cancel Anuluj @@ -6185,7 +4879,6 @@ Proszę wybrać inną nazwę pliku. QPushButton - Open Otwórz @@ -6193,7 +4886,6 @@ Proszę wybrać inną nazwę pliku. QRadioButton - Check Zaznacz @@ -6201,57 +4893,46 @@ Proszę wybrać inną nazwę pliku. QRegExp - bad char class syntax niepoprawna składnia klasy znakowej - bad lookahead syntax niepoprawna składnia "lookahead" - bad repetition syntax niepoprawna składnia powtórzenia - invalid interval Niepoprawny interwał - invalid category Niepoprawna kategoria - disabled feature used użyta funkcja została wyłączona - invalid octal value niepoprawna wartość ósemkowa - met internal limit napotkano wewnętrzne ograniczenie - missing left delim brakujący lewy separator - no error occurred nie pojawił się żaden błąd - unexpected end nieoczekiwany koniec @@ -6259,22 +4940,18 @@ Proszę wybrać inną nazwę pliku. QSQLite2Driver - Error opening database Błąd otwierania bazy danych - Unable to begin transaction Nie można rozpocząć transakcji - Unable to commit transaction Nie można dokonać transakcji - Unable to rollback transaction Nie można wycofać transakcji @@ -6282,12 +4959,10 @@ Proszę wybrać inną nazwę pliku. QSQLite2Result - Unable to execute statement Nie można wykonać polecenia - Unable to fetch results Nie można pobrać wyników @@ -6295,27 +4970,22 @@ Proszę wybrać inną nazwę pliku. QSQLiteDriver - Error closing database Błąd zamykania bazy danych - Error opening database Błąd otwierania bazy danych - Unable to begin transaction Nie można rozpocząć transakcji - Unable to commit transaction Nie można dokonać transakcji - Unable to rollback transaction Nie można wycofać transakcji @@ -6323,34 +4993,26 @@ Proszę wybrać inną nazwę pliku. QSQLiteResult - Parameter count mismatch Niezgodna liczba parametrów - Unable to bind parameters Nie można powiązać parametrów - Unable to execute statement Nie można wykonać polecenia - - - Unable to fetch row Nie można pobrać wiersza danych - Unable to reset statement Nie można skasować polecenia - No query Brak zapytania @@ -6358,32 +5020,26 @@ Proszę wybrać inną nazwę pliku. QScriptBreakpointsModel - ID Identyfikator - Location Położenie - Condition Warunek - Ignore-count Licznik pominięć - Single-shot - + Pojedyncze trafienie - Hit-count Licznik trafień @@ -6391,12 +5047,10 @@ Proszę wybrać inną nazwę pliku. QScriptBreakpointsWidget - New Nowy - Delete Skasuj @@ -6404,143 +5058,114 @@ Proszę wybrać inną nazwę pliku. QScriptDebugger - - Go to Line Przejdź do linii - Line: Linia: - Interrupt Przerwij - Shift+F5 Shift+F5 - Continue Kontynuuj - F5 F5 - Step Into Wskocz do wnętrza - F11 F11 - Step Over Przeskocz - F10 F10 - Step Out Wyskocz na zewnątrz - Shift+F11 Shift+F11 - Run to Cursor Uruchom do kursora - Ctrl+F10 Ctrl+F10 - Run to New Script Uruchom do nowego skryptu - Toggle Breakpoint Przełącz ustawienie pułapki - F9 F9 - Clear Debug Output Wyczyść wyjście debuggera - Clear Error Log Wyczyść log z błędami - Clear Console Wyczyść konsolę - &Find in Script... &Znajdź w skrypcie... - Ctrl+F Ctrl+F - Find &Next Znajdź &następne - F3 F3 - Find &Previous Znajdź &poprzednie - Shift+F3 Shift+F3 - Ctrl+G Ctrl+G - Debug Debuguj @@ -6548,32 +5173,26 @@ Proszę wybrać inną nazwę pliku. QScriptDebuggerCodeFinderWidget - Close Zamknij - Previous Poprzednie - Next Następne - Case Sensitive Uwzględniaj wielkość liter - Whole words Całe słowa - <img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Search wrapped <img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Przeszukano od początku @@ -6581,12 +5200,10 @@ Proszę wybrać inną nazwę pliku. QScriptDebuggerLocalsModel - Name Nazwa - Value Wartość @@ -6594,17 +5211,14 @@ Proszę wybrać inną nazwę pliku. QScriptDebuggerStackModel - Level Poziom - Name Nazwa - Location Położenie @@ -6612,22 +5226,18 @@ Proszę wybrać inną nazwę pliku. QScriptEdit - Toggle Breakpoint Przełącz ustawienie pułapki - Disable Breakpoint Wyłącz pułapkę - Enable Breakpoint Włącz pułapkę - Breakpoint Condition: Warunek dla pułapki: @@ -6635,52 +5245,42 @@ Proszę wybrać inną nazwę pliku. QScriptEngineDebugger - Loaded Scripts Załadowane skrypty - Breakpoints Pułapki - Stack Stos - Locals Zmienne lokalne - Console Konsola - Debug Output Wyjście debuggera - Error Log Log z błędami - Search Szukaj - View Widok - Qt Script Debugger Debugger Qt Script @@ -6688,7 +5288,6 @@ Proszę wybrać inną nazwę pliku. QScriptNewBreakpointWidget - Close Zamknij @@ -6696,84 +5295,66 @@ Proszę wybrać inną nazwę pliku. QScrollBar - Bottom W dół - Left edge Lewa krawędź - Line down Linia w dół - Line up Linia w górę - - Page down Strona w dół - Page left Strona w lewo - Page right Strona w prawo - - Page up Strona do góry - Position Pozycja - Right edge Prawa krawędź - Scroll down Przewiń w dół - Scroll here Przewiń tutaj - Scroll left Przewiń w lewo - Scroll right Przewiń w prawo - Scroll up Przewiń do góry - Top Do góry @@ -6781,111 +5362,78 @@ Proszę wybrać inną nazwę pliku. QSharedMemory - %1: create size is less then 0 %1: rozmiar przy tworzeniu mniejszy od 0 - - %1: unable to lock %1: nie można zablokować - %1: unable to unlock %1: nie można odblokować - - - %1: permission denied %1: brak uprawnień - - - %1: already exists %1: już istnieje - %1: doesn't exists %1: nie istnieje - - - %1: out of resources %1: zasoby wyczerpane - - - %1: unknown error %2 %1: nieznany błąd %2 - %1: key is empty %1: klucz jest pusty - %1: ftok failed %1: wystąpił błąd w funkcji ftok() - - - %1: unable to make key %1: nie można utworzyć klucza - - %1: doesn't exist %1: nie istnieje - %1: UNIX key file doesn't exist %1: unixowy plik z kluczem nie istnieje - %1: system-imposed size restrictions %1: ograniczenia rozmiarów narzucone przez system - %1: not attached %1: niedołączony - - %1: invalid size %1: niepoprawny rozmiar - - %1: key error %1: błąd klucza - %1: size query failed %1: zapytanie o rozmiar zakończone błędem - %1: unable to set key on lock %1: nie można ustawić klucza na zablokowanym segmencie pamięci współdzielonej @@ -6893,1107 +5441,884 @@ Proszę wybrać inną nazwę pliku. QShortcut - + + - - Alt Alt - Back Back - Backspace Backspace - Backtab Backtab - Bass Boost Wzmocnienie basów - Bass Down Basy w dół - Bass Up Basy w górę - Call Button to start a call (note: a separate button is used to end the call) Wywołaj - Caps Lock Caps Lock - CapsLock CapsLock - Media Pause Media player pause button - Toggle Media Play/Pause Media player button to toggle between playing and paused - Monitor Brightness Up Zwiększ jasność monitora - Monitor Brightness Down Zmniejsz jasność monitora - Keyboard Light On/Off Włącz/wyłącz podświetlenie klawiatury - Keyboard Brightness Up Zwiększ jasność klawiatury - Keyboard Brightness Down Zmniejsz jasność klawiatury - Power Off Wyłącz zasilanie - Wake Up Przebudzenie - Eject Wysuń - Screensaver Wygaszacz ekranu - WWW WWW - Sleep Uśpienie - LightBulb Żarówka - Shop Sklep - History Historia - Add Favorite Dodaj do ulubionych - Hot Links Popularne łącza - Adjust Brightness Ustaw jasność - Finance Finanse - Community Społeczność - Audio Rewind Przewijanie do tyłu - Back Forward - Application Left - Application Right - Book Książka - CD CD - Calculator Kalkulator - Clear Wyczyść - Clear Grab - Close Zamknij - Copy Skopiuj - Cut Wytnij - Display Wyświetlacz - DOS DOS - Documents Dokumenty - Spreadsheet Arkusz kalkulacyjny - Browser Przeglądarka - Game Gra - Go Przejdź - iTouch iTouch - Logoff Wyloguj - Market Rynek - Meeting Spotkanie - Keyboard Menu Menu klawiatury - Menu PB Menu PB - My Sites Moje strony - News Wiadomości - Home Office Biuro domowe - Option Opcje - Paste Wklej - Phone Telefon - Reply Odpowiedz - Reload Przeładuj - Rotate Windows Obróć okna - Rotation PB Obrót PB - Rotation KB Obrót KB - Save Zachowaj - Send Wyślij - Spellchecker Sprawdzanie pisowni - Split Screen Podziel ekran - Support Pomoc techniczna - Task Panel Panel zadań - Terminal Terminal - Tools Narzędzia - Travel Podróże - Video Wideo - Word Processor Procesor tekstu - XFer XFer - Zoom In Powiększ - Zoom Out Pomniejsz - Away - Messenger Komunikator - WebCam WebCam - Mail Forward Przekazanie poczty - Pictures Zdjęcia - Music Muzyka - Battery Bateria - Bluetooth Bluetooth - Wireless Bezprzewodowy - Ultra Wide Band Ultraszerokie pasmo - Audio Forward Przewijanie do przodu - Audio Repeat Powtarzanie - Audio Random Play Odtwarzanie losowe - Subtitle Napisy - Audio Cycle Track - Time Czas - View Widok - Top Menu Menu główne - Suspend Wstrzymanie - Hibernate Hibernacja - Context1 Kontekst1 - Context2 Kontekst2 - Context3 Kontekst3 - Context4 Kontekst4 - Toggle Call/Hangup Button that will hang up if we're in call, or make a call if we're not. - Voice Dial Button to trigger voice dialling - Last Number Redial Button to redial the last number called - Camera Shutter Button to trigger the camera shutter (take a picture) - Camera Focus Button to focus the camera - Kanji Kanji - Muhenkan Muhenkan - Henkan Henkan - Romaji Romaji - Hiragana Hiragana - Katakana Katakana - Hiragana Katakana Hiragana Katakana - Zenkaku Zenkaku - Hankaku Hankaku - Zenkaku Hankaku Zenkaku Hankaku - Touroku Touroku - Massyo Massyo - Kana Lock Kana Lock - Kana Shift Kana Shift - Eisu Shift Eisu Shift - Eisu toggle Eisu toggle - Code input Wprowadzanie kodu - Multiple Candidate Kandydat wielokrotny - Previous Candidate Poprzedni kandydat - Hangul Hangul - Hangul Start Hangul Start - Hangul End Hangul End - Hangul Hanja Hangul Hanja - Hangul Jamo Hangul Jamo - Hangul Romaja Hangul Romaja - Hangul Jeonja Hangul Jeonja - Hangul Banja Hangul Banja - Hangul PreHanja Hangul PreHanja - Hangul PostHanja Hangul PostHanja - Hangul Special Hangul Special - - Ctrl Ctrl - Del Del - Delete Delete - Down Dół - End End - Enter Enter - Esc Esc - Escape Escape - F%1 F%1 - Favorites Ulubione - Flip Odwróć - Forward Do przodu - Hangup Button to end a call (note: a separate button is used to start the call) Zawieś - Help Pomoc - Home Home - Home Page Strona startowa - Ins Ins - Insert Insert - Launch (0) Uruchom (0) - Launch (1) Uruchom (1) - Launch (2) Uruchom (2) - Launch (3) Uruchom (3) - Launch (4) Uruchom (4) - Launch (5) Uruchom (5) - Launch (6) Uruchom (6) - Launch (7) Uruchom (7) - Launch (8) Uruchom (8) - Launch (9) Uruchom (9) - Launch (A) Uruchom (A) - Launch (B) Uruchom (B) - Launch (C) Uruchom (C) - Launch (D) Uruchom (D) - Launch (E) Uruchom (E) - Launch (F) Uruchom (F) - Launch Mail Uruchom program pocztowy - Launch Media Uruchom przeglądarkę mediów - Left Lewo - Media Next Następna ścieżka - Media Play Odtwarzaj - Media Previous Poprzednia ścieżka - Media Record Nagrywaj - Media Stop Zatrzymaj - Menu Menu - - Meta Meta - No Nie - Num Lock Num Lock - Number Lock Number Lock - NumLock NumLock - Open URL Otwórz adres - Page Down Strona do góry - Page Up Strona w dół - Pause Pauza - PgDown PgDown - PgUp PgUp - Print Wydrukuj - Print Screen Wydrukuj zawartość ekranu - Refresh Odśwież - Return Powrót - Right Prawo - Scroll Lock Scroll Lock - ScrollLock ScrollLock - Search Szukaj - - Select Wybierz - - Shift Shift - Space This and all following "incomprehensible" strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used. Spacja - Standby Tryb oczekiwania - Stop Zatrzymaj - SysReq SysReq - System Request Żądanie systemu - Tab Tabulator - Treble Down Soprany w dół - Treble Up Soprany w górę - Up Góra - Volume Down Przycisz - Volume Mute Wycisz - Volume Up Zrób głośniej - Yes Tak @@ -8001,27 +6326,22 @@ Proszę wybrać inną nazwę pliku. QSlider - Page down Strona w dół - Page left Strona w lewo - Page right Strona w prawo - Page up Strona do góry - Position Położenie @@ -8029,72 +6349,58 @@ Proszę wybrać inną nazwę pliku. QSocks5SocketEngine - Connection to proxy refused Odmowa połączenia z pośrednikiem - Connection to proxy closed prematurely Przedwczesne zakończenie połączenia z pośrednikiem - Proxy host not found Nie odnaleziono hosta pośredniczącego - Connection to proxy timed out Przekroczony czas połączenia do pośrednika - Proxy authentication failed Autoryzacja pośrednika zakończona błędem - Proxy authentication failed: %1 Autoryzacja pośrednika zakończona błędem: %1 - SOCKS version 5 protocol error Błąd protokołu SOCKS wersji 5 - General SOCKSv5 server failure Generalny błąd serwera SOCKS wersji 5 - Connection not allowed by SOCKSv5 server Połączenie niedozwolone przez serwer SOCKS wersji 5 - TTL expired TTL stracił ważność - SOCKSv5 command not supported Nieobsługiwana komenda SOCKS wersji 5 - Address type not supported Nieobsługiwany typ adresu - Unknown SOCKSv5 proxy error code 0x%1 Nieznany kod błędu (0x%1) pośrednika SOCKS wersji 5 - Network operation timed out Przekroczony czas operacji sieciowej @@ -8102,32 +6408,26 @@ Proszę wybrać inną nazwę pliku. QSoftKeyManager - Ok OK - Select Wybierz - Done Zrobione - Options Opcje - Cancel Anuluj - Exit Wyjście @@ -8135,12 +6435,10 @@ Proszę wybrać inną nazwę pliku. QSpinBox - Less Mniej - More Więcej @@ -8148,56 +6446,42 @@ Proszę wybrać inną nazwę pliku. QSql - Cancel Anuluj - Cancel your edits? Anulować zmiany? - Confirm Potwierdź - Delete Skasuj - Delete this record? Skasować ten rekord? - Insert Wstaw - - - No Nie - Save edits? Zachować zmiany? - Update Uaktualnij - - - Yes Tak @@ -8205,178 +6489,142 @@ Proszę wybrać inną nazwę pliku. QSslSocket - Unable to write data: %1 - Unable to decrypt data: %1 Nie można odszyfrować danych: %1 - - Error while reading: %1 Błąd podczas czytania: %1 - Error during SSL handshake: %1 Błąd podczas nawiązania sesji SSL: %1 - Error creating SSL context (%1) Błąd tworzenia kontekstu (%1) - Invalid or empty cipher list (%1) Niepoprawna lub pusta lista szyfrów (%1) - Private key does not certify public key, %1 Prywatny klucz nie uwiarygodnia publicznego, %1 - Error creating SSL session, %1 Błąd tworzenia sesji SSL, %1 - Error creating SSL session: %1 Błąd tworzenia sesji SSL: %1 - Cannot provide a certificate with no key, %1 Nie można dostarczyć certyfikatu bez klucza, %1 - Error loading local certificate, %1 Błąd ładowania lokalnego certyfikatu, %1 - Error loading private key, %1 Błąd ładowania prywatnego klucza, %1 - No error Brak błędu - The issuer certificate could not be found Nie można odnaleźć wydawcy certyfikatu - The certificate signature could not be decrypted Nie można odszyfrować podpisu certyfikatu - The public key in the certificate could not be read Nie można odczytać publicznego klucza w certyfikacie - The signature of the certificate is invalid Niepoprawny podpis certyfikatu - The certificate is not yet valid Certyfikat nie jest jeszcze ważny - The certificate has expired Certyfikat utracił ważność - The certificate's notBefore field contains an invalid time Pole "notBefore" certyfikatu zawiera niepoprawną datę - The certificate's notAfter field contains an invalid time Pole "notAfter" certyfikatu zawiera niepoprawną datę - The certificate is self-signed, and untrusted Niewiarygodny certyfikat z podpisem własnym - The root certificate of the certificate chain is self-signed, and untrusted Główny certyfikat łańcucha zaufania ma własny podpis i jest niewiarygodny - The issuer certificate of a locally looked up certificate could not be found Nie można odnaleźć certyfikatu wydawcy wyszukanego lokalnie certyfikatu - No certificates could be verified Nie można zweryfikować żadnych certyfikatów - One of the CA certificates is invalid Jeden z certyfikatów urzędu certyfikacji jest nieprawidłowy - The basicConstraints path length parameter has been exceeded Długość ścieżki określona w podstawowych warunkach ograniczających została przekroczona - The supplied certificate is unsuitable for this purpose Dostarczony certyfikat jest nieodpowiedni dla tego przeznaczenia - The root CA certificate is not trusted for this purpose Główny certyfikat urzędu certyfikacji nie jest wiarygodny dla tego przeznaczenia - The root CA certificate is marked to reject the specified purpose Główny certyfikat urzędu certyfikacji jest wyznaczony do odrzucania podanego przeznaczenia - The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate Certyfikat wydawcy obecnego kandydata został odrzucony, ponieważ nazwa podmiotu nie odpowiadała nazwie wydawcy obecnego certyfikatu - The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate Certyfikat wydawcy obecnego kandydata został odrzucony, ponieważ nazwa wydawcy i przedstawiony numer seryjny nie odpowiadały identyfikatorowi klucza urzędu certyfikacji obecnego certyfikatu - The peer did not present any certificate Element równorzędny nie przedstawił żadnego certyfikatu - The host name did not match any of the valid hosts for this certificate Nazwa hosta nie odpowiadała żadnemu z poprawnych hostów dla tego certyfikatu - Unknown error Nieznany błąd @@ -8384,22 +6632,18 @@ Proszę wybrać inną nazwę pliku. QStateMachine - Missing initial state in compound state '%1' Brak stanu początkowego w stanie złożonym "%1" - Missing default state in history state '%1' Brak domyślnego stanu w historycznym stanie "%1" - No common ancestor for targets and source of transition from state '%1' Brak wspólnego przodka dla stanów docelowych i stanu źródłowego w przejściu ze stanu "%1" - Unknown error Nieznany błąd @@ -8407,30 +6651,22 @@ Proszę wybrać inną nazwę pliku. QSystemSemaphore - - %1: out of resources %1: zasoby wyczerpane - - %1: permission denied %1: brak uprawnień - %1: already exists %1: już istnieje - %1: does not exist %1: nie istnieje - - %1: unknown error %2 %1: nieznany błąd %2 @@ -8438,12 +6674,10 @@ Proszę wybrać inną nazwę pliku. QTDSDriver - Unable to open connection Nie można otworzyć połączenia - Unable to use database Nie można użyć bazy danych @@ -8451,12 +6685,10 @@ Proszę wybrać inną nazwę pliku. QTabBar - Scroll Left Przewiń w lewo - Scroll Right Przewiń w prawo @@ -8464,7 +6696,6 @@ Proszę wybrać inną nazwę pliku. QTcpServer - Operation on socket is not supported Operacja na gnieździe nieobsługiwana @@ -8472,42 +6703,34 @@ Proszę wybrać inną nazwę pliku. QTextControl - &Copy S&kopiuj - Copy &Link Location Skopiuj &adres odsyłacza - Cu&t W&ytnij - Delete Skasuj - &Paste &Wklej - &Redo &Przywróć - Select All Zaznacz wszystko - &Undo &Cofnij @@ -8515,14 +6738,10 @@ Proszę wybrać inną nazwę pliku. QToolButton - - Open Otwórz - - Press Wciśnij @@ -8530,7 +6749,6 @@ Proszę wybrać inną nazwę pliku. QUdpSocket - This platform does not support IPv6 Ta platforma nie obsługuje IPv6 @@ -8538,12 +6756,10 @@ Proszę wybrać inną nazwę pliku. QUndoGroup - Redo Przywróć - Undo Cofnij @@ -8551,7 +6767,6 @@ Proszę wybrać inną nazwę pliku. QUndoModel - <empty> <pusty> @@ -8559,12 +6774,10 @@ Proszę wybrać inną nazwę pliku. QUndoStack - Redo Przywróć - Undo Cofnij @@ -8572,57 +6785,46 @@ Proszę wybrać inną nazwę pliku. QUnicodeControlCharacterMenu - Insert Unicode control character Wstaw znak kontroli Unicode - LRE Start of left-to-right embedding LRE Początek osadzania od lewej do prawej - LRM Left-to-right mark LRM znacznik od prawej do lewej - LRO Start of left-to-right override LRO Początek nadpisania od lewej do prawej - PDF Pop directional formatting PDF Formatowanie kierunkowe pop - RLE Start of right-to-left embedding RLE Początek osadzania od prawej do lewej - RLM Right-to-left mark RLM Znacznik od prawej do lewej - RLO Start of right-to-left override RLO Początek nadpisania od prawej do lewej - ZWJ Zero width joiner ZWJ Łącznik zerowej długości - ZWNJ Zero width non-joiner ZWNJ Rozdzielnik zerowej długości - ZWSP Zero width space ZWSP Przerwa zerowej długości @@ -8630,32 +6832,26 @@ Proszę wybrać inną nazwę pliku. QWebFrame - Request cancelled Prośba anulowana - Request blocked Prośba zablokowana - Cannot show URL Nie można pokazać URL - Frame load interrupted by policy change Ładowanie ramki przerwane przez zmianę strategii - Cannot show mimetype Nie można pokazać typu MIME - File does not exist Plik nie istnieje @@ -8663,621 +6859,515 @@ Proszę wybrać inną nazwę pliku. QWebPage - Submit default label for Submit buttons in forms on web pages Wyślij - Submit Submit (input element) alt text for <input> elements with no alt, title, or value Wyślij - Reset default label for Reset buttons in forms on web pages Wyczyść - Choose File title for file button used in HTML forms Wybierz plik - No file selected text to display in file button used in HTML forms when no file is selected Nie zaznaczono pliku - Open in New Window Open in New Window context menu item Otwórz w nowym oknie - Save Link... Download Linked File context menu item Zachowaj odsyłacz... - Copy Link Copy Link context menu item Skopiuj odsyłacz - Open Image Open Image in New Window context menu item Otwórz obrazek - Save Image Download Image context menu item Zachowaj obrazek - Copy Image Copy Link context menu item Skopiuj obrazek - Open Frame Open Frame in New Window context menu item Otwórz ramkę - Copy Copy context menu item Skopiuj - Go Back Back context menu item Wróć - Go Forward Forward context menu item Przejdź dalej - Stop Stop context menu item Zatrzymaj - Reload Reload context menu item Przeładuj - Cut Cut context menu item Wytnij - Paste Paste context menu item Wklej - No Guesses Found No Guesses Found context menu item Nie odnaleziono podpowiedzi - Ignore Ignore Spelling context menu item Zignoruj - Add To Dictionary Learn Spelling context menu item Dodaj do słownika - Search The Web Search The Web context menu item Wyszukaj w sieci - Look Up In Dictionary Look Up in Dictionary context menu item Poszukaj w słowniku - Open Link Open Link context menu item Otwórz odsyłacz - Ignore Ignore Grammar context menu item Zignoruj - Spelling Spelling and Grammar context sub-menu item Pisownia - Show Spelling and Grammar menu item title Pokaż pisownię i gramatykę - Hide Spelling and Grammar menu item title Schowaj pisownię i gramatykę - Check Spelling Check spelling context menu item Sprawdź pisownię - Check Spelling While Typing Check spelling while typing context menu item Sprawdzaj pisownię podczas pisania - Check Grammar With Spelling Check grammar with spelling context menu item Sprawdzaj gramatykę wraz z pisownią - Fonts Font context sub-menu item Czcionki - Bold Bold context menu item Pogrubiony - Italic Italic context menu item Kursywa - Underline Underline context menu item Podkreślenie - Outline Outline context menu item Kontur - Direction Writing direction context sub-menu item Kierunek - Text Direction Text direction context sub-menu item Kierunek tekstu - Default Default writing direction context menu item Domyślny - Missing Plug-in Label text to be used when a plug-in is missing Brakująca wtyczka - Loading... Media controller status message when the media is loading Ładowanie... - Live Broadcast Media controller status message when watching a live broadcast Transmisja na żywo - Audio Element Media controller element Element dźwiękowy - Video Element Media controller element Element wideo - Mute Button Media controller element Przycisk wyłączania głosu - Unmute Button Media controller element Przycisk włączania głosu - Play Button Media controller element Przycisk odtwarzania - Pause Button Media controller element Przycisk pauzy - Slider Media controller element Suwak - Slider Thumb Media controller element Uchwyt suwaka - Rewind Button Media controller element Przycisk przewijania - Return to Real-time Button Media controller element Przycisk powrotu do czasu rzeczywistego - Elapsed Time Media controller element Czas który upłynął - Remaining Time Media controller element Czas który pozostał - Status Display Media controller element Wyświetlacz stanu - Fullscreen Button Media controller element Przycisk trybu pełnoekranowego - Seek Forward Button Media controller element Przycisk przeszukiwania do przodu - Seek Back Button Media controller element Przycisk przeszukiwania do tyłu - Audio element playback controls and status display Media controller element Kontrolki odtwarzania dźwięku i wyświetlacz stanu - Video element playback controls and status display Media controller element Kontrolki odtwarzania wideo i wyświetlacz stanu - Mute audio tracks Media controller element Wyłącz ścieżkę dźwiękową - Unmute audio tracks Media controller element Włącz ścieżkę dźwiękową - Begin playback Media controller element Rozpocznij odtwarzanie - Pause playback Media controller element Zatrzymaj odtwarzanie - Movie time scrubber Media controller element Suwak czasu - Movie time scrubber thumb Media controller element Uchwyt suwaka czasu - Rewind movie Media controller element Przewiń film - Return streaming movie to real-time Media controller element Przywróć przesyłanie filmu do czasu rzeczywistego - Current movie time Media controller element Czas bieżącego filmu - Remaining movie time Media controller element Czas do końca filmu - Current movie status Media controller element Stan bieżącego filmu - Play movie in full-screen mode Media controller element Odtwarzaj film w trybie pełnoekranowym - Seek quickly back Media controller element Przeszukaj szybko do tyłu - Seek quickly forward Media controller element Przeszukaj szybko do przodu - Indefinite time Media time description Nieokreślony czas - %1 days %2 hours %3 minutes %4 seconds Media time description %1 dni %2 godzin %3 minut %4 sekund - %1 hours %2 minutes %3 seconds Media time description %1 godzin %2 minut %3 sekund - %1 minutes %2 seconds Media time description %1 minut %2 sekund - %1 seconds Media time description %1 sekund - Inspect Inspect Element context menu item Zwiedzaj - No recent searches Label for only item in menu that appears when clicking on the search field image, when no searches have been performed Brak ostatnich wyszukiwań - Recent searches label for first item in the menu that appears when clicking on the search field image, used as embedded menu title Ostatnie wyszukiwania - Clear recent searches menu item in Recent Searches menu that empties menu's contents Wyczyść ostatnie wyszukiwania - Unknown Unknown filesize FTP directory listing item Nieznany - Web Inspector - %2 Wizytator sieciowy - %2 - Redirection limit reached Osiągnięto limit przekierowań - Bad HTTP request Niepoprawna komenda HTTP - This is a searchable index. Enter search keywords: text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' To jest indeks wyszukiwawczy. Podaj słowa do wyszukania: - Left to Right Left to Right context menu item Z lewej na prawą - Right to Left Right to Left context menu item Z prawej na lewą - %1 (%2x%3 pixels) Title string for images %1 (%2x%3 piksli) - Scroll here Przewiń tutaj - Left edge Lewa krawędź - Top Do góry - Right edge Prawa krawędź - Bottom W dół - Page left Strona w lewo - Page up Strona do góry - Page right Strona w prawo - Page down Strona w dół - Scroll left Przewiń w lewo - Scroll up Przewiń do góry - Scroll right Przewiń w prawo - Scroll down Przewiń w dół - %n file(s) number of chosen file @@ -9287,237 +7377,190 @@ Proszę wybrać inną nazwę pliku. - JavaScript Alert - %1 Ostrzeżenie JavaScript - %1 - JavaScript Confirm - %1 Potwierdzenie JavaScript - %1 - JavaScript Prompt - %1 Zachęta JavaScript - %1 - JavaScript Problem - %1 Problem JavaScript - %1 - The script on this page appears to have a problem. Do you want to stop the script? Skrypt na tej stronie nie działa poprawnie. Czy chcesz przerwać ten skrypt? - Move the cursor to the next character Przesuń kursor do następnego znaku - Move the cursor to the previous character Przesuń kursor do poprzedniego znaku - Move the cursor to the next word Przesuń kursor do następnego słowa - Move the cursor to the previous word Przesuń kursor do poprzedniego słowa - Move the cursor to the next line Przesuń kursor do następnej linii - Move the cursor to the previous line Przesuń kursor do poprzedniej linii - Move the cursor to the start of the line Przesuń kursor do początku linii - Move the cursor to the end of the line Przesuń kursor do końca linii - Move the cursor to the start of the block Przesuń kursor do początku bloku - Move the cursor to the end of the block Przesuń kursor do końca bloku - Move the cursor to the start of the document Przesuń kursor do początku dokumentu - Move the cursor to the end of the document Przesuń kursor do końca dokumentu - Select all Zaznacz wszystko - Select to the next character Zaznacz do następnego znaku - Select to the previous character Zaznacz do poprzedniego znaku - Select to the next word Zaznacz do następnego słowa - Select to the previous word Zaznacz do poprzedniego słowa - Select to the next line Zaznacz do następnej linii - Select to the previous line Zaznacz do poprzedniej linii - Select to the start of the line Zaznacz do początku linii - Select to the end of the line Zaznacz do końca linii - Select to the start of the block Zaznacz do początku bloku - Select to the end of the block Zaznacz do końca bloku - Select to the start of the document Zaznacz do początku dokumentu - Select to the end of the document Zaznacz do końca dokumentu - Delete to the start of the word Skasuj do początku słowa - Delete to the end of the word Skasuj do końca słowa - Insert a new paragraph Wstaw nowy paragraf - Insert a new line Wstaw nową linię - Paste and Match Style Wklej i dopasuj styl - Remove formatting Usuń formatowanie - Strikethrough Przekreślenie - Subscript Indeks dolny - Superscript Indeks górny - Insert Bulleted List Wstaw listę wypunktowaną - Insert Numbered List Wstaw listę ponumerowaną - Indent Zwiększ wcięcie - Outdent Zmniejsz wcięcie - Center Wyśrodkuj - Justify Wyjustuj - Align Left Wyrównaj do lewej - Align Right Wyrównaj do prawej @@ -9525,7 +7568,6 @@ Proszę wybrać inną nazwę pliku. QWhatsThisAction - What's This? Co to jest? @@ -9533,7 +7575,6 @@ Proszę wybrać inną nazwę pliku. QWidget - * * @@ -9541,57 +7582,46 @@ Proszę wybrać inną nazwę pliku. QWizard - Go Back Wróć - Continue Kontynuuj - Commit Dokonaj - Done Zrobione - Help Pomoc - < &Back < &Wstecz - &Finish &Zakończ - Cancel Anuluj - &Help &Pomoc - &Next &Dalej - &Next > &Dalej > @@ -9599,69 +7629,54 @@ Proszę wybrać inną nazwę pliku. QWorkspace - - %1 - [%2] %1 - [%2] - Close Zamknij - &Close &Zamknij - Ma&ximize Zma&ksymalizuj - Minimize Zminimalizuj - Mi&nimize Zmi&nimalizuj - &Move &Przenieś - &Restore &Przywróć - Restore Down Przywróć pod spód - - Sh&ade &Zwiń - &Size &Rozmiar - Stay on &Top Pozostaw na &wierzchu - &Unshade R&ozwiń @@ -9669,117 +7684,94 @@ Proszę wybrać inną nazwę pliku. QXml - encoding declaration or standalone declaration expected while reading the XML declaration oczekiwano deklaracji "encoding" lub "standalone" podczas odczytywania deklaracji XML - error in the text declaration of an external entity błąd w deklaracji "text" zewnętrznej jednostki - error occurred while parsing comment wystąpił błąd podczas parsowania komentarza - error occurred while parsing content wystąpił błąd podczas parsowania zawartości - error occurred while parsing document type definition wystąpił błąd podczas parsowania typu definicji dokumentu - error occurred while parsing element wystąpił błąd podczas parsowania elementu - error occurred while parsing reference wystąpił błąd podczas parsowania odwołania - error triggered by consumer błąd wywołany przez konsumenta - external parsed general entity reference not allowed in attribute value odwołanie do jednostki ogólnej zewnętrznie przetworzonej nie dozwolone dla wartości atrybutu - external parsed general entity reference not allowed in DTD odwołanie do jednostki ogólnej zewnętrznie przetworzonej nie dozwolone w DTD - internal general entity reference not allowed in DTD odwołanie do jednostki ogólnej wewnętrznej nie dozwolone w DTD - invalid name for processing instruction niepoprawna nazwa dla instrukcji przetwarzającej - letter is expected oczekiwana jest litera - more than one document type definition więcej niż jedna definicja typu dokumentu - no error occurred nie pojawił się żaden błąd - recursive entities jednostki rekurencyjne - standalone declaration expected while reading the XML declaration deklaracja "standalone" oczekiwana podczas czytania deklaracji XML - tag mismatch niezgodny tag - unexpected character nieoczekiwany znak - unexpected end of file nieoczekiwany koniec pliku - unparsed entity reference in wrong context odwołanie do jednostki nieprzetworzonej w złym kontekście - version expected while reading the XML declaration oczekiwano wersji podczas czytania deklaracji XML - wrong value for standalone declaration błędna wartość dla deklaracji "standalone" @@ -9787,27 +7779,22 @@ Proszę wybrać inną nazwę pliku. QXmlPatternistCLI - Warning in %1, at line %2, column %3: %4 Ostrzeżenie w %1, wiersz %2, kolumna %3: %4 - Warning in %1: %2 Ostrzeżenie w %1: %2 - Unknown location Nieznane położenie - Error %1 in %2, at line %3, column %4: %5 Błąd %1 w %2, wiersz %3, kolumna %4: %5 - Error %1 in %2: %3 Błąd %1 w %2: %3 @@ -9815,184 +7802,142 @@ Proszę wybrać inną nazwę pliku. QXmlStream - - Extra content at end of document. Dodatkowa treść na końcu dokumentu. - Invalid entity value. Niepoprawna wartość jednostki. - Invalid XML character. Niepoprawny znak XML. - Sequence ']]>' not allowed in content. Ciąg ']]>' niedozwolony w treści. - Namespace prefix '%1' not declared Przedrostek przestrzeni nazw '%1' nie został zadeklarowany - Attribute redefined. Atrybut zdefiniowany wielokrotnie. - Unexpected character '%1' in public id literal. Nieoczekiwany znak '%1' w publicznej stałej znakowej. - Invalid XML version string. Niepoprawna wersja XML. - Unsupported XML version. Nieobsługiwana wersja XML. - %1 is an invalid encoding name. %1 jest niepoprawną nazwą kodowania. - Encoding %1 is unsupported Kodowanie %1 jest nieobsługiwane - Standalone accepts only yes or no. Tylko wartości "tak" lub "nie" są akceptowane przez "standalone". - Invalid attribute in XML declaration. Niepoprawny atrybut w deklaracji XML. - Premature end of document. Przedwczesne zakończenie dokumentu. - Invalid document. Niepoprawny dokument. - Expected Oczekiwano - , but got ' , ale otrzymano ' - Unexpected ' Nieoczekiwany ' - Expected character data. Oczekiwana dana znakowa. - Recursive entity detected. Wykryto jednostkę rekurencyjną. - Start tag expected. Oczekiwano rozpoczęcia tagu. - XML declaration not at start of document. Deklaracja XML nie jest na początku dokumentu. - NDATA in parameter entity declaration. NDATA w deklaracji parametru obiektu. - %1 is an invalid processing instruction name. %1 jest niepoprawną nazwą instrukcji przetwarzającej. - Invalid processing instruction name. Niepoprawna nazwa instrukcji przetwarzającej. - - - - Illegal namespace declaration. Niepoprawna deklaracja przestrzeni nazw. - Invalid XML name. Niepoprawna nazwa XML. - Opening and ending tag mismatch. Niezgodne tagi początku i końca. - Reference to unparsed entity '%1'. Odwołanie do nieprzetworzonej jednostki '%1'. - - - Entity '%1' not declared. Jednostka '%1' nie zadeklarowana. - Reference to external entity '%1' in attribute value. Odwołanie do zewnętrznej jednostki '%1' jako wartość atrybutu. - Invalid character reference. Niepoprawny znak odwołania. - - Encountered incorrectly encoded content. Natrafiono na niepoprawnie zakodowaną treść. - The standalone pseudo attribute must appear after the encoding. Pseudo atrybut "standalone" musi pojawić się po "encoding". - %1 is an invalid PUBLIC identifier. %1 jest niepoprawnym publicznym identyfikatorem. @@ -10000,707 +7945,562 @@ Proszę wybrać inną nazwę pliku. QtXmlPatterns - Network timeout. Przekroczony czas połączenia. - Element %1 can't be serialized because it appears outside the document element. Element %1 nie może być zserializowany ponieważ pojawił się poza elementem "document". - Attribute %1 can't be serialized because it appears at the top level. Atrybut %1 nie może być zserializowany ponieważ pojawił się na najwyższym poziomie. - Year %1 is invalid because it begins with %2. Rok %1 jest niepoprawny ponieważ rozpoczyna się: %2. - Day %1 is outside the range %2..%3. Dzień %1 jest poza zakresem %2..%3. - Month %1 is outside the range %2..%3. Miesiąc %1 jest poza zakresem %2..%3. - Overflow: Can't represent date %1. Przepełnienie: Nie można wyrazić daty %1. - Day %1 is invalid for month %2. Dzień %1 jest niepoprawny dla miesiąca %2. - Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; Czas 24:%1:%2:%3 jest niepoprawny. Godzina jest 24, ale minuty, sekundy i milisekundy nie są równocześnie zerami; - Time %1:%2:%3.%4 is invalid. Czas %1:%2:%3.%4 jest niepoprawny. - Overflow: Date can't be represented. Przepełnienie: Data nie może być wyrażona. - - At least one component must be present. Przynajmniej jeden komponent musi być obecny. - At least one time component must appear after the %1-delimiter. Przynajmniej jeden komponent musi wystąpić po nawiasie %1. - %1 is not a valid value of type %2. %1 nie jest poprawną wartością dla typu %2. - When casting to %1 from %2, the source value cannot be %3. W rzutowaniu %1 na %2 wartość źródłowa nie może być %3. - - Dividing a value of type %1 by %2 (not-a-number) is not allowed. Dzielenie wartości typu %1 przez %2 (typ nienumeryczny) jest niedozwolone. - Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed. Dzielenie wartości typu %1 przez %2 lub %3 (plus lub minus zero) jest niedozwolone. - Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed. Mnożenie wartości typu %1 przez %2 lub %3 (plus lub minus nieskończoność) jest niedozwolone. - A value of type %1 cannot have an Effective Boolean Value. Wartość typu %1 nie może posiadać efektywnej wartości boolowskiej (EBV). - Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values. Efektywna wartość boolowska (EBV) nie może być obliczona dla sekwencji zawierającej dwie lub więcej wartości atomowe. - Value %1 of type %2 exceeds maximum (%3). Wartość %1 typu %2 przekracza maksimum (%3). - Value %1 of type %2 is below minimum (%3). Wartość %1 typu %2 jest poniżej minimum (%3). - A value of type %1 must contain an even number of digits. The value %2 does not. Wartość typu %1 musi zawierać parzystą liczbę cyfr. Wartość %2 nie zawiera. - %1 is not valid as a value of type %2. Wartość %1 nie jest poprawna jako wartość typu %2. - Operator %1 cannot be used on type %2. Operator %1 nie może być użyty dla typu %2. - Operator %1 cannot be used on atomic values of type %2 and %3. Operator %1 nie może być użyty dla atomowych wartości typu %2 i %3. - The namespace URI in the name for a computed attribute cannot be %1. Przestrzeń nazw URI nie może być %1 w nazwie dla obliczonego atrybutu. - The name for a computed attribute cannot have the namespace URI %1 with the local name %2. Nazwa dla wyliczonego atrybutu nie może zawierać przestrzeni nazw URI %1 z lokalną nazwą %2. - Type error in cast, expected %1, received %2. Błąd typów w rzutowaniu: oczekiwano %1, otrzymano %2. - When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed. Podczas rzutowania na %1 lub na typ pochodny, wartość źródłowa musi być tego samego typu lub musi być stałą znakową. Typ %2 nie jest dozwolony. - A comment cannot contain %1 Komentarz nie może zawierać %1 - A comment cannot end with a %1. Komentarz nie może kończyć się: %1. - An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place. Węzeł "attribute" nie może być podelementem węzła "document". Dlatego atrybut %1 jest w złym miejscu. - A library module cannot be evaluated directly. It must be imported from a main module. Moduł biblioteki nie może być bezpośrednio oceniony. On musi być zaimportowany z głównego modułu. - No template by name %1 exists. Szablon o nazwie %1 nie istnieje. - A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type. Wartość typu %1 nie może być predykatem. Predykat musi być typu liczbowego lub Efektywną Wartość Logiczną. - A positional predicate must evaluate to a single numeric value. Wynikiem predykatu pozycyjnego musi być pojedyncza wartość liczbowa. - The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, %2 is invalid. Docelowa nazwa w instrukcji przetwarzania nie może być %1 w żadnej kombinacji wielkich i małych liter. Dlatego nazwa %2 jest niepoprawna. - %1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3. %1 nie jest poprawną nazwą docelową w instrukcji przetwarzania. Nazwa musi być wartością %2, np. %3. - The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two. Ostatni krok w ścieżce musi zawierać albo węzły albo wartości atomowe. Nie może zawierać obu jednocześnie. - The data of a processing instruction cannot contain the string %1 Dane instrukcji przetwarzania nie mogą zawierać ciągu %1 - No namespace binding exists for the prefix %1 Żadna przestrzeń nazw nie jest powiązana z przedrostkiem %1 - No namespace binding exists for the prefix %1 in %2 Żadna przestrzeń nazw nie jest powiązana z przedrostkiem %1 w %2 - - %1 is an invalid %2 %1 jest niepoprawnym %2 - The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration. Pierwszy argument w %1 nie może być typu %2. Musi on być typu liczbowego: xs:yearMonthDuration lub xs:dayTimeDuration. - The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. Pierwszy argument w %1 nie może być typu %2. Musi on być typu: %3, %4 lub %5. - The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. Drugi argument w %1 nie może być typu %2. Musi on być typu: %3, %4 lub %5. - %1 is not a valid XML 1.0 character. %1 nie jest poprawnym znakiem XML 1.0. - If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same. Jeśli oba argumenty mają przesunięcia strefowe, muszą one być takie same. %1 i %2 nie są takie same. - %1 was called. Wywołano %1. - %1 must be followed by %2 or %3, not at the end of the replacement string. Po %1 musi następować %2 lub %3, lecz nie na końcu zastępczego ciągu. - In the replacement string, %1 must be followed by at least one digit when not escaped. W ciągu zastępczym, po %1 musi następować przynajmniej jedna cyfra - In the replacement string, %1 can only be used to escape itself or %2, not %3 W ciągu zastępczym, %1 może być użyte tylko do zabezpieczenia samej siebie lub %2, nigdy %3 - %1 matches newline characters %1 dopasowało znak nowej linii - %1 and %2 match the start and end of a line. %1 i %2 dopasowały początek i koniec linii. - Matches are case insensitive Dopasowania uwzględniają wielkość liter - Whitespace characters are removed, except when they appear in character classes Spacje są usuwane z wyjątkiem kiedy pojawią się w klasach znakowych - %1 is an invalid regular expression pattern: %2 %1 jest niepoprawnym wzorcem wyrażenia regularnego: %2 - %1 is an invalid flag for regular expressions. Valid flags are: %1 jest niepoprawną flagą dla wyrażeń regularnych. Poprawnymi flagami są: - If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified. Jeśli pierwszy argument jest pustą sekwencją lub zerowej długości ciągiem (przy braku przestrzeni nazw), przedrostek nie może wystąpić. Podano przedrostek %1. - It will not be possible to retrieve %1. Nie będzie można odzyskać %1. - The default collection is undefined Domyślna kolekcja jest niezdefiniowana - %1 cannot be retrieved %1 nie może być odzyskane - The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization). Znormalizowana forma %1 nie jest obsługiwana. Obsługiwanymi formami są: %2, %3, %4 i %5 oraz pusta forma (brak normalizacji). - A zone offset must be in the range %1..%2 inclusive. %3 is out of range. Przesunięcie strefowe musi być w zakresie %1..%2 włącznie. %3 jest poza tym zakresem. - Required cardinality is %1; got cardinality %2. Wymagana liczność wynosi %1; otrzymano %2. - The item %1 did not match the required type %2. Element %1 nie został dopasowany do wymaganego typu %2. - - %1 is an unknown schema type. %1 jest nieznanym typem schematu. - A template with name %1 has already been declared. Szablon o nazwie %1 został już zadeklarowany. - Only one %1 declaration can occur in the query prolog. Tylko jedna deklaracja %1 może się pojawić w prologu zapytania. - The initialization of variable %1 depends on itself Inicjalizacja zmiennej %1 zależy od niej samej - The variable %1 is unused Zmienna %1 jest nieużywana - Version %1 is not supported. The supported XQuery version is 1.0. Wersja %1 nie jest obsługiwana. Obsługiwaną wersją XQuery jest wersja 1.0. - No function with signature %1 is available Żadna funkcja w postaci %1 nie jest dostępna - It is not possible to redeclare prefix %1. Nie jest możliwe ponowne zadeklarowanie przedrostka %1. - Prefix %1 is already declared in the prolog. Przedrostek %1 jest już zadeklarowany w prologu. - The name of an option must have a prefix. There is no default namespace for options. Nazwa opcji musi posiadać przedrostek. Nie istnieje domyślna przestrzeń nazw dla opcji. - The Schema Import feature is not supported, and therefore %1 declarations cannot occur. Cecha "Import schematu" nie jest obsługiwana, dlatego deklaracje %1 nie mogą pojawić. - The target namespace of a %1 cannot be empty. Docelowa przestrzeń nazw dla %1 nie może być pusta. - The module import feature is not supported Cecha "Import modułu" nie jest obsługiwana - The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases. Przestrzeń nazw %1 jest zarezerwowana, dlatego funkcje zdefiniowane przez użytkownika nie mogą jej użyć. Spróbuj predefiniowany przedrostek %2, który istnieje w takich przypadkach. - The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2 Przestrzeń nazw dla funkcji zdefiniowanej przez użytkownika w module bibliotecznym musi odpowiadać przestrzeni nazw modułu. Powinna to być %1 zamiast %2 - A function already exists with the signature %1. Funkcja w postaci %1 już istnieje. - No external functions are supported. All supported functions can be used directly, without first declaring them as external Zewnętrzne funkcje nie są obsługiwane. Wszystkie obsługiwane funkcje mogą być używane bezpośrednio, bez ich uprzedniego deklarowania jako zewnętrzne - The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide. Nazwa zmiennej powiązanej w wyrażeniu "for" musi być inna od zmiennej pozycjonującej. W związku z tym dwie zmienne o nazwie %1 kolidują ze sobą. - The Schema Validation Feature is not supported. Hence, %1-expressions may not be used. Cecha "Walidacja schematu" nie jest obsługiwana. Dlatego też wyrażenia %1 nie mogą być użyte. - None of the pragma expressions are supported. Therefore, a fallback expression must be present Wyrażenia "pragma" nie są obsługiwane. Dlatego musi wystąpić wyrażenie zastępcze - The %1-axis is unsupported in XQuery Oś %1 nie jest obsługiwana w XQuery - %1 is not a valid numeric literal. %1 nie jest poprawną stałą liczbową. - W3C XML Schema identity constraint selector Selektor narzucenia niepowtarzalności W3C XML Schema - W3C XML Schema identity constraint field Pole narzucenia niepowtarzalności W3C XML Schema - A construct was encountered which is disallowed in the current language(%1). Wystąpiła konstrukcja która jest niedozwolona w bieżącym języku (%1). - The keyword %1 cannot occur with any other mode name. Słowo kluczowe %1 nie może wystąpić z inną nazwą trybu. - No variable with name %1 exists Zmienna o nazwie %1 nie istnieje - The value of attribute %1 must be of type %2, which %3 isn't. Wartość atrybutu %1 musi być typu %2, którym nie jest %3. - The prefix %1 cannot be bound. By default, it is already bound to the namespace %2. Przedrostek %1 nie może być powiązany. Jest on domyślnie powiązany z przestrzenią nazw %2. - A variable with name %1 has already been declared. Zmienna o nazwie %1 została już zadeklarowana. - No value is available for the external variable with name %1. Brak wartości dla zewnętrznej zmiennej o nazwie %1. - A stylesheet function must have a prefixed name. Funkcja arkusza stylu musi zawierać nazwę z przedrostkiem. - The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this) Przestrzeń nazw dla funkcji zdefiniowanej przez użytkownika nie może być pusta (spróbuj predefiniowany przedrostek %1, który stworzono specjalnie do takich sytuacji) - An argument with name %1 has already been declared. Every argument name must be unique. Argument o nazwie %1 został już zadeklarowany. Każda nazwa argumentu musi być unikatowa. - When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal. Gdy funkcja %1 jest wykorzystana do dopasowania wewnątrz wzorca, jej argument musi być referencją do zmiennej lub stałą znakową. - In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching. We wzorze XSL-T pierwszy argument w funkcji %1 musi być stałą znakową podczas dopasowywania. - In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching. We wzorze XSL-T pierwszy argument w funkcji %1 musi być stałą znakową lub nazwą zmiennej podczas dopasowywania. - In an XSL-T pattern, function %1 cannot have a third argument. We wzorze XSL-T funkcja %1 nie może zawierać trzeciego argumentu. - In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching. We wzorze XSL-T tylko funkcje %1 i %2 mogą być użyte do dopasowania, zaś funkcja %3 nie. - In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can. We wzorze XSL-T tylko osie %2 i %3 mogą być użyte, zaś oś %1 nie. - %1 is an invalid template mode name. %1 nie jest poprawną nazwa trybu szablonu. - Each name of a template parameter must be unique; %1 is duplicated. Każda nazwa parametru szablonu musi być unikatowa; %1 się powtarza. - No function with name %1 is available. Żadna funkcja o nazwie %1 nie jest dostępna. - An attribute with name %1 has already appeared on this element. Atrybut o nazwie %1 już się pojawił w tym elemencie. - The namespace URI cannot be the empty string when binding to a prefix, %1. Przestrzeń nazw URI nie może być pustym ciągiem w powiązaniu z przedrostkiem, %1. - %1 is an invalid namespace URI. %1 jest niepoprawną przestrzenią nazw URI. - It is not possible to bind to the prefix %1 Nie jest możliwe powiązanie z przedrostkiem %1 - Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared). Przestrzeń nazw %1 może być jedynie powiązana z %2 (w przeciwnym wypadku jest ona domyślnie zadeklarowana). - Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared). Przedrostek %1 może być jedynie powiązany z %2 (w przeciwnym wypadku jest on domyślnie zadeklarowany). - Two namespace declaration attributes have the same name: %1. Atrybuty deklaracji przestrzeni nazw mają tą samą nazwę: %1. - The namespace URI must be a constant and cannot use enclosed expressions. Przestrzeń nazw URI nie może być stałą i nie może używać zawartych w niej wyrażeń. - A direct element constructor is not well-formed. %1 is ended with %2. Konstruktor elementu bezpośredniego nie jest dobrze sformatowany. %1 jest zakończony %2. - The name %1 does not refer to any schema type. Nazwa %1 nie odpowiada żadnemu typowi schematu. - %1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works. %1 jest typem złożonym. Rzutowanie na typy złożone nie jest możliwe. Jednakże rzutowanie na typy atomowe np.: %2 jest dozwolone. - %1 is not an atomic type. Casting is only possible to atomic types. %1 nie jest typem atomowym. Możliwe jest rzutowanie tylko na typy atomowe. - %1 is not a valid name for a processing-instruction. %1 nie jest poprawną nazwą dla instrukcji przetwarzającej. - - %1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported. %1 nie jest wewnątrz zakresu deklaracji atrybutów. Zwróć uwagę że importowanie schematów nie jest obsługiwane. - The name of an extension expression must be in a namespace. Nazwa dodatkowego wyrażenia musi znajdować sie w przestrzeni nazw. - empty pusty - zero or one zero lub jeden - exactly one dokładnie jeden - one or more jeden lub więcej - zero or more zero lub więcej - Required type is %1, but %2 was found. Odnaleziono typ %2, lecz wymaganym typem jest %1. - Promoting %1 to %2 may cause loss of precision. Przekształcenie %1 do %2 może spowodować utratę precyzji. - The focus is undefined. Fokus jest niezdefiniowany. - It's not possible to add attributes after any other kind of node. Dodanie atrybutu poza węzłami nie jest możliwe. - An attribute by name %1 has already been created. Atrybut o nazwie %1 został już utworzony. - Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported. Obsługiwane jest jedynie "Unicode Codepoint Collation" (%1), %2 nie jest obsługiwane. - Integer division (%1) by zero (%2) is undefined. Dzielenie w dziedzinie liczb całkowitych (%1) przez zero (%2) jest niezdefiniowane. - Division (%1) by zero (%2) is undefined. Dzielenie (%1) przez zero (%2) jest niezdefiniowane. - Modulus division (%1) by zero (%2) is undefined. Dzielenie modulo (%1) przez zero (%2) jest niezdefiniowane. - %1 takes at most %n argument(s). %2 is therefore invalid. %1 przyjmuje co najwyżej %n argument. %2 jest dlatego niepoprawne. @@ -10709,7 +8509,6 @@ Proszę wybrać inną nazwę pliku. - %1 requires at least %n argument(s). %2 is therefore invalid. %1 wymaga przynajmniej %n argumentu. %2 jest dlatego niepoprawne. @@ -10718,1651 +8517,1255 @@ Proszę wybrać inną nazwę pliku. - The root node of the second argument to function %1 must be a document node. %2 is not a document node. Głównym węzłem drugiego argumentu w funkcji %1 musi być węzeł "document". %2 nie jest węzłem "document". - %1 is not a whole number of minutes. %1 nie jest całkowitą liczbą minut. - The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2. Enkodowanie %1 jest niepoprawne. Może ono zawierać jedynie znaki alfabetu łacińskiego, nie może zawierać spacji i musi być dopasowane do wyrażenia regularnego %2. - - A default namespace declaration must occur before function, variable, and option declarations. Domyślna deklaracja przestrzeni nazw musi pojawić się przed deklaracjami funkcji, zmiennych i opcji. - Namespace declarations must occur before function, variable, and option declarations. Deklaracje przestrzeni nazw muszą pojawić się przed deklaracjami funkcji, zmiennych i opcji. - Module imports must occur before function, variable, and option declarations. Importy modułów muszą pojawić się przed deklaracjami funkcji, zmiennych i opcji. - %1 is an unsupported encoding. Nieobsługiwane kodowanie %1. - %1 contains octets which are disallowed in the requested encoding %2. %1 zawiera bity które są niedozwolone w zażądanym kodowaniu %2. - The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character. Kod %1 który pojawił się w %2 i który używa kodowania %3 jest niepoprawnym znakiem XML. - Ambiguous rule match. Dopasowano niejednoznaczną regułę. - In a namespace constructor, the value for a namespace cannot be an empty string. W konstruktorze przestrzeni nazw wartość przestrzeni nazw nie może być pustym ciągiem. - The prefix must be a valid %1, which %2 is not. Przedrostek musi być poprawnym %1, którym %2 nie jest. - The prefix %1 cannot be bound. Przedrostek %1 nie może być powiązany. - Only the prefix %1 can be bound to %2 and vice versa. Tylko przedrostek %1 może być powiązany z %2 i vice versa. - The parameter %1 is required, but no corresponding %2 is supplied. Wymagany jest parametr %1 lecz żaden odpowiadający mu %2 nie został dostarczony. - The parameter %1 is passed, but no corresponding %2 exists. Przekazany jest parametr %1 lecz żaden odpowiadający mu %2 nie istnieje. - The URI cannot have a fragment URI nie może posiadać fragmentu - Element %1 is not allowed at this location. Element %1 jest niedozwolony w tym miejscu. - Text nodes are not allowed at this location. Węzły tekstowe są niedozwolone w tym miejscu. - Parse error: %1 Błąd parsowania: %1 - The value of the XSL-T version attribute must be a value of type %1, which %2 isn't. Wartość atrybutu wersji XSL-T musi być typu %1, którym %2 nie jest. - Running an XSL-T 1.0 stylesheet with a 2.0 processor. Przetwarzanie arkusza XSL-T w wersji 1.0 przez procesor w wersji 2.0. - Unknown XSL-T attribute %1. Nieznany atrybut %1 XSL-T. - Attribute %1 and %2 are mutually exclusive. Atrybuty %1 i %2 wzajemnie się wykluczającą. - In a simplified stylesheet module, attribute %1 must be present. W uproszczonym module arkuszu stylu musi wystąpić atrybut %1. - If element %1 has no attribute %2, it cannot have attribute %3 or %4. Jeśli element %1 nie posiada atrybutu %2, nie może on również posiadać atrybutu %3 ani %4. - Element %1 must have at least one of the attributes %2 or %3. Element %1 musi posiadać przynajmniej jeden z atrybutów: %2 lub %3. - At least one mode must be specified in the %1-attribute on element %2. Przynajmniej jeden tryb musi być podany w atrybucie %1 elementu %2. - Element %1 must come last. Element %1 musi wystąpić jako ostatni. - At least one %1-element must occur before %2. Przynajmniej jeden element %1 musi wystąpić przed %2. - Only one %1-element can appear. Może wystąpić tylko jeden element %1. - At least one %1-element must occur inside %2. Przynajmniej jeden element %1 musi wystąpić wewnątrz %2. - When attribute %1 is present on %2, a sequence constructor cannot be used. Kiedy atrybut %1 występuje w %2 konstruktor sekwencyjny nie może być użyty. - Element %1 must have either a %2-attribute or a sequence constructor. Element %1 musi posiadać albo atrybut %2 albo sekwencyjny konstruktor. - When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor. Kiedy wymagany jest parametr, domyślna wartość nie może być dostarczona przez atrybut %1 ani przez sekwencyjny konstruktor. - Element %1 cannot have children. Element %1 nie może posiadać potomków. - Element %1 cannot have a sequence constructor. Element %1 nie może posiadać sekwencyjnego konstruktora. - - The attribute %1 cannot appear on %2, when it is a child of %3. Atrybut %1 nie może wystąpić w %2 kiedy jest on potomkiem %3. - A parameter in a function cannot be declared to be a tunnel. Parametr funkcji nie może być zadeklarowany jako tunelowy. - This processor is not Schema-aware and therefore %1 cannot be used. Procesor nie obsługuje schematów, więc %1 nie może zostać użyte. - Top level stylesheet elements must be in a non-null namespace, which %1 isn't. Elementy arkusza stylu najwyższego poziomu muszą być w niezerowej przestrzeni nazw, którą %1 nie jest. - The value for attribute %1 on element %2 must either be %3 or %4, not %5. Wartością atrybutu %1 w elemencie %2 musi być %3 albo %4, lecz nie %5. - Attribute %1 cannot have the value %2. Atrybut %1 nie może posiadać wartości %2. - The attribute %1 can only appear on the first %2 element. Atrybut %1 może wystąpić jedynie w pierwszym elemencie %2. - At least one %1 element must appear as child of %2. Przynajmniej jeden element %1 musi wystąpić jako potomek %2. - %1 has inheritance loop in its base type %2. %1 ma pętlę w dziedziczeniu w jego podstawowym typie %2. - - Circular inheritance of base type %1. Cykliczne dziedziczenie podstawowego typu %1. - Circular inheritance of union %1. Cykliczne dziedziczenie unii %1. - %1 is not allowed to derive from %2 by restriction as the latter defines it as final. Nie można wywieść %1 z %2 ograniczając go ponieważ jest on zdefiniowany jako końcowy. - %1 is not allowed to derive from %2 by extension as the latter defines it as final. Nie można wywieść %1 z %2 rozszerzając go ponieważ jest on zdefiniowany jako końcowy. - Base type of simple type %1 cannot be complex type %2. Typ podstawowy dla typu prostego %1 nie może być typem złożonym %2. - Simple type %1 cannot have direct base type %2. Typ prosty %1 nie może mieć bezpośredniego typu podstawowego %2. - - Simple type %1 is not allowed to have base type %2. Typ prosty %1 nie może mieć typu podstawowego %2. - Simple type %1 can only have simple atomic type as base type. Typem podstawowym typu prostego %1 może być tylko typ atomowy. - Simple type %1 cannot derive from %2 as the latter defines restriction as final. Typ prosty %1 nie może wywodzić się z %2 ponieważ ten ostatni jest zdefiniowany jako końcowy. - - Variety of item type of %1 must be either atomic or union. Typem elementów listy %1 musi być albo typ atomowy albo unia. - - Variety of member types of %1 must be atomic. Typy składników %1 muszą być atomowe. - - %1 is not allowed to derive from %2 by list as the latter defines it as final. Nie można wywieść %1 z %2 poprzez listę ponieważ jest to zdefiniowane ostatecznie w typie podstawowym. - Simple type %1 is only allowed to have %2 facet. Typ prosty %1 może jedynie posiadać aspekt %2. - Base type of simple type %1 must have variety of type list. Typ podstawowy dla typu prostego %1 musi być listą typów. - Base type of simple type %1 has defined derivation by restriction as final. Typ podstawowy dla typu prostego %1 ma zdefiniowane wywodzenie poprzez ograniczenie jako końcowe. - Item type of base type does not match item type of %1. Typ elementów listy typu podstawowego nie pasuje do typu elementów listy %1. - - Simple type %1 contains not allowed facet type %2. Typ prosty %1 posiada niedozwolony aspekt %2. - - %1 is not allowed to derive from %2 by union as the latter defines it as final. Nie można wywieść %1 z %2 poprzez unię ponieważ jest to zdefiniowane ostatecznie w typie podstawowym. - %1 is not allowed to have any facets. %1 nie może posiadać żadnych aspektów. - Base type %1 of simple type %2 must have variety of union. Typ podstawowy %1 dla typu prostego %2 musi być unią. - Base type %1 of simple type %2 is not allowed to have restriction in %3 attribute. Typ podstawowy %1 dla typu prostego %2 nie może posiadać ograniczenia dla atrybutu %3. - Member type %1 cannot be derived from member type %2 of %3's base type %4. Typ %1 składnika nie może być wywiedziony z typu %2 który jest typem składnika %3 typu podstawowego %4. - Derivation method of %1 must be extension because the base type %2 is a simple type. Metodą wywodzenia z %1 musi być rozszerzenie ponieważ typ podstawowy %2 jest typem prostym. - Complex type %1 has duplicated element %2 in its content model. Typ złożony %1 posiada powielony element %2 w jego modelu zawartości. - Complex type %1 has non-deterministic content. Typ złożony %1 posiada nieokreśloną zawartość. - Attributes of complex type %1 are not a valid extension of the attributes of base type %2: %3. Atrybuty typu złożonego %1 nie są poprawnym rozszerzeniem atrybutów typu podstawowego %2: %3. - Content model of complex type %1 is not a valid extension of content model of %2. Model zawartości typu złożonego %1 nie jest poprawnym rozszerzeniem modelu zawartości %2. - Complex type %1 must have simple content. Typ złożony %1 musi mieć prostą zawartość. - Complex type %1 must have the same simple type as its base class %2. Typ złożony %1 musi posiadać ten sam prosty typ jaki posiada jego klasa podstawowa %2. - Complex type %1 cannot be derived from base type %2%3. Typ złożony %1 nie może być wywiedziony z typu %2%3. - Attributes of complex type %1 are not a valid restriction from the attributes of base type %2: %3. Atrybuty typu złożonego %1 nie są poprawnym ograniczeniem atrybutów typu podstawowego %2: %3. - Complex type %1 with simple content cannot be derived from complex base type %2. Typ złożony %1 z prostą zawartością nie może być wywiedziony z podstawowego typu złożonego %2. - Item type of simple type %1 cannot be a complex type. Typ elementów listy w prostym typie %1 nie może być typem złożonym. - Member type of simple type %1 cannot be a complex type. Typ składnika typu prostego %1 nie może być typem złożonym. - %1 is not allowed to have a member type with the same name as itself. %1 nie może posiadać typu składnika o tej samej nazwie jaką on sam posiada. - - - %1 facet collides with %2 facet. Aspekt %1 koliduje z aspektem %2. - %1 facet must have the same value as %2 facet of base type. Aspekt %1 musi mieć tą samą wartość jaką ma aspekt %2 typu podstawowego. - %1 facet must be equal or greater than %2 facet of base type. Wartość aspektu %1 musi większa od lub równa wartości aspektu %2 typu podstawowego. - - - - - - - - %1 facet must be less than or equal to %2 facet of base type. Wartość aspektu %1 musi być mniejsza od lub równa wartości aspektu %2 typu podstawowego. - %1 facet contains invalid regular expression Aspekt %1 zawiera niepoprawne wyrażenie regularne - Unknown notation %1 used in %2 facet. Nieznany zapis %1 użyty w aspekcie %2. - %1 facet contains invalid value %2: %3. Aspekt %1 zawiera niepoprawną wartość %2: %3. - %1 facet cannot be %2 or %3 if %4 facet of base type is %5. Aspektem %1 nie może być %2 ani %3 jeśli aspektem %4 typu podstawowego jest %5. - %1 facet cannot be %2 if %3 facet of base type is %4. Aspektem %1 nie może być %2 jeśli aspektem %3 typu podstawowego jest %4. - - - %1 facet must be less than or equal to %2 facet. Wartość aspektu %1 musi być mniejsza od lub równa wartości aspektu %2. - - - %1 facet must be less than %2 facet of base type. Wartość aspektu %1 musi być mniejsza od wartości aspektu %2 typu podstawowego. - - %1 facet and %2 facet cannot appear together. Aspekty %1 i %2 nie mogą wystąpić jednocześnie. - - - %1 facet must be greater than %2 facet of base type. Wartość aspektu %1 musi być większa od wartości aspektu %2 typu podstawowego. - - %1 facet must be less than %2 facet. Wartość aspektu %1 musi być mniejsza od wartości aspektu %2. - - %1 facet must be greater than or equal to %2 facet of base type. Wartość aspektu %1 musi być większa od lub równa wartości aspektu %2 typu podstawowego. - Simple type contains not allowed facet %1. Typ prosty zawiera niedozwolony aspekt %1. - %1, %2, %3, %4, %5 and %6 facets are not allowed when derived by list. Aspekty %1, %2, %3, %4, %5 i %6 nie są dozwolone podczas wywodzenia z listy. - Only %1 and %2 facets are allowed when derived by union. Dozwolone są jedynie aspekty %1 i %2 podczas wywodzenia z unii. - - %1 contains %2 facet with invalid data: %3. %1 zawiera aspekt %2 z niepoprawnymi danymi: %3. - Attribute group %1 contains attribute %2 twice. Grupa atrybutów %1 zawiera dwukrotnie atrybut %2. - Attribute group %1 contains two different attributes that both have types derived from %2. Grupa atrybutów %1 zawiera dwa różne atrybuty których typy są wywiedzione z %2. - Attribute group %1 contains attribute %2 that has value constraint but type that inherits from %3. Grupa atrybutów %1 zawiera atrybut %2 który ma ograniczenie wartości ale typ wywodzi się z %3. - Complex type %1 contains attribute %2 twice. Typ złożony %1 zawiera atrybut %2 dwukrotnie. - Complex type %1 contains two different attributes that both have types derived from %2. Typ złożony %1 zawiera dwa różne atrybuty których typy są wywiedzione z %2. - Complex type %1 contains attribute %2 that has value constraint but type that inherits from %3. Typ złożony %1 zawiera atrybut %2 który ma ograniczenie wartości ale typ wywodzi się z %3. - Element %1 is not allowed to have a value constraint if its base type is complex. Element %1 nie może zawierać ograniczenia wartości gdy jego typ podstawowy jest złożony. - Element %1 is not allowed to have a value constraint if its type is derived from %2. Element %1 nie może zawierać ograniczenia wartości gdy jego typ jest wywiedziony z %2. - - Value constraint of element %1 is not of elements type: %2. Ograniczenie wartości elementu %1 nie jest typu: %2. - Element %1 is not allowed to have substitution group affiliation as it is no global element. Element %1 nie może przynależeć do grupy zastępującej ponieważ nie jest on elementem globalnym. - Type of element %1 cannot be derived from type of substitution group affiliation. Typ elementu %1 nie może być wywiedziony z typu przynależnego do grupy zastępującej. - Value constraint of attribute %1 is not of attributes type: %2. Ograniczenie wartości atrybutu %1 nie jest typu: %2. - Attribute %1 has value constraint but has type derived from %2. Atrybut %1 posiada ograniczenie wartości lecz jego typ wywodzi się z %2. - %1 attribute in derived complex type must be %2 like in base type. Atrybut %1 w wywiedzionym typie złożonym musi być %2 jak w typie podstawowym. - Attribute %1 in derived complex type must have %2 value constraint like in base type. Atrybut %1 w wywiedzionym typie złożonym musi zawierać ograniczenie wartości %2 jak w typie podstawowym. - Attribute %1 in derived complex type must have the same %2 value constraint like in base type. Atrybut %1 w wywiedzionym typie złożonym musi zawierać te same ograniczenie wartości %2 jak w typie podstawowym. - Attribute %1 in derived complex type must have %2 value constraint. Atrybut %1 w wywiedzionym typie złożonym musi zawierać ograniczenie wartości %2. - processContent of base wildcard must be weaker than derived wildcard. "processContent" podstawowego dżokera musi być słabszy od wywiedzionego dżokera. - - Element %1 exists twice with different types. Istnieją dwa elementy %1 o różnych typach. - Particle contains non-deterministic wildcards. Element zawiera nieokreślone dżokery. - - Base attribute %1 is required but derived attribute is not. Wymagany jest bazowy atrybut %1, wywiedziony zaś nie. - Type of derived attribute %1 cannot be validly derived from type of base attribute. Typ wywiedzionego atrybutu %1 nie może być poprawnie wywiedziony z typu podstawowego atrybutu. - Value constraint of derived attribute %1 does not match value constraint of base attribute. Ograniczenie wartości wywiedzionego atrybutu %1 nie pasuje do ograniczenia wartości podstawowego atrybutu. - Derived attribute %1 does not exist in the base definition. Wywiedziony atrybut %1 nie istnieje w podstawowej definicji. - Derived attribute %1 does not match the wildcard in the base definition. Wywiedziony atrybut %1 nie pasuje do dżokera w podstawowej definicji. - Base attribute %1 is required but missing in derived definition. Brak wymaganego bazowego atrybutu %1 w wywiedzionej definicji. - Derived definition contains an %1 element that does not exists in the base definition Wywiedziona definicja zawiera element %1 który nie istnieje w definicji podstawowej - Derived wildcard is not a subset of the base wildcard. Wywiedziony dżoker nie jest podzbiorem podstawowego dżokera. - %1 of derived wildcard is not a valid restriction of %2 of base wildcard %1 wywiedzionego dżokera nie jest poprawnym ograniczeniem %2 podstawowego dżokera - Attribute %1 from base type is missing in derived type. Brak atrybutu %1 typu bazowego w wywiedzionej definicji. - Type of derived attribute %1 differs from type of base attribute. Typ wywiedzionego atrybutu %1 różni się od typu podstawowego atrybutu. - Base definition contains an %1 element that is missing in the derived definition Podstawowa definicja zawiera element %1 którego brakuje w wywiedzionej definicji - %1 references unknown %2 or %3 element %4. %1 odwołuje się do nieznanego elementu %2 lub %3: %4. - %1 references identity constraint %2 that is no %3 or %4 element. %1 odwołuje się do narzucenia niepowtarzalności %2 które nie jest elementem %3 ani %4. - %1 has a different number of fields from the identity constraint %2 that it references. %1 posiada inna liczbę pól od narzucenia niepowtarzalności %2 które się do niego odwołuje. - Base type %1 of %2 element cannot be resolved. Nie można rozwiązać typu podstawowego %1 elementu %2. - Item type %1 of %2 element cannot be resolved. Nie można rozwiązać typu elementów listy %1 w elemencie %2. - Member type %1 of %2 element cannot be resolved. Nie można rozwiązać typu %1 składnika elementu %2. - - - Type %1 of %2 element cannot be resolved. Nie można rozwiązać typu %1 elementu %2. - Base type %1 of complex type cannot be resolved. Nie można rozwiązać typu podstawowego %1 dla typu złożonego. - %1 cannot have complex base type that has a %2. %1 nie może mieć złożonego typu podstawowego który ma %2. - Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type. Model zawartości typu złożonego %1 posiada element %2 więc nie może być on wywiedziony poprzez rozszerzenie niepustego typu. - Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model. Typ złożony %1 nie może być wywiedziony z %2 poprzez rozszerzenie ponieważ ten ostatni zawiera element %3 w jego modelu zawartości. - Type of %1 element must be a simple type, %2 is not. Typem elementu %1 musi być typ prosty, %2 nim nie jest. - Substitution group %1 of %2 element cannot be resolved. Nie można rozwiązać grupy zastępującej %1 elementu %2. - Substitution group %1 has circular definition. Grupa zastępująca %1 posiada cykliczną definicję. - - Duplicated element names %1 in %2 element. Powielona nazwa elementu %1 w elemencie %2. - - - - Reference %1 of %2 element cannot be resolved. Nie można rozwiązać odwołania %1 do elementu %2. - Circular group reference for %1. Cykliczne odwołanie do grupy dla %1. - %1 element is not allowed in this scope Element %1 nie jest dozwolony w tym zakresie - %1 element cannot have %2 attribute with value other than %3. Element %1 nie może mieć atrybutu %2 z wartością inną niż %3. - %1 element cannot have %2 attribute with value other than %3 or %4. Element %1 nie może mieć atrybutu %2 z wartością inną niż %3 lub %4. - %1 or %2 attribute of reference %3 does not match with the attribute declaration %4. Atrybut %1 lub %2 odwołania %3 nie pasuje do deklaracji atrybutu %4. - Attribute group %1 has circular reference. Grupa atrybutów %1 posiada cykliczne odwołanie. - %1 attribute in %2 must have %3 use like in base type %4. Atrybut %1 w %2 powinien używać %3 jak w typie podstawowym %4. - Attribute wildcard of %1 is not a valid restriction of attribute wildcard of base type %2. Atrybut dżokera %1 nie jest poprawnym ograniczeniem atrybutu dżokera typu podstawowego %2. - %1 has attribute wildcard but its base type %2 has not. %1 posiada atrybut dżokera lecz jego typ podstawowy %2 go nie posiada. - Union of attribute wildcard of type %1 and attribute wildcard of its base type %2 is not expressible. Nie można wyrazić unii atrybutu dżokera typu %1 i atrybutu dżokera jego typu podstawowego %2. - Enumeration facet contains invalid content: {%1} is not a value of type %2. Aspekt "enumeration" posiada niepoprawną zawartość: {%1} nie jest wartością typu %2. - Namespace prefix of qualified name %1 is not defined. Przedrostek przestrzeni nazw występujący w pełnej nazwie %1 nie jest zdefiniowany. - - %1 element %2 is not a valid restriction of the %3 element it redefines: %4. Element %1 (%2) nie jest poprawnym ograniczeniem elementu %3 który redefiniuje: %4. - Empty particle cannot be derived from non-empty particle. Pusty element nie może być wywiedziony z niepustego elementu. - Derived particle is missing element %1. Brak elementu %1 w wywiedzionym elemencie. - Derived element %1 is missing value constraint as defined in base particle. Brak ograniczenia wartości w wywiedzionym elemencie %1 takiego jak w podstawowym elemencie. - Derived element %1 has weaker value constraint than base particle. Wywiedziony element %1 posiada słabsze ograniczenie wartości niż element podstawowy. - Fixed value constraint of element %1 differs from value constraint in base particle. Ograniczenie stałej wartości elementu %1 różni się od ograniczenia wartości w podstawowym elemencie. - Derived element %1 cannot be nillable as base element is not nillable. Wywiedziony element %1 może być zerowalny ponieważ element podstawowy nie jest zerowalny. - Block constraints of derived element %1 must not be more weaker than in the base element. Ograniczenia blokujące dla wywiedzionego elementu %1 nie mogą być słabsze od ograniczeń w elemencie podstawowym. - Simple type of derived element %1 cannot be validly derived from base element. Typ prosty w elemencie wywiedzionym %1 nie może być poprawnie wywiedziony z elementu podstawowego. - Complex type of derived element %1 cannot be validly derived from base element. Typ złożony w elemencie wywiedzionym %1 nie może być poprawnie wywiedziony z elementu podstawowego. - Element %1 is missing in derived particle. Brak elementu %1 w wywiedzionym elemencie. - Element %1 does not match namespace constraint of wildcard in base particle. Element %1 nie pasuje do ograniczenia przestrzeni nazw dżokera w elemencie podstawowym. - Wildcard in derived particle is not a valid subset of wildcard in base particle. Dżoker w wywiedzionym elemencie nie jest poprawnym podzbiorem dżokera w elemencie podstawowym. - processContent of wildcard in derived particle is weaker than wildcard in base particle. "processContent" dżokera w wywiedzionym elemencie jest słabszy od dżokera w podstawowym elemencie. - Derived particle allows content that is not allowed in the base particle. Wywiedziony element pozwala na zawartość która jest niedozwolona w podstawowym elemencie. - Can not process unknown element %1, expected elements are: %2. Nie można przetworzyć nieznanego elementu %1, oczekiwanymi elementami są: %2. - Element %1 is not allowed in this scope, possible elements are: %2. Element %1 jest niedozwolony w tym zakresie, możliwymi elementami są: %2. - Child element is missing in that scope, possible child elements are: %1. Brak podelementu w tym zakresie, możliwymi podelementami są: %1. - Document is not a XML schema. Dokument nie jest schematem XML. - %1 attribute of %2 element contains invalid content: {%3} is not a value of type %4. Atrybut %1 elementu %2 posiada niepoprawną zawartość: {%3} nie jest wartością typu %4. - %1 attribute of %2 element contains invalid content: {%3}. Atrybut %1 elementu %2 posiada niepoprawną zawartość: {%3}. - Target namespace %1 of included schema is different from the target namespace %2 as defined by the including schema. Docelowa przestrzeń nazw %1 załączonego schematu jest różna od docelowej przestrzeni nazw %2 która jest zdefiniowana w schemacie załączającym. - - Target namespace %1 of imported schema is different from the target namespace %2 as defined by the importing schema. Docelowa przestrzeń nazw %1 zaimportowanego schematu jest różna od docelowej przestrzeni nazw %2 która jest zdefiniowana w schemacie importującym. - %1 element is not allowed to have the same %2 attribute value as the target namespace %3. Element %1 nie może zawierać tej samej wartości atrybutu %2 co docelowa przestrzeń nazw %3. - %1 element without %2 attribute is not allowed inside schema without target namespace. Element %1 bez atrybutu %2 jest niedozwolony wewnątrz schematu bez docelowej przestrzeni nazw. - - %1 element is not allowed inside %2 element if %3 attribute is present. Element %1 jest niedozwolony wewnątrz elementu %2 jeśli jest obecny atrybut %3. - - - %1 element has neither %2 attribute nor %3 child element. Element %1 nie posiada ani atrybutu %2 ani podelementu %3. - - - - - - - - - - - - - - %1 element with %2 child element must not have a %3 attribute. Element %1 z podelementem %2 nie może mieć atrybutu %3. - %1 attribute of %2 element must be %3 or %4. Atrybutem %1 elementu %2 musi być %3 lub %4. - %1 attribute of %2 element must have a value of %3. Atrybut %1 elementu %2 musi posiadać wartość %3. - - %1 attribute of %2 element must have a value of %3 or %4. Atrybut %1 elementu %2 musi posiadać wartość %3 lub %4. - - - - - - - - - - - - - - %1 element must not have %2 and %3 attribute together. Element %1 nie może posiadać jednocześnie atrybutów %2 i %3. - - Content of %1 attribute of %2 element must not be from namespace %3. Zawartość atrybutu %1 elementu %2 nie może pochodzić z przestrzeni nazw %3. - - %1 attribute of %2 element must not be %3. Atrybut %1 elementu %2 nie może być %3. - %1 attribute of %2 element must have the value %3 because the %4 attribute is set. Atrybut %1 elementu %2 musi zawierać wartość %3 ponieważ atrybut %4 jest ustawiony. - Specifying use='prohibited' inside an attribute group has no effect. Podawanie: use='prohibited' wewnątrz grupy atrybutów nie przynosi żadnego efektu. - %1 element must have either %2 or %3 attribute. Element %1 musi zawierać atrybut %2 albo %3. - %1 element must have either %2 attribute or %3 or %4 as child element. Element %1 musi zawierać albo atrybut %2 albo %3 lub %4 jako podelement. - %1 element requires either %2 or %3 attribute. Element %1 wymaga atrybutu %2 albo %3. - Text or entity references not allowed inside %1 element Tekst ani odwołanie nie są dozwolone wewnątrz elementu %1 - - %1 attribute of %2 element must contain %3, %4 or a list of URIs. Atrybut %1 elementu %2 musi zawierać %3, %4 lub listę URI. - %1 element is not allowed in this context. Element %1 jest niedozwolony w tym kontekście. - %1 attribute of %2 element has larger value than %3 attribute. Atrybut %1 elementu %2 posiada większą wartość niż atrybut %3. - Prefix of qualified name %1 is not defined. Przedrostek w pełnej nazwie %1 nie jest zdefiniowany. - - %1 attribute of %2 element must either contain %3 or the other values. Atrybut %1 elementu %2 musi zawierać albo %3 albo inne wartości. - Component with ID %1 has been defined previously. Komponent o identyfikatorze %1 został uprzednio zdefiniowany. - Element %1 already defined. Element %1 jest już zdefiniowany. - Attribute %1 already defined. Atrybut %1 jest już zdefiniowany. - Type %1 already defined. Typ %1 jest już zdefiniowany. - Attribute group %1 already defined. Grupa atrybutów %1 jest już zdefiniowana. - Element group %1 already defined. Grupa elementów %1 jest już zdefiniowana. - Notation %1 already defined. Zapis %1 jest już zdefiniowany. - Identity constraint %1 already defined. Narzucenie niepowtarzalności %1 jest już zdefiniowane. - Duplicated facets in simple type %1. Powielone aspekty w prostym typie %1. - - - %1 is not valid according to %2. Ponieważ nie wiadomo co jest podmiotem nie można stwierdzić czy to ma być "poprawnym", "poprawną" czy "poprawne" %1 nie jest poprawne według %2. - String content does not match the length facet. Wartość ciągu koliduje z aspektem "length". - String content does not match the minLength facet. Wartość ciągu koliduje z aspektem "minLength". - String content does not match the maxLength facet. Wartość ciągu koliduje z aspektem "maxLength". - String content does not match pattern facet. Wartość ciągu koliduje z aspektem "pattern". - String content is not listed in the enumeration facet. Wartość ciągu nie widnieje na liście aspektu "enumeration". - Signed integer content does not match the maxInclusive facet. Wartość liczby całkowitej koliduje z aspektem "maxInclusive". - Signed integer content does not match the maxExclusive facet. Wartość liczby całkowitej koliduje z aspektem "maxExclusive". - Signed integer content does not match the minInclusive facet. Wartość liczby całkowitej koliduje z aspektem "minInclusive". - Signed integer content does not match the minExclusive facet. Wartość liczby całkowitej koliduje z aspektem "minExclusive". - Signed integer content is not listed in the enumeration facet. Wartość liczby całkowitej nie widnieje na liście aspektu "enumeration". - Signed integer content does not match pattern facet. Wartość liczby całkowitej koliduje z aspektem "pattern". - Signed integer content does not match in the totalDigits facet. Wartość liczby całkowitej koliduje z aspektem "totalDigits". - Unsigned integer content does not match the maxInclusive facet. Wartość liczby naturalnej koliduje z aspektem "maxInclusive". - Unsigned integer content does not match the maxExclusive facet. Wartość liczby naturalnej koliduje z aspektem "maxExclusive". - Unsigned integer content does not match the minInclusive facet. Wartość liczby naturalnej koliduje z aspektem "minInclusive". - Unsigned integer content does not match the minExclusive facet. Wartość liczby naturalnej koliduje z aspektem "minExclusive". - Unsigned integer content is not listed in the enumeration facet. Wartość liczby naturalnej nie widnieje na liście aspektu "enumeration". - Unsigned integer content does not match pattern facet. Wartość liczby naturalnej koliduje z aspektem "pattern". - Unsigned integer content does not match in the totalDigits facet. Wartość liczby naturalnej koliduje z aspektem "totalDigits". - Double content does not match the maxInclusive facet. Wartość liczby rzeczywistej koliduje z aspektem "maxInclusive". - Double content does not match the maxExclusive facet. Wartość liczby rzeczywistej koliduje z aspektem "maxExclusive". - Double content does not match the minInclusive facet. Wartość liczby rzeczywistej koliduje z aspektem "minInclusive". - Double content does not match the minExclusive facet. Wartość liczby rzeczywistej koliduje z aspektem "minExclusive". - Double content is not listed in the enumeration facet. Wartość liczby rzeczywistej nie widnieje na liście aspektu "enumeration". - Double content does not match pattern facet. Wartość liczby rzeczywistej koliduje z aspektem "pattern". - Decimal content does not match in the fractionDigits facet. Wartość liczby rzeczywistej koliduje z aspektem "fractionDigits". - Decimal content does not match in the totalDigits facet. Wartość liczby rzeczywistej koliduje z aspektem "totalDigits". - Date time content does not match the maxInclusive facet. Zawartość daty i czasu koliduje z aspektem "maxInclusive". - Date time content does not match the maxExclusive facet. Zawartość daty i czasu koliduje z aspektem "maxExclusive". - Date time content does not match the minInclusive facet. Zawartość daty i czasu koliduje z aspektem "minInclusive". - Date time content does not match the minExclusive facet. Zawartość daty i czasu koliduje z aspektem "minExclusive". - Date time content is not listed in the enumeration facet. Zawartość daty i czasu nie widnieje na liście aspektu "enumeration". - Date time content does not match pattern facet. Zawartość daty i czasu koliduje z aspektem "pattern". - Duration content does not match the maxInclusive facet. Wartość czasu trwania koliduje z aspektem "maxInclusive". - Duration content does not match the maxExclusive facet. Wartość czasu trwania koliduje z aspektem "maxExclusive". - Duration content does not match the minInclusive facet. Wartość czasu trwania koliduje z aspektem "minInclusive". - Duration content does not match the minExclusive facet. Wartość czasu trwania koliduje z aspektem "minExclusive". - Duration content is not listed in the enumeration facet. Wartość czasu trwania nie widnieje na liście aspektu "enumeration". - Duration content does not match pattern facet. Wartość czasu trwania koliduje z aspektem "pattern". - Boolean content does not match pattern facet. Wartość boolowska koliduje z aspektem "pattern". - Binary content does not match the length facet. Wartość binarna koliduje z aspektem "length". - Binary content does not match the minLength facet. Wartość binarna koliduje z aspektem "minLength". - Binary content does not match the maxLength facet. Wartość binarna koliduje z aspektem "maxLength". - Binary content is not listed in the enumeration facet. Wartość binarna nie widnieje na liście aspektu "enumeration". - Invalid QName content: %1. Niepoprawna zawartość QName: %1. - QName content is not listed in the enumeration facet. Zawartość QName nie widnieje na liście aspektu "enumeration". - QName content does not match pattern facet. Zawartość QName koliduje z aspektem "pattern". - Notation content is not listed in the enumeration facet. Zapis zawartości nie widnieje na liście aspektu "enumeration". - List content does not match length facet. Zawartość listy koliduje z aspektem "length". - List content does not match minLength facet. Zawartość listy koliduje z aspektem "minLength". - List content does not match maxLength facet. Zawartość listy koliduje z aspektem "maxLength". - List content is not listed in the enumeration facet. Zawartość listy nie widnieje na liście aspektu "enumeration". - List content does not match pattern facet. Zawartość listy koliduje z aspektem "pattern". - Union content is not listed in the enumeration facet. Zawartość unii nie widnieje na liście aspektu "enumeration". - Union content does not match pattern facet. Zawartość unii koliduje z aspektem "pattern". - Data of type %1 are not allowed to be empty. Dane typu %1 nie mogą być puste. - Element %1 is missing child element. Brak wymaganego podelementu w elemencie %1. - There is one IDREF value with no corresponding ID: %1. Istnieje wartość IDREF bez odpowiadającej jej wartości ID: %1. - Loaded schema file is invalid. Załadowany plik nie jest poprawnym plikiem ze schematem. - %1 contains invalid data. %1 zawiera niepoprawne dane. - xsi:schemaLocation namespace %1 has already appeared earlier in the instance document. Przestrzeń nazw "xsi:schemaLocation" %1 wystąpiła już wcześniej w dokumencie. - xsi:noNamespaceSchemaLocation cannot appear after the first no-namespace element or attribute. "xsi:noNamespaceSchemaLocation" nie może wystąpić po pierwszym elemencie lub atrybucie który nie jest przestrzenią nazw. - No schema defined for validation. Brak zdefiniowanego schematu dla walidacji. - No definition for element %1 available. Brak dostępnej definicji dla elementu %1. - - - Specified type %1 is not known to the schema. Podany typ %1 nie jest schematowi znany. - Element %1 is not defined in this scope. Element %1 nie jest zdefiniowany w tym zakresie. - Declaration for element %1 does not exist. Brak deklaracji dla elementu %1. - Element %1 contains invalid content. Element %1 posiada niepoprawną zawartość. - Element %1 is declared as abstract. Element %1 jest zadeklarowany jako abstrakcyjny. - Element %1 is not nillable. Element %1 nie jest zerowalny. - Attribute %1 contains invalid data: %2 Atrybut %1 zawiera niepoprawne dane: %2 - Element contains content although it is nillable. Element posiada zawartość chociaż jest zerowalny. - Fixed value constraint not allowed if element is nillable. Ograniczenie stałej wartości jest niedozwolone gdy element jest zerowalny. - Element %1 cannot contain other elements, as it has a fixed content. Element %1 nie może zawierać innych elementów ponieważ posiada on stałą zawartość. - Specified type %1 is not validly substitutable with element type %2. Podany typ %1 nie jest poprawnie zastępowalny typem elementu %2. - Complex type %1 is not allowed to be abstract. Typ złożony %1 nie może być abstrakcyjny. - Element %1 contains not allowed attributes. Element %1 zawiera niedozwolone atrybuty. - - Element %1 contains not allowed child element. Element %1 zawiera niedozwolony podelement. - - Content of element %1 does not match its type definition: %2. Zawartość elementu %1 nie pasuje do jego definicji typu: %2. - - - Content of element %1 does not match defined value constraint. Zawartość elementu %1 nie pasuje do zdefiniowanego ograniczenia wartości. - Element %1 contains not allowed child content. Element %1 zawiera niedozwolony podelement. - Element %1 contains not allowed text content. Element %1 zawiera niedozwolony text. - Element %1 is missing required attribute %2. Brak wymaganego atrybutu %2 w elemencie %1. - Attribute %1 does not match the attribute wildcard. Atrybut %1 nie pasuje do atrybutu dżokera. - Declaration for attribute %1 does not exist. Brak deklaracji atrybutu %1. - Element %1 contains two attributes of type %2. Element %1 posiada dwa atrybuty typu %2. - Attribute %1 contains invalid content. Atrybut %1 posiada niepoprawną zawartość. - Element %1 contains unknown attribute %2. Element %1 posiada nieznany atrybut %2. - - Content of attribute %1 does not match its type definition: %2. Zawartość atrybutu %1 nie pasuje do jego definicji typu: %2. - - Content of attribute %1 does not match defined value constraint. Zawartość elementu %1 nie pasuje do zdefiniowanego ograniczenia wartości. - Non-unique value found for constraint %1. Znaleziono nieunikatową wartość dla ograniczenia %1. - Key constraint %1 contains absent fields. Ograniczenie klucza %1 zawiera nieobecne pola. - Key constraint %1 contains references nillable element %2. - No referenced value found for key reference %1. Brak wartości do której odwołuje się klucz %1. - More than one value found for field %1. Znaleziono więcej niż jedną wartość dla pola %1. - Field %1 has no simple type. Pole %1 nie posiada prostego typu. - ID value '%1' is not unique. Wartość ID "%1" nie jest unikatowa. - '%1' attribute contains invalid QName content: %2. Atrybut "%1" zawiera niepoprawną zawartość QName: %2. -- cgit v0.12 From cc1b6475a99994908cbd6309a08fd08614f18221 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 10 Aug 2010 16:30:18 +0100 Subject: Test backing store is deleted after: partial reveal, full reveal, hide After the following sequence: * widget starts hidden * Partially reveal widget * Fully reveal widget * Hide widget widget's backing store should be deleted, when running on Symbian. Task-number: QTBUG-12800 Reviewed-by: Jason Barron --- tests/auto/qwidget/tst_qwidget.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index f722f89..e6e8970 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -9758,6 +9758,43 @@ void tst_QWidget::destroyBackingStoreWhenHidden() QVERIFY(0 != backingStore(parent)); QVERIFY(0 == backingStore(child)); } + + // 6. Partial reveal followed by full reveal + { + QWidget upper; + upper.setAutoFillBackground(true); + upper.setPalette(Qt::red); + upper.setGeometry(50, 50, 100, 100); + + QWidget lower; + lower.setAutoFillBackground(true); + lower.setPalette(Qt::green); + lower.setGeometry(50, 50, 100, 100); + + lower.show(); + QTest::qWaitForWindowShown(&lower); + upper.show(); + QTest::qWaitForWindowShown(&upper); + upper.raise(); + + QVERIFY(0 != backingStore(upper)); + QVERIFY(0 == backingStore(lower)); + + // Check that upper obscures lower + QVERIFY(lower.visibleRegion().subtracted(upper.visibleRegion()).isEmpty()); + + // Partially reveal lower + upper.move(100, 100); + + // Completely reveal lower + upper.hide(); + + // Hide lower widget - this should cause its backing store to be deleted + lower.hide(); + + // Check that backing store was deleted + WAIT_AND_VERIFY(0 == backingStore(lower)); + } } #undef WAIT_AND_VERIFY -- cgit v0.12 From b5360eb223d5377beb62008fcc1da48f432dc8dd Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 10 Aug 2010 17:08:37 +0100 Subject: Test backing store is deleted after reparenting a visible native child widget After the following sequence: * Create a TLW, parent1 * Create a child of parent1, and make it a native widget * Create another TLW, parent2 * Show parent1 and parent2 * Reparent child so its parent is now parent2 * Hide parent1 parent1's backing store should be deleted, when running on Symbian. Task-number: QTBUG-12817 Reviewed-by: Jason Barron --- tests/auto/qwidget/tst_qwidget.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index e6e8970..ba0be3e 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -9795,6 +9795,43 @@ void tst_QWidget::destroyBackingStoreWhenHidden() // Check that backing store was deleted WAIT_AND_VERIFY(0 == backingStore(lower)); } + + // 7. Reparenting of visible native child widget + { + QWidget parent1; + parent1.setAutoFillBackground(true); + parent1.setPalette(Qt::green); + parent1.setGeometry(50, 50, 100, 100); + + QWidget *child = new QWidget(&parent1); + child->winId(); + child->setAutoFillBackground(true); + child->setPalette(Qt::red); + child->setGeometry(10, 10, 30, 30); + + QWidget parent2; + parent2.setAutoFillBackground(true); + parent2.setPalette(Qt::blue); + parent2.setGeometry(150, 150, 100, 100); + + parent1.show(); + QTest::qWaitForWindowShown(&parent1); + QVERIFY(0 != backingStore(parent1)); + + parent2.show(); + QTest::qWaitForWindowShown(&parent2); + QVERIFY(0 != backingStore(parent2)); + + child->setParent(&parent2); + child->setGeometry(10, 10, 30, 30); + child->show(); + + parent1.hide(); + WAIT_AND_VERIFY(0 == backingStore(parent1)); + + parent2.hide(); + WAIT_AND_VERIFY(0 == backingStore(parent2)); + } } #undef WAIT_AND_VERIFY -- cgit v0.12 From cb8d2dcc70846ccd9384a8b94b2a80821c0eb285 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 10 Aug 2010 16:34:19 +0100 Subject: Replaced backing store reference count with list of visible widgets Previously, the following sequence: 1. Widget is hidden 2. Widget partially revealed 3. Widget fully revealed resulted in the reference count of the backing store owned by the widget's window() being incremented twice. This patch replaces the simple reference count with a QSet which stores pointers to the native widgets which are descendents of the backing store owner, and which are currently visible. The sequence above therefore results in just a single insertion at step (2), with step (3) having no effect on the backing store. The QRefCountedWidgetBackingStore class has been renamed QWidgetBackingStoreTracker to better reflect its purpose. Task-number: QTBUG-12800 Task-number: QTBUG-12817 Reviewed-by: Jason Barron --- src/gui/kernel/qapplication_s60.cpp | 11 +++---- src/gui/kernel/qwidget.cpp | 61 +++++++++++++++++++++++++++---------- src/gui/kernel/qwidget_p.h | 17 ++++++----- 3 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 559bb6a..df93bc5 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -1926,27 +1926,24 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent QWidget *const window = w->window(); if (!window->d_func()->maybeTopData()) break; - QRefCountedWidgetBackingStore &backingStore = window->d_func()->maybeTopData()->backingStore; + QWidgetBackingStoreTracker &backingStore = window->d_func()->maybeTopData()->backingStore; if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::ENotVisible) { #ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS S60->wsSession().SendEffectCommand(ETfxCmdDeallocateLayer); #endif - // Decrement backing store reference count - backingStore.deref(); + backingStore.unregisterWidget(w); // In order to ensure that any resources used by the window surface // are immediately freed, we flush the WSERV command buffer. S60->wsSession().Flush(); } else if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::EPartiallyVisible) { if (backingStore.data()) { - // Increment backing store reference count - backingStore.ref(); + backingStore.registerWidget(w); } else { #ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS S60->wsSession().SendEffectCommand(ETfxCmdRestoreLayer); #endif - // Create backing store with an initial reference count of 1 backingStore.create(window); - backingStore.ref(); + backingStore.registerWidget(w); w->d_func()->invalidateBuffer(w->rect()); w->repaint(); } diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index aaa29a1..dad4848 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -162,47 +162,76 @@ static inline bool hasBackingStoreSupport() extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp +/*! + \internal + \class QWidgetBackingStoreTracker + \brief Class which allows tracking of which widgets are using a given backing store -QRefCountedWidgetBackingStore::QRefCountedWidgetBackingStore() + QWidgetBackingStoreTracker is a thin wrapper around a QWidgetBackingStore pointer, + which maintains a list of the QWidgets which are currently using the backing + store. This list is modified via the registerWidget and unregisterWidget functions. + */ + +QWidgetBackingStoreTracker::QWidgetBackingStoreTracker() : m_ptr(0) - , m_count(0) { } -QRefCountedWidgetBackingStore::~QRefCountedWidgetBackingStore() +QWidgetBackingStoreTracker::~QWidgetBackingStoreTracker() { delete m_ptr; } -void QRefCountedWidgetBackingStore::create(QWidget *widget) +/*! + \internal + Destroy the contained QWidgetBackingStore, if not null, and clear the list of + widgets using the backing store, then create a new QWidgetBackingStore, providing + the QWidget. + */ +void QWidgetBackingStoreTracker::create(QWidget *widget) { destroy(); m_ptr = new QWidgetBackingStore(widget); - m_count = 0; } -void QRefCountedWidgetBackingStore::destroy() +/*! + \internal + Destroy the contained QWidgetBackingStore, if not null, and clear the list of + widgets using the backing store. + */ +void QWidgetBackingStoreTracker::destroy() { delete m_ptr; m_ptr = 0; - m_count = 0; + m_widgets.clear(); } -void QRefCountedWidgetBackingStore::ref() +/*! + \internal + Add the widget to the list of widgets currently using the backing store. + If the widget was already in the list, this function is a no-op. + */ +void QWidgetBackingStoreTracker::registerWidget(QWidget *w) { Q_ASSERT(m_ptr); - ++m_count; + Q_ASSERT(w->internalWinId()); + Q_ASSERT(qt_widget_private(w)->maybeBackingStore() == m_ptr); + m_widgets.insert(w); } -void QRefCountedWidgetBackingStore::deref() +/*! + \internal + Remove the widget from the list of widgets currently using the backing store. + If the widget was in the list, and removing it causes the list to be empty, + the backing store is deleted. + If the widget was not in the list, this function is a no-op. + */ +void QWidgetBackingStoreTracker::unregisterWidget(QWidget *w) { - if (m_count) { - Q_ASSERT(m_ptr); - if (0 == --m_count) { - delete m_ptr; - m_ptr = 0; - } + if (m_widgets.remove(w) && m_widgets.isEmpty()) { + delete m_ptr; + m_ptr = 0; } } diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 587d7fb..4a79dc7 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -110,17 +110,18 @@ class QWidgetItemV2; class QStyle; -class Q_AUTOTEST_EXPORT QRefCountedWidgetBackingStore +class Q_AUTOTEST_EXPORT QWidgetBackingStoreTracker { + public: - QRefCountedWidgetBackingStore(); - ~QRefCountedWidgetBackingStore(); + QWidgetBackingStoreTracker(); + ~QWidgetBackingStoreTracker(); void create(QWidget *tlw); void destroy(); - void ref(); - void deref(); + void registerWidget(QWidget *w); + void unregisterWidget(QWidget *w); inline QWidgetBackingStore* data() { @@ -143,11 +144,11 @@ public: } private: - Q_DISABLE_COPY(QRefCountedWidgetBackingStore) + Q_DISABLE_COPY(QWidgetBackingStoreTracker) private: QWidgetBackingStore* m_ptr; - int m_count; + QSet m_widgets; }; struct QTLWExtra { @@ -156,7 +157,7 @@ struct QTLWExtra { // Regular pointers (keep them together to avoid gaps on 64 bits architectures). QIcon *icon; // widget icon QPixmap *iconPixmap; - QRefCountedWidgetBackingStore backingStore; + QWidgetBackingStoreTracker backingStore; QWindowSurface *windowSurface; QPainter *sharedPainter; -- cgit v0.12 From ea85300f6456ef1bd9702296f3068edf0795736e Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 17 Aug 2010 16:05:01 +0100 Subject: Refactored handling of window visibility events on Symbian Task-number: QTBUG-12817 Reviewed-by: Jason Barron --- src/gui/kernel/qapplication_s60.cpp | 62 +++++++++++++++++++++---------------- src/gui/kernel/qt_s60_p.h | 1 + 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index df93bc5..670bf34 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -135,6 +135,38 @@ void QS60Data::setStatusPaneAndButtonGroupVisibility(bool statusPaneVisible, boo } #endif +void QS60Data::controlVisibilityChanged(CCoeControl *control, bool visible) +{ + if (QWidgetPrivate::mapper && QWidgetPrivate::mapper->contains(control)) { + QWidget *const widget = QWidgetPrivate::mapper->value(control); + QWidget *const window = widget->window(); + if (QTLWExtra *topData = qt_widget_private(window)->maybeTopData()) { + QWidgetBackingStoreTracker &backingStore = topData->backingStore; + if (visible) { + if (backingStore.data()) { + backingStore.registerWidget(widget); + } else { +#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS + S60->wsSession().SendEffectCommand(ETfxCmdRestoreLayer); +#endif + backingStore.create(window); + backingStore.registerWidget(widget); + qt_widget_private(widget)->invalidateBuffer(widget->rect()); + widget->repaint(); + } + } else { +#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS + S60->wsSession().SendEffectCommand(ETfxCmdDeallocateLayer); +#endif + backingStore.unregisterWidget(widget); + // In order to ensure that any resources used by the window surface + // are immediately freed, we flush the WSERV command buffer. + S60->wsSession().Flush(); + } + } + } +} + bool qt_nograb() // application no-grab option { #if defined(QT_DEBUG) @@ -1922,32 +1954,10 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent if (callSymbianEventFilters(symbianEvent)) return 1; const TWsVisibilityChangedEvent *visChangedEvent = event->VisibilityChanged(); - QWidget *w = QWidgetPrivate::mapper->value(control); - QWidget *const window = w->window(); - if (!window->d_func()->maybeTopData()) - break; - QWidgetBackingStoreTracker &backingStore = window->d_func()->maybeTopData()->backingStore; - if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::ENotVisible) { -#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS - S60->wsSession().SendEffectCommand(ETfxCmdDeallocateLayer); -#endif - backingStore.unregisterWidget(w); - // In order to ensure that any resources used by the window surface - // are immediately freed, we flush the WSERV command buffer. - S60->wsSession().Flush(); - } else if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::EPartiallyVisible) { - if (backingStore.data()) { - backingStore.registerWidget(w); - } else { -#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS - S60->wsSession().SendEffectCommand(ETfxCmdRestoreLayer); -#endif - backingStore.create(window); - backingStore.registerWidget(w); - w->d_func()->invalidateBuffer(w->rect()); - w->repaint(); - } - } + if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::ENotVisible) + S60->controlVisibilityChanged(control, false); + else if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::EPartiallyVisible) + S60->controlVisibilityChanged(control, true); return 1; } break; diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index a18ea07..ad6a99a 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -164,6 +164,7 @@ public: static inline CEikButtonGroupContainer* buttonGroupContainer(); static void setStatusPaneAndButtonGroupVisibility(bool statusPaneVisible, bool buttonGroupVisible); #endif + static void controlVisibilityChanged(CCoeControl *control, bool visible); #ifdef Q_OS_SYMBIAN TTrapHandler *s60InstalledTrapHandler; -- cgit v0.12 From 3ae514c6cd55cb0f63eea13c9d23593db38beee8 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 18 Aug 2010 11:37:05 +0200 Subject: unbreak qmake autotest ok, that was a rather obvious braindamage ... :} --- tests/auto/qmake/tst_qmake.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/auto/qmake/tst_qmake.cpp b/tests/auto/qmake/tst_qmake.cpp index 825e49b..1a3f843 100644 --- a/tests/auto/qmake/tst_qmake.cpp +++ b/tests/auto/qmake/tst_qmake.cpp @@ -482,14 +482,14 @@ void tst_qmake::substitutes() { QString workDir = base_path + "/testdata/substitutes"; QVERIFY( test_compiler.qmake( workDir, "test" )); - QVERIFY( test_compiler.exists( workDir, "test", Exe, "1.0.0" )); - //QVERIFY( test_compiler.exists( workDir, "sub/test2", Exe, "1.0.0" )); + QVERIFY( test_compiler.exists( workDir, "test", Plain, "" )); + //QVERIFY( test_compiler.exists( workDir, "sub/test2", Plain, "" )); QVERIFY( test_compiler.makeDistClean( workDir )); QString buildDir = base_path + "/testdata/substitutes_build"; QVERIFY( test_compiler.qmake( workDir, "test", buildDir )); - QVERIFY( test_compiler.exists( buildDir, "test", Exe, "1.0.0" )); - //QVERIFY( test_compiler.exists( buildDir, "sub/test2", Exe, "1.0.0" )); + QVERIFY( test_compiler.exists( buildDir, "test", Plain, "" )); + //QVERIFY( test_compiler.exists( buildDir, "sub/test2", Plain, "" )); QVERIFY( test_compiler.makeDistClean( buildDir )); } -- cgit v0.12 From 3e4f85dbbdb8b8a62e33f8680b0cc87ce2ed9e7e Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 18 Aug 2010 10:00:48 +0200 Subject: respect the layout direction in the default text option This fixes a regression against 4.6 where setting the default layout direction for rich text got ignored Task-number: QT-3566 Reviewed-by: Jiang Jiang --- src/gui/text/qtextobject.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp index 5fb3384..d25fb05 100644 --- a/src/gui/text/qtextobject.cpp +++ b/src/gui/text/qtextobject.cpp @@ -1156,6 +1156,10 @@ Qt::LayoutDirection QTextBlock::textDirection() const if (dir != Qt::LayoutDirectionAuto) return dir; + dir = p->defaultTextOption.textDirection(); + if (dir != Qt::LayoutDirectionAuto) + return dir; + const QString buffer = p->buffer(); const int pos = position(); -- cgit v0.12 From bc1c472967c78579178cf7e98ab999842fee3102 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 11 Aug 2010 12:58:29 +0100 Subject: Ensure native window is considered invisible when it gets destroyed The lifetime of the backing store depends, on Symbian, on the visibility of the native windows which are rendering from it. Specifically, once all such windows (i.e. the TLW window and those of any native widget descendents) have become invisible, the backing store is deleted. During re-parenting of a visible native child widget from parent1 to parent2, the following events occur: 1. QWidget::hide() is called on the child 2. The child widget's native control is deleted 3. A new native control is created, with its parent set as parent2->window()->effectiveWinId() Because there is no yield to the event loop between (1) and (2), the application does not receive a 'window hidden' notification as a result of the call to hide(). This means that the child widget is not removed from the list of visible widgets held in the backing store of parent1->window(). This patch ensures that the child is removed from this list during between steps (1) and (2). Task-number: QTBUG-12406 Task-number: QTBUG-12817 Reviewed-by: Jason Barron --- src/gui/kernel/qwidget_s60.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 56349ad..319f330 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -684,6 +684,12 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f) QSymbianControl *old_winid = static_cast(wasCreated ? data.winid : 0); if ((q->windowType() == Qt::Desktop)) old_winid = 0; + + // old_winid may not have received a 'not visible' visibility + // changed event before being destroyed; make sure that it is + // removed from the backing store's list of visible windows. + S60->controlVisibilityChanged(old_winid, false); + setWinId(0); // hide and reparent our own window away. Otherwise we might get -- cgit v0.12 From 0129e6e48613378a1a5548b2744ec7f9ae0d9961 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 17 Aug 2010 16:08:02 +0100 Subject: Removed QEXPECT_FAIL macros for test case which now passes Task-number: QTBUG-12406 Reviewed-by: Jason Barron --- tests/auto/qwidget/tst_qwidget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index ba0be3e..ef05b91 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -9742,7 +9742,6 @@ void tst_QWidget::destroyBackingStoreWhenHidden() QVERIFY(0 != backingStore(child)); // Parent is obscured, therefore its backing store should be destroyed - QEXPECT_FAIL("", "QTBUG-12406", Continue); QVERIFY(0 == backingStore(parent)); // Disable full screen -- cgit v0.12 From bc0328e334f456c789a18eb254af4427ea730187 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Wed, 18 Aug 2010 13:31:55 +0200 Subject: qdoc: Reorganized the QML elements table to be a dictionary... ...and a set of functional group pages. --- tools/qdoc3/htmlgenerator.cpp | 107 +++++++++++++++++++++++++++++------------- tools/qdoc3/node.cpp | 23 ++++++++- 2 files changed, 95 insertions(+), 35 deletions(-) diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 50f8b56..8215ddc 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -4422,57 +4422,98 @@ bool HtmlGenerator::generatePageElement(QXmlStreamWriter& writer, return true; if (node->access() == Node::Private) return false; - if (!node->isInnerNode()) - return false; + QString t; + QString url = PageGenerator::fileName(node); QString title; QString rawTitle; QString fullTitle; - const InnerNode* inner = static_cast(node); - - writer.writeStartElement("page"); + QStringList pageWords; QXmlStreamAttributes attributes; - QString t; + + writer.writeStartElement("page"); t.setNum(id++); - switch (node->type()) { - case Node::Fake: - { - const FakeNode* fake = static_cast(node); - title = fake->fullTitle(); - break; - } - case Node::Class: - { - title = node->name() + " Class Reference"; + + if (node->isInnerNode()) { + const InnerNode* inner = static_cast(node); + switch (node->type()) { + case Node::Fake: + { + const FakeNode* fake = static_cast(node); + title = fake->fullTitle(); + pageWords << title; + break; + } + case Node::Class: + { + title = node->name() + " Class Reference"; + pageWords << node->name() << "class" << "reference"; + break; + } + case Node::Namespace: + { + rawTitle = marker->plainName(inner); + fullTitle = marker->plainFullName(inner); + title = rawTitle + " Namespace Reference"; + pageWords << rawTitle << "namespace" << "reference"; + break; + } + default: + title = node->name(); + pageWords << title; break; } - case Node::Namespace: - { - rawTitle = marker->plainName(inner); - fullTitle = marker->plainFullName(inner); - title = rawTitle + " Namespace Reference"; + + if (!inner->pageKeywords().isEmpty()) + pageWords << inner->pageKeywords(); + } + else { + switch (node->type()) { + case Node::Enum: + { + title = node->name() + " Enum Reference"; + pageWords << node->name() << "enum" << "type"; + url += "#" + node->name() + "-enum"; + break; + } + case Node::Function: + { + title = node->name() + " Function Reference"; + pageWords << node->name() << "function"; + url += "#" + node->name(); + break; + } + case Node::Property: + { + title = node->name() + " Property Reference"; + pageWords << node->name() << "property"; + url += "#" + node->name() + "-prop"; + break; + } + case Node::Typedef: + { + title = node->name() + " Type Reference"; + pageWords << node->name() << "typedef" << "type"; + url += "#" + node->name(); + break; + } + default: + title = node->name(); + pageWords << title; break; } - default: - title = node->name(); - break; } + writer.writeAttribute("id",t); writer.writeStartElement("pageWords"); - writer.writeCharacters(title); - if (!inner->pageKeywords().isEmpty()) { - const QStringList& w = inner->pageKeywords(); - for (int i = 0; i < w.size(); ++i) { - writer.writeCharacters(" "); - writer.writeCharacters(w.at(i).toLocal8Bit().constData()); - } - } + writer.writeCharacters(pageWords.join(" ")); + writer.writeEndElement(); writer.writeStartElement("pageTitle"); writer.writeCharacters(title); writer.writeEndElement(); writer.writeStartElement("pageUrl"); - writer.writeCharacters(PageGenerator::fileName(node)); + writer.writeCharacters(url); writer.writeEndElement(); writer.writeStartElement("pageType"); switch (node->pageType()) { diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 259641e..41f90d5 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -652,8 +652,14 @@ NodeList InnerNode::overloads(const QString &funcName) const InnerNode::InnerNode(Type type, InnerNode *parent, const QString& name) : Node(type, parent, name) { - if (type == Class) + switch (type) { + case Class: + case Namespace: setPageType(ApiPage); + break; + default: + break; + } } /*! @@ -845,6 +851,19 @@ bool LeafNode::isInnerNode() const LeafNode::LeafNode(Type type, InnerNode *parent, const QString& name) : Node(type, parent, name) { + switch (type) { + case Enum: + case Function: + case Typedef: + case Variable: + case QmlProperty: + case QmlSignal: + case QmlMethod: + setPageType(ApiPage); + break; + default: + break; + } } /*! @@ -1600,7 +1619,7 @@ QmlPropertyNode::QmlPropertyNode(QmlPropGroupNode *parent, des(Trool_Default), att(attached) { - // nothing. + setPageType(ApiPage); } /*! -- cgit v0.12 From ccb77caba466fe0e4d28a809129513cefdbd5575 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Wed, 18 Aug 2010 13:37:21 +0200 Subject: Doc: Fixing overlapping text in header list --- doc/src/template/style/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css index 190c60a..6f2bdce 100755 --- a/doc/src/template/style/style.css +++ b/doc/src/template/style/style.css @@ -388,9 +388,9 @@ .shortCut-topleft-inactive { padding-left: 3px; + padding-right: 3px; background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px; height: 20px; - width: 47px; } .shortCut-topleft-inactive span { -- cgit v0.12