Added some missing code snippets to PySide documentation.

This commit is contained in:
Hugo Parente Lima 2011-03-02 17:49:28 -03:00
commit b94f5359b0
12 changed files with 596 additions and 73 deletions

View file

@ -0,0 +1,52 @@
/****************************************************************************
**
** 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 examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
//![0]
import com.nokia.TimeExample 1.0 // import types from the plugin
Clock { // this class is defined in QML (com/nokia/TimeExample/Clock.qml)
Time { // this class is defined in C++ (plugin.cpp)
id: time
}
hours: time.hour
minutes: time.minute
}
//![0]

View file

@ -0,0 +1,144 @@
//! [0]
class TabDialog (QDialog):
def __init__(self, fileName, parent = None):
QDialog.__init__(self, parent)
fileInfo = QFileInfo(fileName)
self.tabWidget = QTabWidget()
self.tabWidget.addTab(GeneralTab(fileInfo), "General")
self.tabWidget.addTab(PermissionsTab(fileInfo), "Permissions")
self.tabWidget.addTab(ApplicationsTab(fileInfo), "Applications")
//! [0]
//! [1] //! [2]
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok
//! [1] //! [3]
| QDialogButtonBox.Cancel)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
//! [2] //! [3]
//! [4]
mainLayout = QVBoxLayout()
mainLayout.addWidget(tabWidget)
mainLayout.addWidget(buttonBox)
self.setLayout(mainLayout)
//! [4]
//! [5]
self.setWindowTitle("Tab Dialog")
//! [5]
//! [6]
class GeneralTab (QWidget):
def __init__(self, fileInfo, parent = None):
QWidget.__init__(self, parent)
fileNameLabel = QLabel("File Name:")
fileNameEdit = QLineEdit(fileInfo.fileName())
pathLabel = QLabel("Path:")
pathValueLabel = QLabel(fileInfo.absoluteFilePath())
pathValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
sizeLabel = QLabel("Size:")
size = fileInfo.size()/1024
sizeValueLabel = QLabel("%d K" % size)
sizeValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
lastReadLabel = QLabel("Last Read:")
lastReadValueLabel = QLabel(fileInfo.lastRead().toString())
lastReadValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
lastModLabel = QLabel("Last Modified:")
lastModValueLabel = QLabel(fileInfo.lastModified().toString())
lastModValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
mainLayout = QVBoxLayout()
mainLayout.addWidget(fileNameLabel)
mainLayout.addWidget(fileNameEdit)
mainLayout.addWidget(pathLabel)
mainLayout.addWidget(pathValueLabel)
mainLayout.addWidget(sizeLabel)
mainLayout.addWidget(sizeValueLabel)
mainLayout.addWidget(lastReadLabel)
mainLayout.addWidget(lastReadValueLabel)
mainLayout.addWidget(lastModLabel)
mainLayout.addWidget(lastModValueLabel)
mainLayout.addStretch(1)
self.setLayout(mainLayout)
//! [6]
//! [7]
class PermissionsTab (QWidget):
def __init__(self, fileInfo, parent = None):
QWidget.__init__(self, parent)
permissionsGroup = QGroupBox("Permissions")
readable = QCheckBox("Readable")
if fileInfo.isReadable():
readable.setChecked(True)
writable = QCheckBox("Writable")
if fileInfo.isWritable():
writable.setChecked(True)
executable = QCheckBox("Executable")
if fileInfo.isExecutable():
executable.setChecked(True)
ownerGroup = QGroupBox("Ownership")
ownerLabel = QLabel("Owner")
ownerValueLabel = QLabel(fileInfo.owner())
ownerValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
groupLabel = QLabel("Group")
groupValueLabel = QLabel(fileInfo.group())
groupValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken)
permissionsLayout = QVBoxLayout()
permissionsLayout.addWidget(readable)
permissionsLayout.addWidget(writable)
permissionsLayout.addWidget(executable)
permissionsGroup.setLayout(permissionsLayout)
ownerLayout = QVBoxLayout()
ownerLayout.addWidget(ownerLabel)
ownerLayout.addWidget(ownerValueLabel)
ownerLayout.addWidget(groupLabel)
ownerLayout.addWidget(groupValueLabel)
ownerGroup.setLayout(ownerLayout)
mainLayout = QVBoxLayout()
mainLayout.addWidget(permissionsGroup)
mainLayout.addWidget(ownerGroup)
mainLayout.addStretch(1)
self.setLayout(mainLayout)
//! [7]
//! [8]
class ApplicationsTab (QWidget):
def __init__(self, fileInfo, parent = None):
QWidget.__init__(self, parent)
topLabel = QLabel("Open with:")
applicationsListBox = QListWidget()
applications = []
for i in range(30):
applications.append("Application %d" %s i)
applicationsListBox.insertItems(0, applications)
if fileInfo.suffix().isEmpty():
alwaysCheckBox = QCheckBox("Always use this application to open this type of file")
else:
alwaysCheckBox = QCheckBox("Always use this application to open files with the extension '%s'" % fileInfo.suffix())
layout = QVBoxLayout()
layout.addWidget(topLabel)
layout.addWidget(applicationsListBox)
layout.addWidget(alwaysCheckBox)
self.setLayout(layout)
//! [8]

View file

@ -0,0 +1,131 @@
/****************************************************************************
**
** 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 examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtUiTools>
#include <QtGui>
#include "textfinder.h"
//! [0]
def __init__(self, parent = None):
QWidget.__init__(self. parent)
formWidget = self.loadUiFile()
//! [1]
self.ui_findButton = qFindChild(QPushButton, self, "findButton")
self.ui_textEdit = qFindChild(QTextEdit, self, "textEdit")
self.ui_lineEdit = qFindChild(QLineEdit, self, "lineEdit")
//! [0] //! [1]
//! [2]
QMetaObject.connectSlotsByName(self)
//! [2]
//! [3a]
self.loadTextFile()
//! [3a]
//! [3b]
layout = QVBoxLayout()
layout.addWidget(formWidget)
self.setLayout(layout)
//! [3b]
//! [3c]
self.setWindowTitle("Text Finder")
self.isFirstTime = True
//! [3c]
//! [4]
def loadUiFile(self):
loader = QUiLoader()
return loader.load(":/forms/textfinder.ui", self)
//! [4]
//! [5]
def loadTextFile(self):
inputFile = QFile(":/forms/input.txt")
inputFile.open(QIODevice.ReadOnly)
in = QTextStream(inputFile)
line = in.readAll()
inputFile.close()
self.ui_textEdit.append(line)
self.ui_textEdit.setUndoRedoEnabled(False)
self.ui_textEdit.setUndoRedoEnabled(True)
//! [5]
//! [6] //! [7]
@Slot()
def on_findButton_clicked(self):
searchString = self.ui_lineEdit.text()
document = self.ui_textEdit.document()
found = False
if not self.isFirstTime:
document.undo()
if not searchString:
QMessageBox.information(self, "Empty Search Field",
"The search field is empty. Please enter a word and click Find.")
else:
highlightCursor = QTextCursor(document)
cursor = QTextCursor(document)
cursor.beginEditBlock()
//! [6]
plainFormat = QTextCharFormat(highlightCursor.charFormat())
colorFormat = QTextCharFormat(plainFormat)
colorFormat.setForeground(Qt.red)
while not highlightCursor.isNull() and not highlightCursor.atEnd():
highlightCursor = document.find(searchString, highlightCursor, QTextDocument.FindWholeWords)
if not highlightCursor.isNull():
found = True
highlightCursor.movePosition(QTextCursor.WordRight, QTextCursor.KeepAnchor)
highlightCursor.mergeCharFormat(colorFormat)
//! [8]
cursor.endEditBlock()
//! [7] //! [9]
self.isFirstTime = False
if not found:
QMessageBox.information(self, "Word Not Found", "Sorry, the word cannot be found.");
//! [8] //! [9]