Adding ./doc from boost

Reviewer: Lauro Moura <lauro.neto@openbossa.org>
          Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
Lauro Neto 2010-04-27 18:12:50 -03:00 • committed by Renato Filho
commit aaece960d3
1108 changed files with 70655 additions and 0 deletions

View file

@ -0,0 +1,350 @@
######################################
#
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
# Contact: Qt Software Information (qt-info@nokia.com)
#
# This file is part of the example classes of the Qt Toolkit.
#
# $QT_BEGIN_LICENSE:LGPL$
# Commercial Usage
# Licensees holding valid Qt Commercial licenses may use self file in
# accordance with the Qt Commercial License Agreement provided with the
# Software or, alternatively, in accordance with the terms contained in
# a written agreement between you and Nokia.
#
# GNU Lesser General Public License Usage
# Alternatively, self 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 self 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.0, included in the file LGPL_EXCEPTION.txt in self
# package.
#
# GNU General Public License Usage
# Alternatively, self file may be used under the terms of the GNU
# General Public License version 3.0 as published by the Free Software
# Foundation and appearing in the file LICENSE.GPL included in the
# packaging of self file. Please review the following information to
# ensure the GNU General Public License version 3.0 requirements will be
# met: http://www.gnu.org/copyleft/gpl.html.
#
# If you are unsure which license is appropriate for your use, please
# contact the sales department at qt-sales@nokia.com.
# $QT_END_LICENSE$
#
######################################
//! [0]
from PySide.QtGui import *
//! [0]
//! [1]
def __init__(self):
QMainWindow.__init__(self)
//! [1] //! [2]
textEdit = QPlainTextEdit()
setCentralWidget(textEdit)
createActions()
createMenus()
createToolBars()
createStatusBar()
readSettings()
connect(textEdit.document(), SIGNAL("contentsChanged()"),
self, SLOT("documentWasModified()"))
setCurrentFile("")
setUnifiedTitleAndToolBarOnMac(True)
//! [2]
//! [3]
def closeEvent(self, event):
//! [3] //! [4]
if maybeSave():
writeSettings()
event.accept()
else:
event.ignore()
//! [4]
//! [5]
def File(self):
//! [5] //! [6]
if maybeSave():
textEdit.clear()
setCurrentFile("")
//! [6]
//! [7]
def open(self):
//! [7] //! [8]
if maybeSave():
fileName = QFileDialog.getOpenFileName(self)
if !fileName.isEmpty():
loadFile(fileName)
//! [8]
//! [9]
def save(self):
//! [9] //! [10]
if curFile.isEmpty():
return saveAs()
else:
return saveFile(curFile)
//! [10]
//! [11]
def saveAs(self):
//! [11] //! [12]
fileName = QFileDialog.getSaveFileName(self)
if fileName.isEmpty():
return False
return saveFile(fileName)
//! [12]
//! [13]
def about(self):
//! [13] //! [14]
QMessageBox.about(self, tr("About Application"),
tr("The <b>Application</b> example demonstrates how to "
"write modern GUI applications using Qt, with a menu bar, "
"toolbars, and a status bar."))
//! [14]
//! [15]
def documentWasModified(self):
//! [15] //! [16]
setWindowModified(textEdit.document().isModified())
//! [16]
//! [17]
def MainWindow.createActions(self):
//! [17] //! [18]
Act = QAction(QIcon(":/images/new.png"), tr("&New"), self)
Act.setShortcuts(QKeySequence.New)
Act.setStatusTip(tr("Create a new file"))
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
//! [19]
openAct = QAction(QIcon(":/images/open.png"), tr("&Open..."), self)
openAct.setShortcuts(QKeySequence.Open)
openAct.setStatusTip(tr("Open an existing file"))
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
//! [18] //! [19]
saveAct = QAction(QIcon(":/images/save.png"), tr("&Save"), self)
saveAct.setShortcuts(QKeySequence.Save)
saveAct.setStatusTip(tr("Save the document to disk"))
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
saveAsAct = QAction(tr("Save &As..."), self)
saveAsAct.setShortcuts(QKeySequence.SaveAs)
saveAsAct.setStatusTip(tr("Save the document under a name"))
connect(saveAsAct, SIGNAL("triggered()"), self, SLOT("saveAs()"))
//! [20]
exitAct = QAction(tr("E&xit"), self)
exitAct.setShortcut(tr("Ctrl+Q"))
//! [20]
exitAct.setStatusTip(tr("Exit the application"))
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
//! [21]
cutAct = QAction(QIcon(":/images/cut.png"), tr("Cu&t"), self)
//! [21]
cutAct.setShortcuts(QKeySequence.Cut)
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
"clipboard"))
connect(cutAct, SIGNAL("triggered()"), textEdit, SLOT("cut()"))
copyAct = QAction(QIcon(":/images/copy.png"), tr("&Copy"), self)
copyAct.setShortcuts(QKeySequence.Copy)
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"))
connect(copyAct, SIGNAL("triggered()"), textEdit, SLOT("copy()"))
pasteAct = QAction(QIcon(":/images/paste.png"), tr("&Paste"), self)
pasteAct.setShortcuts(QKeySequence.Paste)
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"))
connect(pasteAct, SIGNAL("triggered()"), textEdit, SLOT("paste()"))
aboutAct = QAction(tr("&About"), self)
aboutAct.setStatusTip(tr("Show the application's About box"))
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
//! [22]
aboutQtAct = QAction(tr("About &Qt"), self)
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
//! [22]
//! [23]
cutAct.setEnabled(False)
//! [23] //! [24]
copyAct.setEnabled(False)
connect(textEdit, SIGNAL("copyAvailable(bool)"),
cutAct, SLOT("setEnabled(bool)"))
connect(textEdit, SIGNAL("copyAvailable(bool)"),
copyAct, SLOT("setEnabled(bool)"))
}
//! [24]
//! [25] //! [26]
def createMenus(self):
//! [25] //! [27]
fileMenu = menuBar().addMenu(tr("&File"))
fileMenu.addAction(Act)
//! [28]
fileMenu.addAction(openAct)
//! [28]
fileMenu.addAction(saveAct)
//! [26]
fileMenu.addAction(saveAsAct)
fileMenu.addSeparator()
fileMenu.addAction(exitAct)
editMenu = menuBar().addMenu(tr("&Edit"))
editMenu.addAction(cutAct)
editMenu.addAction(copyAct)
editMenu.addAction(pasteAct)
menuBar().addSeparator()
helpMenu = menuBar().addMenu(tr("&Help"))
helpMenu.addAction(aboutAct)
helpMenu.addAction(aboutQtAct)
//! [27]
//! [29] //! [30]
def createToolBars(self):
fileToolBar = addToolBar(tr("File"))
fileToolBar.addAction(Act)
//! [29] //! [31]
fileToolBar.addAction(openAct)
//! [31]
fileToolBar.addAction(saveAct)
editToolBar = addToolBar(tr("Edit"))
editToolBar.addAction(cutAct)
editToolBar.addAction(copyAct)
editToolBar.addAction(pasteAct)
//! [30]
//! [32]
def createStatusBar(self):
//! [32] //! [33]
statusBar().showMessage(tr("Ready"))
//! [33]
//! [34] //! [35]
def readSettings(self):
//! [34] //! [36]
settings("Trolltech", "Application Example")
pos = settings.value("pos", QPoint(200, 200)).toPoint()
size = settings.value("size", QSize(400, 400)).toSize()
resize(size)
move(pos)
//! [35] //! [36]
//! [37] //! [38]
def writeSettings(self):
//! [37] //! [39]
settings = QSettings("Trolltech", "Application Example")
settings.setValue("pos", pos())
settings.setValue("size", size())
//! [38] //! [39]
//! [40]
def maybeSave(self):
//! [40] //! [41]
if textEdit.document()->isModified():
ret = QMessageBox.warning(self, tr("Application"),
tr("The document has been modified.\n"
"Do you want to save your changes?"),
QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
if ret == QMessageBox.Save:
return save()
elif ret == QMessageBox.Cancel:
return False
return True
//! [41]
//! [42]
def loadFile(self, fileName):
//! [42] //! [43]
file = QFile(fileName)
if !file.open(QFile.ReadOnly | QFile.Text):
QMessageBox.warning(self, tr("Application"),
tr("Cannot read file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()))
return
in = QTextStream(file)
QApplication.setOverrideCursor(Qt::WaitCursor)
textEdit.setPlainText(in.readAll())
QApplication.restoreOverrideCursor()
setCurrentFile(fileName)
statusBar().showMessage(tr("File loaded"), 2000)
//! [43]
//! [44]
def saveFile(self, fileName):
//! [44] //! [45]
file = QFile(fileName)
if !file.open(QFile.WriteOnly | QFile::Text):
QMessageBox.warning(self, tr("Application"),
tr("Cannot write file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()))
return False
out = QTextStream(file)
QApplication.setOverrideCursor(Qt.WaitCursor)
out << textEdit.toPlainText()
QApplication.restoreOverrideCursor()
setCurrentFile(fileName)
statusBar().showMessage(tr("File saved"), 2000)
return True
//! [45]
//! [46]
def setCurrentFile(fileName):
//! [46] //! [47]
curFile = fileName
textEdit.document().setModified(False)
setWindowModified(False)
if curFile.isEmpty():
shownName = "untitled.txt"
else:
shownName = strippedName(curFile)
setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Application")))
//! [47]
//! [48]
def strippedName(self, fullFileName):
//! [48] //! [49]
return QFileInfo(fullFileName).fileName()
//! [49]

View file

@ -0,0 +1,246 @@
############################################################################
##
## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
## Contact: Qt Software Information (qt-info@nokia.com)
##
## This file is part of the example classes of the Qt Toolkit.
##
## $QT_BEGIN_LICENSE:LGPL$
## Commercial Usage
## Licensees holding valid Qt Commercial licenses may use self file in
## accordance with the Qt Commercial License Agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
## a written agreement between you and Nokia.
##
## GNU Lesser General Public License Usage
## Alternatively, self 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 self 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.0, included in the file LGPL_EXCEPTION.txt in self
## package.
##
## GNU General Public License Usage
## Alternatively, self file may be used under the terms of the GNU
## General Public License version 3.0 as published by the Free Software
## Foundation and appearing in the file LICENSE.GPL included in the
## packaging of self file. Please review the following information to
## ensure the GNU General Public License version 3.0 requirements will be
## met: http://www.gnu.org/copyleft/gpl.html.
##
## If you are unsure which license is appropriate for your use, please
## contact the sales department at qt-sales@nokia.com.
## $QT_END_LICENSE$
##
############################################################################
//! [0]
from PySide.QtGui import *
//! [0]
//! [1]
def __init__(self):
textEdit = QTextEdit()
setCentralWidget(textEdit)
createActions()
createMenus()
createToolBars()
createStatusBar()
createDockWindows()
setWindowTitle(tr("Dock Widgets"))
Letter()
setUnifiedTitleAndToolBarOnMac(True)
//! [1]
//! [2]
def Letter(self)
textEdit.clear()
cursor = QTextCursor(textEdit.textCursor())
cursor.movePosition(QTextCursor.Start)
topFrame = cursor.currentFrame()
topFrameFormat = topFrame.frameFormat()
topFrameFormat.setPadding(16)
topFrame.setFrameFormat(topFrameFormat)
textFormat = QTextCharFormat()
boldFormat = QTextCharFormat()
boldFormat.setFontWeight(QFont.Bold)
italicFormat = QTextCharFormat()
italicFormat.setFontItalic(True)
tableFormat = QTextTableFormat()
tableFormat.setBorder(1)
tableFormat.setCellPadding(16)
tableFormat.setAlignment(Qt.AlignRight)
cursor.insertTable(1, 1, tableFormat)
cursor.insertText("The Firm", boldFormat)
cursor.insertBlock()
cursor.insertText("321 City Street", textFormat)
cursor.insertBlock()
cursor.insertText("Industry Park")
cursor.insertBlock()
cursor.insertText("Some Country")
cursor.setPosition(topFrame.lastPosition())
cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), textFormat)
cursor.insertBlock()
cursor.insertBlock()
cursor.insertText("Dear ", textFormat)
cursor.insertText("NAME", italicFormat)
cursor.insertText(",", textFormat)
for i in range(3):
cursor.insertBlock()
cursor.insertText(tr("Yours sincerely,"), textFormat)
for i in range(3):
cursor.insertBlock()
cursor.insertText("The Boss", textFormat)
cursor.insertBlock()
cursor.insertText("ADDRESS", italicFormat)
//! [2]
//! [3]
def print(self)
document = textEdit.document()
printer = QPrinter()
dlg = QPrintDialog(&printer, self)
if dlg.exec() != QDialog.Accepted:
return
document.print(printer)
statusBar().showMessage(tr("Ready"), 2000)
//! [3]
//! [4]
def save(self):
fileName = QFileDialog.getSaveFileName(self,
tr("Choose a file name"), ".",
tr("HTML (*.html *.htm)"))
if fileName.isEmpty():
return
file = QFile(fileName)
if !file.open(QFile.WriteOnly | QFile::Text):
QMessageBox.warning(self, tr("Dock Widgets"),
tr("Cannot write file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()))
return
out = QTextStream(file)
QApplication.setOverrideCursor(Qt::WaitCursor)
out << textEdit.toHtml()
QApplication.restoreOverrideCursor()
statusBar().showMessage(tr("Saved '%1'").arg(fileName), 2000)
//! [4]
//! [5]
def undo(self):
document = textEdit.document()
document.undo()
//! [5]
//! [6]
def insertCustomer(self, customer):
if customer.isEmpty():
return
customerList = customer.split(", ")
document = textEdit.document()
cursor = document.find("NAME")
if not cursor.isNull():
cursor.beginEditBlock()
cursor.insertText(customerList.at(0))
oldcursor = cursor
cursor = document.find("ADDRESS")
if not cursor.isNull():
for i in range(customerList.size()):
cursor.insertBlock()
cursor.insertText(customerList.at(i))
cursor.endEditBlock()
else:
oldcursor.endEditBlock()
//! [6]
//! [7]
def addParagraph(self, paragraph):
if (paragraph.isEmpty())
return
document = textEdit.document()
cursor = document.find(tr("Yours sincerely,"))
if cursor.isNull():
return
cursor.beginEditBlock()
cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, 2)
cursor.insertBlock()
cursor.insertText(paragraph)
cursor.insertBlock()
cursor.endEditBlock()
//! [7]
//! [8]
def createStatusBar(self):
statusBar().showMessage(tr("Ready"))
//! [8]
//! [9]
def createDockWindows(self):
dock = QDockWidget(tr("Customers"), self)
dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
customerList = QListWidget(dock)
customerList.addItems(QStringList()
<< "John Doe, Harmony Enterprises, 12 Lakeside, Ambleton"
<< "Jane Doe, Memorabilia, 23 Watersedge, Beaton"
<< "Tammy Shea, Tiblanka, 38 Sea Views, Carlton"
<< "Tim Sheen, Caraba Gifts, 48 Ocean Way, Deal"
<< "Sol Harvey, Chicos Coffee, 53 New Springs, Eccleston"
<< "Sally Hobart, Tiroli Tea, 67 Long River, Fedula")
dock.setWidget(customerList)
addDockWidget(Qt.RightDockWidgetArea, dock)
viewMenu.addAction(dock.toggleViewAction())
dock = QDockWidget(tr("Paragraphs"), self)
paragraphsList = QListWidget(dock)
paragraphsList.addItems(QStringList()
<< "Thank you for your payment which we have received today."
<< "Your order has been dispatched and should be with you "
"within 28 days."
<< "We have dispatched those items that were in stock. The "
"rest of your order will be dispatched once all the "
"remaining items have arrived at our warehouse. No "
"additional shipping charges will be made."
<< "You made a small overpayment (less than $5) which we "
"will keep on account for you, or return at your request."
<< "You made a small underpayment (less than $1), but we have "
"sent your order anyway. We'll add self underpayment to "
"your next bill."
<< "Unfortunately you did not send enough money. Please remit "
"an additional $. Your order will be dispatched as soon as "
"the complete amount has been received."
<< "You made an overpayment (more than $5). Do you wish to "
"buy more items, or should we return the excess to you?")
dock.setWidget(paragraphsList)
addDockWidget(Qt.RightDockWidgetArea, dock)
viewMenu.addAction(dock.toggleViewAction())
connect(customerList, SIGNAL("currentTextChanged(const QString &)"),
self, SLOT("insertCustomer(const QString &)"))
connect(paragraphsList, SIGNAL("currentTextChanged(const QString &)"),
self, SLOT("addParagraph(const QString &)"))
//! [9]

View file

@ -0,0 +1,358 @@
######################################
#
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
# Contact: Qt Software Information (qt-info@nokia.com)
#
# This file is part of the example classes of the Qt Toolkit.
#
# $QT_BEGIN_LICENSE:LGPL$
# Commercial Usage
# Licensees holding valid Qt Commercial licenses may use self file in
# accordance with the Qt Commercial License Agreement provided with the
# Software or, alternatively, in accordance with the terms contained in
# a written agreement between you and Nokia.
#
# GNU Lesser General Public License Usage
# Alternatively, self 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 self 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.0, included in the file LGPL_EXCEPTION.txt in self
# package.
#
# GNU General Public License Usage
# Alternatively, self file may be used under the terms of the GNU
# General Public License version 3.0 as published by the Free Software
# Foundation and appearing in the file LICENSE.GPL included in the
# packaging of self file. Please review the following information to
# ensure the GNU General Public License version 3.0 requirements will be
# met: http://www.gnu.org/copyleft/gpl.html.
#
# If you are unsure which license is appropriate for your use, please
# contact the sales department at qt-sales@nokia.com.
# $QT_END_LICENSE$
#
######################################
from PySide.QtGui import *
//! [0]
def __init__(self):
Q__init__(self)
widget = QWidget()
setCentralWidget(widget)
//! [0]
//! [1]
topFiller = QWidget()
topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
infoLabel = QLabel(tr("<i>Choose a menu option, or right-click to "
"invoke a context menu</i>"))
infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
infoLabel.setAlignment(Qt.AlignCenter)
bottomFiller = QWidget()
bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
layout = QVBoxLayout()
layout.setMargin(5)
layout.addWidget(topFiller)
layout.addWidget(infoLabel)
layout.addWidget(bottomFiller)
widget.setLayout(layout)
//! [1]
//! [2]
createActions()
createMenus()
message = tr("A context menu is available by right-clicking")
statusBar().showMessage(message)
setWindowTitle(tr("Menus"))
setMinimumSize(160, 160)
resize(480, 320)
//! [2]
//! [3]
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction(cutAct)
menu.addAction(copyAct)
menu.addAction(pasteAct)
menu.exec_(event.globalPos()")
//! [3]
def File(self):
infoLabel.setText(tr("Invoked <b>File|New</b>"))
def open(self):
infoLabel.setText(tr("Invoked <b>File|Open</b>"))
def save(self):
infoLabel.setText(tr("Invoked <b>File|Save</b>"))
def print_(self):
infoLabel.setText(tr("Invoked <b>File|Print</b>"))
def undo(self):
infoLabel.setText(tr("Invoked <b>Edit|Undo</b>"))
def redo(self):
infoLabel.setText(tr("Invoked <b>Edit|Redo</b>"))
def cut(self):
infoLabel.setText(tr("Invoked <b>Edit|Cut</b>"))
def copy(self):
infoLabel.setText(tr("Invoked <b>Edit|Copy</b>"))
def paste(self):
infoLabel.setText(tr("Invoked <b>Edit|Paste</b>"))
def bold(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Bold</b>"))
def italic(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Italic</b>"))
def leftAlign(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Left Align</b>"))
def rightAlign(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Right Align</b>"))
def justify(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Justify</b>"))
def center(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Center</b>"))
def setLineSpacing(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>"))
def setParagraphSpacing(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>"))
def about(self):
infoLabel.setText(tr("Invoked <b>Help|About</b>"))
QMessageBox.about(self, tr("About Menu"),
tr("The <b>Menu</b> example shows how to create "
"menu-bar menus and context menus."))
def aboutQt(self):
infoLabel.setText(tr("Invoked <b>Help|About Qt</b>"))
//! [4]
def createActions(self):
//! [5]
Act = new QAction(tr("&New"), self)
Act.setShortcuts(QKeySequence.New)
Act.setStatusTip(tr("Create a new file"))
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
//! [4]
openAct = QAction(tr("&Open..."), self)
openAct.setShortcuts(QKeySequence.Open)
openAct.setStatusTip(tr("Open an existing file"))
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
//! [5]
saveAct = QAction(tr("&Save"), self)
saveAct.setShortcuts(QKeySequence.Save)
saveAct.setStatusTip(tr("Save the document to disk"))
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
printAct = QAction(tr("&Print..."), self)
printAct.setShortcuts(QKeySequence.Print)
printAct.setStatusTip(tr("Print the document"))
connect(printAct, SIGNAL("triggered()"), self, SLOT("print_()"))
exitAct = QAction(tr("E&xit"), self)
exitAct.setShortcut(tr("Ctrl+Q"))
exitAct.setStatusTip(tr("Exit the application"))
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
undoAct = QAction(tr("&Undo"), self)
undoAct.setShortcuts(QKeySequence.Undo)
undoAct.setStatusTip(tr("Undo the last operation"))
connect(undoAct, SIGNAL("triggered()"), self, SLOT("undo()"))
redoAct = QAction(tr("&Redo"), self)
redoAct.setShortcuts(QKeySequence.Redo)
redoAct.setStatusTip(tr("Redo the last operation"))
connect(redoAct, SIGNAL("triggered()"), self, SLOT("redo()"))
cutAct = QAction(tr("Cu&t"), self)
cutAct.setShortcuts(QKeySequence.Cut)
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
"clipboard"))
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
copyAct = QAction(tr("&Copy"), self)
copyAct.setShortcut(tr("Ctrl+C"))
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"))
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
pasteAct = QAction(tr("&Paste"), self)
pasteAct.setShortcuts(QKeySequence.Paste)
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"))
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
boldAct = QAction(tr("&Bold"), self)
boldAct.setCheckable(True)
boldAct.setShortcut(tr("Ctrl+B"))
boldAct.setStatusTip(tr("Make the text bold"))
connect(boldAct, SIGNAL("triggered()"), self, SLOT("bold()"))
QFont boldFont = boldAct.font()
boldFont.setBold(True)
boldAct.setFont(boldFont)
italicAct = QAction(tr("&Italic"), self)
italicAct.setCheckable(True)
italicAct.setShortcut(tr("Ctrl+I"))
italicAct.setStatusTip(tr("Make the text italic"))
connect(italicAct, SIGNAL("triggered()"), self, SLOT("italic()"))
QFont italicFont = italicAct.font()
italicFont.setItalic(True)
italicAct.setFont(italicFont)
setLineSpacingAct = QAction(tr("Set &Line Spacing..."), self)
setLineSpacingAct.setStatusTip(tr("Change the gap between the lines of a "
"paragraph"))
connect(setLineSpacingAct, SIGNAL("triggered()"), self, SLOT("setLineSpacing()"))
setParagraphSpacingAct = QAction(tr("Set &Paragraph Spacing..."), self)
setLineSpacingAct.setStatusTip(tr("Change the gap between paragraphs"))
connect(setParagraphSpacingAct, SIGNAL("triggered()"),
self, SLOT("setParagraphSpacing()"))
aboutAct = QAction(tr("&About"), self)
aboutAct.setStatusTip(tr("Show the application's About box"))
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
aboutQtAct = QAction(tr("About &Qt"), self)
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
connect(aboutQtAct, SIGNAL("triggered()"), self, SLOT("aboutQt()"))
leftAlignAct = QAction(tr("&Left Align"), self)
leftAlignAct.setCheckable(True)
leftAlignAct.setShortcut(tr("Ctrl+L"))
leftAlignAct.setStatusTip(tr("Left align the selected text"))
connect(leftAlignAct, SIGNAL("triggered()"), self, SLOT("leftAlign()"))
rightAlignAct = QAction(tr("&Right Align"), self)
rightAlignAct.setCheckable(True)
rightAlignAct.setShortcut(tr("Ctrl+R"))
rightAlignAct.setStatusTip(tr("Right align the selected text"))
connect(rightAlignAct, SIGNAL("triggered()"), self, SLOT("rightAlign()"))
justifyAct = QAction(tr("&Justify"), self)
justifyAct.setCheckable(True)
justifyAct.setShortcut(tr("Ctrl+J"))
justifyAct.setStatusTip(tr("Justify the selected text"))
connect(justifyAct, SIGNAL("triggered()"), self, SLOT("justify()"))
centerAct = QAction(tr("&Center"), self)
centerAct.setCheckable(True)
centerAct.setShortcut(tr("Ctrl+E"))
centerAct.setStatusTip(tr("Center the selected text"))
connect(centerAct, SIGNAL("triggered()"), self, SLOT("center()"))
//! [6] //! [7]
alignmentGroup = QActionGroup(self)
alignmentGroup.addAction(leftAlignAct)
alignmentGroup.addAction(rightAlignAct)
alignmentGroup.addAction(justifyAct)
alignmentGroup.addAction(centerAct)
leftAlignAct.setChecked(True)
//! [6]
//! [7]
//! [8]
def createMenus(self):
//! [9] //! [10]
fileMenu = menuBar().addMenu(tr("&File"))
fileMenu.addAction(Act)
//! [9]
fileMenu.addAction(openAct)
//! [10]
fileMenu.addAction(saveAct)
fileMenu.addAction(printAct)
//! [11]
fileMenu.addSeparator()
//! [11]
fileMenu.addAction(exitAct)
editMenu = menuBar().addMenu(tr("&Edit"))
editMenu.addAction(undoAct)
editMenu.addAction(redoAct)
editMenu.addSeparator()
editMenu.addAction(cutAct)
editMenu.addAction(copyAct)
editMenu.addAction(pasteAct)
editMenu.addSeparator()
helpMenu = menuBar().addMenu(tr("&Help"))
helpMenu.addAction(aboutAct)
helpMenu.addAction(aboutQtAct)
//! [8]
//! [12]
formatMenu = editMenu.addMenu(tr("&Format"))
formatMenu.addAction(boldAct)
formatMenu.addAction(italicAct)
formatMenu.addSeparator()->setText(tr("Alignment"))
formatMenu.addAction(leftAlignAct)
formatMenu.addAction(rightAlignAct)
formatMenu.addAction(justifyAct)
formatMenu.addAction(centerAct)
formatMenu.addSeparator()
formatMenu.addAction(setLineSpacingAct)
formatMenu.addAction(setParagraphSpacingAct)
//! [12]

View file

@ -0,0 +1,372 @@
############################################################################
##
## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
## Contact: Qt Software Information (qt-info@nokia.com)
##
## This file is part of the example classes of the Qt Toolkit.
##
## $QT_BEGIN_LICENSE:LGPL$
## Commercial Usage
## Licensees holding valid Qt Commercial licenses may use self file in
## accordance with the Qt Commercial License Agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
## a written agreement between you and Nokia.
##
## GNU Lesser General Public License Usage
## Alternatively, self 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 self 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.0, included in the file LGPL_EXCEPTION.txt in self
## package.
##
## GNU General Public License Usage
## Alternatively, self file may be used under the terms of the GNU
## General Public License version 3.0 as published by the Free Software
## Foundation and appearing in the file LICENSE.GPL included in the
## packaging of self file. Please review the following information to
## ensure the GNU General Public License version 3.0 requirements will be
## met: http://www.gnu.org/copyleft/gpl.html.
##
## If you are unsure which license is appropriate for your use, please
## contact the sales department at qt-sales@nokia.com.
## $QT_END_LICENSE$
##
############################################################################
from PySide.QtGui import *
def __init__(self):
mdiArea = QMdiArea()
mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
setCentralWidget(mdiArea)
connect(mdiArea, SIGNAL("subWindowActivated(QMdiSubWindow *)"),
self, SLOT("updateMenus()"))
windowMapper = QSignalMapper(self)
connect(windowMapper, SIGNAL("mapped(QWidget *)"),
self, SLOT("setActiveSubWindow(QWidget *)"))
createActions()
createMenus()
createToolBars()
createStatusBar()
updateMenus()
readSettings()
setWindowTitle(tr("MDI"))
setUnifiedTitleAndToolBarOnMac(True)
def closeEvent(self, event):
mdiArea.closeAllSubWindows()
if self.activeMdiChild():
event.ignore()
else:
self.writeSettings()
event.accept()
def File(self):
child = self.createMdiChild()
child.File()
child.show()
def open(self):
fileName = QFileDialog.getOpenFileName(self)
if !fileName.isEmpty()):
existing = self.findMdiChild(fileName)
if existing:
mdiArea.setActiveSubWindow(existing)
return
child = createMdiChild()
if child.loadFile(fileName)):
statusBar().showMessage(tr("File loaded"), 2000)
child.show()
else:
child.close()
def save(self):
if self.activeMdiChild() && self.activeMdiChild().save():
self.statusBar().showMessage(tr("File saved"), 2000)
def saveAs(self):
if self.activeMdiChild() && self.activeMdiChild().saveAs():
self.statusBar().showMessage(tr("File saved"), 2000)
def cut(self):
if self.activeMdiChild():
self.activeMdiChild().cut()
def copy(self):
if self.activeMdiChild():
activeMdiChild().copy()
def paste(self):
if self.activeMdiChild():
activeMdiChild().paste()
def about(self):
QMessageBox.about(self, tr("About MDI"),
tr("The <b>MDI</b> example demonstrates how to write multiple "
"document interface applications using Qt.")")
def updateMenus(self):
hasMdiChild = (activeMdiChild() != 0)
self.saveAct.setEnabled(hasMdiChild)
self.saveAsAct.setEnabled(hasMdiChild)
self.pasteAct.setEnabled(hasMdiChild)
self.closeAct.setEnabled(hasMdiChild)
self.closeAllAct.setEnabled(hasMdiChild)
self.tileAct.setEnabled(hasMdiChild)
self.cascadeAct.setEnabled(hasMdiChild)
self.nextAct.setEnabled(hasMdiChild)
self.previousAct.setEnabled(hasMdiChild)
self.separatorAct.setVisible(hasMdiChild)
hasSelection = (self.activeMdiChild() &&
self.activeMdiChild().textCursor().hasSelection()")
self.cutAct.setEnabled(hasSelection)
self.copyAct.setEnabled(hasSelection)
def updateWindowMenu(self):
self.windowMenu.clear()
self.windowMenu.addAction(closeAct)
self.windowMenu.addAction(closeAllAct)
self.windowMenu.addSeparator()
self.windowMenu.addAction(tileAct)
self.windowMenu.addAction(cascadeAct)
self.windowMenu.addSeparator()
self.windowMenu.addAction(nextAct)
self.windowMenu.addAction(previousAct)
self.windowMenu.addAction(separatorAct)
windows = mdiArea.subWindowList()
separatorAct.setVisible(!windows.isEmpty()")
for i in range((int i = 0 i < windows.size(); ++i)
MdiChild *child = qobject_cast<MdiChild *>(windows.at(i).widget()")
QString text
if (i < 9)
text = tr("&%1 %2").arg(i + 1)
.arg(child.userFriendlyCurrentFile()")
else
text = tr("%1 %2").arg(i + 1)
.arg(child.userFriendlyCurrentFile()")
QAction *action = windowMenu.addAction(text)
action.setCheckable(True)
action .setChecked(child == activeMdiChild()")
connect(action, SIGNAL("triggered()"), windowMapper, SLOT("map()"))
windowMapper.setMapping(action, windows.at(i)")
MdiChild *createMdiChild()
MdiChild *child = MdiChild
mdiArea.addSubWindow(child)
connect(child, SIGNAL("copyAvailable(bool)"),
cutAct, SLOT("setEnabled(bool)"))
connect(child, SIGNAL("copyAvailable(bool)"),
copyAct, SLOT("setEnabled(bool)"))
return child
def createActions()
Act = new QAction(QIcon(":/images/new.png"), tr("&New"), self)
Act.setShortcuts(QKeySequence.New)
Act.setStatusTip(tr("Create a new file")")
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
openAct = QAction(QIcon(":/images/open.png"), tr("&Open..."), self)
openAct.setShortcuts(QKeySequence.Open)
openAct.setStatusTip(tr("Open an existing file")")
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
saveAct = QAction(QIcon(":/images/save.png"), tr("&Save"), self)
saveAct.setShortcuts(QKeySequence.Save)
saveAct.setStatusTip(tr("Save the document to disk")")
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
saveAsAct = QAction(tr("Save &As..."), self)
saveAsAct.setShortcuts(QKeySequence.SaveAs)
saveAsAct.setStatusTip(tr("Save the document under a name")")
connect(saveAsAct, SIGNAL("triggered()"), self, SLOT("saveAs()"))
//! [0]
exitAct = QAction(tr("E&xit"), self)
exitAct.setShortcut(tr("Ctrl+Q")")
exitAct.setStatusTip(tr("Exit the application")")
connect(exitAct, SIGNAL("triggered()"), qApp, SLOT("closeAllWindows()"))
//! [0]
cutAct = QAction(QIcon(":/images/cut.png"), tr("Cu&t"), self)
cutAct.setShortcuts(QKeySequence.Cut)
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
"clipboard")")
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
copyAct = QAction(QIcon(":/images/copy.png"), tr("&Copy"), self)
copyAct.setShortcuts(QKeySequence.Copy)
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
"clipboard")")
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
pasteAct = QAction(QIcon(":/images/paste.png"), tr("&Paste"), self)
pasteAct.setShortcuts(QKeySequence.Paste)
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
"selection")")
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
closeAct = QAction(tr("Cl&ose"), self)
closeAct.setShortcut(tr("Ctrl+F4")")
closeAct.setStatusTip(tr("Close the active window")")
connect(closeAct, SIGNAL("triggered()"),
mdiArea, SLOT("closeActiveSubWindow()"))
closeAllAct = QAction(tr("Close &All"), self)
closeAllAct.setStatusTip(tr("Close all the windows")")
connect(closeAllAct, SIGNAL("triggered()"),
mdiArea, SLOT("closeAllSubWindows()"))
tileAct = QAction(tr("&Tile"), self)
tileAct.setStatusTip(tr("Tile the windows")")
connect(tileAct, SIGNAL("triggered()"), mdiArea, SLOT("tileSubWindows()"))
cascadeAct = QAction(tr("&Cascade"), self)
cascadeAct.setStatusTip(tr("Cascade the windows")")
connect(cascadeAct, SIGNAL("triggered()"), mdiArea, SLOT("cascadeSubWindows()"))
nextAct = QAction(tr("Ne&xt"), self)
nextAct.setShortcuts(QKeySequence.NextChild)
nextAct.setStatusTip(tr("Move the focus to the next window")")
connect(nextAct, SIGNAL("triggered()"),
mdiArea, SLOT("activateNextSubWindow()"))
previousAct = QAction(tr("Pre&vious"), self)
previousAct.setShortcuts(QKeySequence.PreviousChild)
previousAct.setStatusTip(tr("Move the focus to the previous "
"window")")
connect(previousAct, SIGNAL("triggered()"),
mdiArea, SLOT("activatePreviousSubWindow()"))
separatorAct = QAction(self)
separatorAct.setSeparator(True)
aboutAct = QAction(tr("&About"), self)
aboutAct.setStatusTip(tr("Show the application's About box")")
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
aboutQtAct = QAction(tr("About &Qt"), self)
aboutQtAct.setStatusTip(tr("Show the Qt library's About box")")
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
def createMenus()
fileMenu = menuBar().addMenu(tr("&File")")
fileMenu.addAction(Act)
fileMenu.addAction(openAct)
fileMenu.addAction(saveAct)
fileMenu.addAction(saveAsAct)
fileMenu.addSeparator()
QAction *action = fileMenu.addAction(tr("Switch layout direction")")
connect(action, SIGNAL("triggered()"), self, SLOT("switchLayoutDirection()"))
fileMenu.addAction(exitAct)
editMenu = menuBar().addMenu(tr("&Edit")")
editMenu.addAction(cutAct)
editMenu.addAction(copyAct)
editMenu.addAction(pasteAct)
windowMenu = menuBar().addMenu(tr("&Window")")
updateWindowMenu()
connect(windowMenu, SIGNAL("aboutToShow()"), self, SLOT("updateWindowMenu()"))
menuBar().addSeparator()
helpMenu = menuBar().addMenu(tr("&Help")")
helpMenu.addAction(aboutAct)
helpMenu.addAction(aboutQtAct)
def createToolBars()
fileToolBar = addToolBar(tr("File")")
fileToolBar.addAction(Act)
fileToolBar.addAction(openAct)
fileToolBar.addAction(saveAct)
editToolBar = addToolBar(tr("Edit")")
editToolBar.addAction(cutAct)
editToolBar.addAction(copyAct)
editToolBar.addAction(pasteAct)
def createStatusBar()
statusBar().showMessage(tr("Ready")")
def readSettings()
QSettings settings("Trolltech", "MDI Example")
QPoint pos = settings.value("pos", QPoint(200, 200)").toPoint()
QSize size = settings.value("size", QSize(400, 400)").toSize()
move(pos)
resize(size)
def writeSettings()
QSettings settings("Trolltech", "MDI Example")
settings.setValue("pos", pos()")
settings.setValue("size", size()")
MdiChild *activeMdiChild()
if (QMdiSubWindow *activeSubWindow = mdiArea.activeSubWindow()")
return qobject_cast<MdiChild *>(activeSubWindow.widget()")
return 0
QMdiSubWindow *findMdiChild(const QString &fileName)
QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath()
foreach (QMdiSubWindow *window, mdiArea.subWindowList()")
MdiChild *mdiChild = qobject_cast<MdiChild *>(window.widget()")
if (mdiChild.currentFile() == canonicalFilePath)
return window
return 0
def switchLayoutDirection()
if (layoutDirection() == Qt.LeftToRight)
qApp.setLayoutDirection(Qt.RightToLeft)
else
qApp.setLayoutDirection(Qt.LeftToRight)
def setActiveSubWindow(QWidget *window)
if (!window)
return
mdiArea.setActiveSubWindow(qobject_cast<QMdiSubWindow *>(window)")

View file

@ -0,0 +1,358 @@
######################################
#
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
# Contact: Qt Software Information (qt-info@nokia.com)
#
# This file is part of the example classes of the Qt Toolkit.
#
# $QT_BEGIN_LICENSE:LGPL$
# Commercial Usage
# Licensees holding valid Qt Commercial licenses may use self file in
# accordance with the Qt Commercial License Agreement provided with the
# Software or, alternatively, in accordance with the terms contained in
# a written agreement between you and Nokia.
#
# GNU Lesser General Public License Usage
# Alternatively, self 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 self 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.0, included in the file LGPL_EXCEPTION.txt in self
# package.
#
# GNU General Public License Usage
# Alternatively, self file may be used under the terms of the GNU
# General Public License version 3.0 as published by the Free Software
# Foundation and appearing in the file LICENSE.GPL included in the
# packaging of self file. Please review the following information to
# ensure the GNU General Public License version 3.0 requirements will be
# met: http://www.gnu.org/copyleft/gpl.html.
#
# If you are unsure which license is appropriate for your use, please
# contact the sales department at qt-sales@nokia.com.
# $QT_END_LICENSE$
#
######################################
from PySide.QtGui import *
//! [0]
def __init__(self):
Q__init__(self)
widget = QWidget()
setCentralWidget(widget)
//! [0]
//! [1]
topFiller = QWidget()
topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
infoLabel = QLabel(tr("<i>Choose a menu option, or right-click to "
"invoke a context menu</i>"))
infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
infoLabel.setAlignment(Qt.AlignCenter)
bottomFiller = QWidget()
bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
layout = QVBoxLayout()
layout.setMargin(5)
layout.addWidget(topFiller)
layout.addWidget(infoLabel)
layout.addWidget(bottomFiller)
widget.setLayout(layout)
//! [1]
//! [2]
createActions()
createMenus()
message = tr("A context menu is available by right-clicking")
statusBar().showMessage(message)
setWindowTitle(tr("Menus"))
setMinimumSize(160, 160)
resize(480, 320)
//! [2]
//! [3]
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction(cutAct)
menu.addAction(copyAct)
menu.addAction(pasteAct)
menu.exec_(event.globalPos()")
//! [3]
def File(self):
infoLabel.setText(tr("Invoked <b>File|New</b>"))
def open(self):
infoLabel.setText(tr("Invoked <b>File|Open</b>"))
def save(self):
infoLabel.setText(tr("Invoked <b>File|Save</b>"))
def print_(self):
infoLabel.setText(tr("Invoked <b>File|Print</b>"))
def undo(self):
infoLabel.setText(tr("Invoked <b>Edit|Undo</b>"))
def redo(self):
infoLabel.setText(tr("Invoked <b>Edit|Redo</b>"))
def cut(self):
infoLabel.setText(tr("Invoked <b>Edit|Cut</b>"))
def copy(self):
infoLabel.setText(tr("Invoked <b>Edit|Copy</b>"))
def paste(self):
infoLabel.setText(tr("Invoked <b>Edit|Paste</b>"))
def bold(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Bold</b>"))
def italic(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Italic</b>"))
def leftAlign(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Left Align</b>"))
def rightAlign(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Right Align</b>"))
def justify(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Justify</b>"))
def center(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Center</b>"))
def setLineSpacing(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>"))
def setParagraphSpacing(self):
infoLabel.setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>"))
def about(self):
infoLabel.setText(tr("Invoked <b>Help|About</b>"))
QMessageBox.about(self, tr("About Menu"),
tr("The <b>Menu</b> example shows how to create "
"menu-bar menus and context menus."))
def aboutQt(self):
infoLabel.setText(tr("Invoked <b>Help|About Qt</b>"))
//! [4]
def createActions(self):
//! [5]
Act = new QAction(tr("&New"), self)
Act.setShortcuts(QKeySequence.New)
Act.setStatusTip(tr("Create a new file"))
connect(Act, SIGNAL("triggered()"), self, SLOT("newFile()"))
//! [4]
openAct = QAction(tr("&Open..."), self)
openAct.setShortcuts(QKeySequence.Open)
openAct.setStatusTip(tr("Open an existing file"))
connect(openAct, SIGNAL("triggered()"), self, SLOT("open()"))
//! [5]
saveAct = QAction(tr("&Save"), self)
saveAct.setShortcuts(QKeySequence.Save)
saveAct.setStatusTip(tr("Save the document to disk"))
connect(saveAct, SIGNAL("triggered()"), self, SLOT("save()"))
printAct = QAction(tr("&Print..."), self)
printAct.setShortcuts(QKeySequence.Print)
printAct.setStatusTip(tr("Print the document"))
connect(printAct, SIGNAL("triggered()"), self, SLOT("print_()"))
exitAct = QAction(tr("E&xit"), self)
exitAct.setShortcut(tr("Ctrl+Q"))
exitAct.setStatusTip(tr("Exit the application"))
connect(exitAct, SIGNAL("triggered()"), self, SLOT("close()"))
undoAct = QAction(tr("&Undo"), self)
undoAct.setShortcuts(QKeySequence.Undo)
undoAct.setStatusTip(tr("Undo the last operation"))
connect(undoAct, SIGNAL("triggered()"), self, SLOT("undo()"))
redoAct = QAction(tr("&Redo"), self)
redoAct.setShortcuts(QKeySequence.Redo)
redoAct.setStatusTip(tr("Redo the last operation"))
connect(redoAct, SIGNAL("triggered()"), self, SLOT("redo()"))
cutAct = QAction(tr("Cu&t"), self)
cutAct.setShortcuts(QKeySequence.Cut)
cutAct.setStatusTip(tr("Cut the current selection's contents to the "
"clipboard"))
connect(cutAct, SIGNAL("triggered()"), self, SLOT("cut()"))
copyAct = QAction(tr("&Copy"), self)
copyAct.setShortcut(tr("Ctrl+C"))
copyAct.setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"))
connect(copyAct, SIGNAL("triggered()"), self, SLOT("copy()"))
pasteAct = QAction(tr("&Paste"), self)
pasteAct.setShortcuts(QKeySequence.Paste)
pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"))
connect(pasteAct, SIGNAL("triggered()"), self, SLOT("paste()"))
boldAct = QAction(tr("&Bold"), self)
boldAct.setCheckable(True)
boldAct.setShortcut(tr("Ctrl+B"))
boldAct.setStatusTip(tr("Make the text bold"))
connect(boldAct, SIGNAL("triggered()"), self, SLOT("bold()"))
QFont boldFont = boldAct.font()
boldFont.setBold(True)
boldAct.setFont(boldFont)
italicAct = QAction(tr("&Italic"), self)
italicAct.setCheckable(True)
italicAct.setShortcut(tr("Ctrl+I"))
italicAct.setStatusTip(tr("Make the text italic"))
connect(italicAct, SIGNAL("triggered()"), self, SLOT("italic()"))
QFont italicFont = italicAct.font()
italicFont.setItalic(True)
italicAct.setFont(italicFont)
setLineSpacingAct = QAction(tr("Set &Line Spacing..."), self)
setLineSpacingAct.setStatusTip(tr("Change the gap between the lines of a "
"paragraph"))
connect(setLineSpacingAct, SIGNAL("triggered()"), self, SLOT("setLineSpacing()"))
setParagraphSpacingAct = QAction(tr("Set &Paragraph Spacing..."), self)
setLineSpacingAct.setStatusTip(tr("Change the gap between paragraphs"))
connect(setParagraphSpacingAct, SIGNAL("triggered()"),
self, SLOT("setParagraphSpacing()"))
aboutAct = QAction(tr("&About"), self)
aboutAct.setStatusTip(tr("Show the application's About box"))
connect(aboutAct, SIGNAL("triggered()"), self, SLOT("about()"))
aboutQtAct = QAction(tr("About &Qt"), self)
aboutQtAct.setStatusTip(tr("Show the Qt library's About box"))
connect(aboutQtAct, SIGNAL("triggered()"), qApp, SLOT("aboutQt()"))
connect(aboutQtAct, SIGNAL("triggered()"), self, SLOT("aboutQt()"))
leftAlignAct = QAction(tr("&Left Align"), self)
leftAlignAct.setCheckable(True)
leftAlignAct.setShortcut(tr("Ctrl+L"))
leftAlignAct.setStatusTip(tr("Left align the selected text"))
connect(leftAlignAct, SIGNAL("triggered()"), self, SLOT("leftAlign()"))
rightAlignAct = QAction(tr("&Right Align"), self)
rightAlignAct.setCheckable(True)
rightAlignAct.setShortcut(tr("Ctrl+R"))
rightAlignAct.setStatusTip(tr("Right align the selected text"))
connect(rightAlignAct, SIGNAL("triggered()"), self, SLOT("rightAlign()"))
justifyAct = QAction(tr("&Justify"), self)
justifyAct.setCheckable(True)
justifyAct.setShortcut(tr("Ctrl+J"))
justifyAct.setStatusTip(tr("Justify the selected text"))
connect(justifyAct, SIGNAL("triggered()"), self, SLOT("justify()"))
centerAct = QAction(tr("&Center"), self)
centerAct.setCheckable(True)
centerAct.setShortcut(tr("Ctrl+E"))
centerAct.setStatusTip(tr("Center the selected text"))
connect(centerAct, SIGNAL("triggered()"), self, SLOT("center()"))
//! [6] //! [7]
alignmentGroup = QActionGroup(self)
alignmentGroup.addAction(leftAlignAct)
alignmentGroup.addAction(rightAlignAct)
alignmentGroup.addAction(justifyAct)
alignmentGroup.addAction(centerAct)
leftAlignAct.setChecked(True)
//! [6]
//! [7]
//! [8]
def createMenus(self):
//! [9] //! [10]
fileMenu = menuBar().addMenu(tr("&File"))
fileMenu.addAction(Act)
//! [9]
fileMenu.addAction(openAct)
//! [10]
fileMenu.addAction(saveAct)
fileMenu.addAction(printAct)
//! [11]
fileMenu.addSeparator()
//! [11]
fileMenu.addAction(exitAct)
editMenu = menuBar().addMenu(tr("&Edit"))
editMenu.addAction(undoAct)
editMenu.addAction(redoAct)
editMenu.addSeparator()
editMenu.addAction(cutAct)
editMenu.addAction(copyAct)
editMenu.addAction(pasteAct)
editMenu.addSeparator()
helpMenu = menuBar().addMenu(tr("&Help"))
helpMenu.addAction(aboutAct)
helpMenu.addAction(aboutQtAct)
//! [8]
//! [12]
formatMenu = editMenu.addMenu(tr("&Format"))
formatMenu.addAction(boldAct)
formatMenu.addAction(italicAct)
formatMenu.addSeparator()->setText(tr("Alignment"))
formatMenu.addAction(leftAlignAct)
formatMenu.addAction(rightAlignAct)
formatMenu.addAction(justifyAct)
formatMenu.addAction(centerAct)
formatMenu.addSeparator()
formatMenu.addAction(setLineSpacingAct)
formatMenu.addAction(setParagraphSpacingAct)
//! [12]