diff options
Diffstat (limited to 'python/pyqt/examples3/menu.py')
-rwxr-xr-x | python/pyqt/examples3/menu.py | 286 |
1 files changed, 0 insertions, 286 deletions
diff --git a/python/pyqt/examples3/menu.py b/python/pyqt/examples3/menu.py deleted file mode 100755 index 820da942..00000000 --- a/python/pyqt/examples3/menu.py +++ /dev/null @@ -1,286 +0,0 @@ -#!/usr/bin/env python - -#**************************************************************************** -#** $Id$ -#** -#** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved. -#** -#** This file is part of an example program for PyQt. This example -#** program may be used, distributed and modified without limitation. -#** -#*****************************************************************************/ - -import sys, string -from qt import * - -TRUE = 1 -FALSE = 0 - -# XPM -p1_xpm = [ -"16 16 3 1", -" c None", -". c #000000000000", -"X c #FFFFFFFF0000", -" ", -" ", -" .... ", -" .XXXX. ", -" .............. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .............. ", -" " -] - -# XPM -p2_xpm = [ -"16 16 3 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -" ", -" ...... ", -" .XXX.X. ", -" .XXX.XX. ", -" .XXX.XXX. ", -" .XXX..... ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" .XXXXXXX. ", -" ......... ", -" ", -" " -] - -# XPM -p3_xpm = [ -"16 16 3 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -" ", -" ", -" ......... ", -" ........... ", -" ........ .. ", -" ........... ", -" ........... ", -" ........... ", -" ........... ", -" ...XXXXX... ", -" ...XXXXX... ", -" ...XXXXX... ", -" ...XXXXX... ", -" ......... ", -" ", -" " -] - - -# Auxiliary class to provide fancy menu items with different fonts. -# Used for the "bold" and "underline" menu items in the options menu. - -class MyMenuItem( QCustomMenuItem ): - def __init__( self, s, f ): - QCustomMenuItem.__init__( self ) - self.string = s - self.font = f - - def paint( self, p, cg, act, enabled, x, y, w, h ) : - p.setFont ( self.font ) - p.drawText( x, y, w, h, Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, self.string ) - - def sizeHint( self ): - return QFontMetrics( self.font ).size( Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, self.string ) - - -# Implementation of MenuExample class - -class MenuExample( QWidget ): - def __init__( self, parent=None, name=None ): - QWidget.__init__( self, parent, name ) - self.p1 = QIconSet( QPixmap ( p1_xpm ) ) - self.p2 = QIconSet( QPixmap ( p2_xpm ) ) - self.p3 = QIconSet( QPixmap ( p3_xpm ) ) - - self.printer = QPopupMenu( self ) - self.printer.insertTearOffHandle() - self.printer.insertItem( "&Print to printer", self.printDoc ) - self.printer.insertItem( "Print to &file", self.printFile ) - self.printer.insertItem( "Print to fa&x", self.fax ) - self.printer.insertSeparator() - self.printer.insertItem( "Printer &Setup", self.printerSetup ) - - self.file = QPopupMenu( self ) - self.file.insertItem( self.p1, "&Open", self.open, Qt.CTRL+Qt.Key_O ) - self.file.insertItem( self.p2, "&New", self.news, Qt.CTRL+Qt.Key_N ) - self.file.insertItem( self.p3, "&Save", self.save, Qt.CTRL+Qt.Key_S ) - self.file.insertItem( "&Close", self.closeDoc, Qt.CTRL+Qt.Key_W ) - self.file.insertSeparator() - self.file.insertItem( "&Print", self.printer, Qt.CTRL+Qt.Key_P ) - self.file.insertSeparator() - self.file.insertItem( "E&xit", qApp, SLOT( "quit()" ), Qt.CTRL+Qt.Key_Q ) - - self.edit = QPopupMenu( self ) - undoID = self.edit.insertItem( "&Undo", self.undo ) - redoID = self.edit.insertItem( "&Redo", self.redo ) - self.edit.setItemEnabled( undoID, FALSE ) - self.edit.setItemEnabled( redoID, FALSE ) - - self.options = QPopupMenu( self ) - self.options.insertTearOffHandle() - self.options.setCaption( "Options" ) - self.options.insertItem( "&Normal Font", self.normal ) - self.options.insertSeparator() - - self.options.polish() # adjust system settings - f = self.options.font() - f.setBold( TRUE ) - self.boldID = self.options.insertItem( MyMenuItem( "Bold", f ) ) - self.options.setAccel( Qt.CTRL+Qt.Key_B, self.boldID ) - self.options.connectItem( self.boldID, self.bold ) - - f = self.options.font() - f.setUnderline( TRUE ) - self.underlineID = self.options.insertItem( MyMenuItem( "Underline", f ) ) - self.options.setAccel( Qt.CTRL+Qt.Key_U, self.underlineID ) - self.options.connectItem( self.underlineID, self.underline ) - - self.isBold = FALSE - self.isUnderline = FALSE - self.options.setCheckable( TRUE ) - - self.help = QPopupMenu( self ) - self.help.insertItem( "&About", self.about, Qt.CTRL+Qt.Key_H ) - self.help.insertItem( "About &Qt", self.aboutQt ) - - self.menu = QMenuBar( self ) - self.menu.insertItem( "&File", self.file ) - self.menu.insertItem( "&Edit", self.edit ) - self.menu.insertItem( "&Options", self.options ) - self.menu.insertSeparator() - self.menu.insertItem( "&Help", self.help ) - self.menu.setSeparator( QMenuBar.InWindowsStyle ) - - msg = QLabel( self ) - msg.setText( "A context menu is available.\n" - "Invoke it by right-clicking or by" - " pressing the 'context' button." ) - msg.setGeometry( 0, self.height() - 60, self.width(), 60 ) - msg.setAlignment( Qt.AlignCenter ) - - self.label = QLabel( self ) - self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 ) - self.label.setFrameStyle( QFrame.Box | QFrame.Raised ) - self.label.setLineWidth( 1 ) - self.label.setAlignment( Qt.AlignCenter ) - - self.connect( self, PYSIGNAL( "explain" ), self.label, SLOT( "setText(const QString &" ) ) - - self.setMinimumSize( 100, 80 ) - self.setFocusPolicy( QWidget.ClickFocus ) - - def contextMenuEvent(self, cmev): - contextMenu = QPopupMenu( self ) - caption = QLabel( "<font color=darkblue><u><b>Context Menu</b></u></font>", self ) - caption.setAlignment( Qt.AlignCenter ) - contextMenu.insertItem( caption ) - contextMenu.insertItem( "&New", self.news, Qt.CTRL+Qt.Key_N ) - contextMenu.insertItem( "&Open...", self.open, Qt.CTRL+Qt.Key_O ) - contextMenu.insertItem( "&Save", self.save, Qt.CTRL+Qt.Key_S ) - submenu = QPopupMenu( self ) - submenu.insertItem( "&Print to printer", self.printDoc ) - submenu.insertItem( "Print to &file", self.printFile ) - submenu.insertItem( "Print to fa&x", self.fax ) - contextMenu.insertItem( "&Print", submenu ) - contextMenu.exec_loop( QCursor.pos() ) - - def open( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Open selected", ) ) - - def news( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/New selected", ) ) - - def save( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Save selected", ) ) - - def closeDoc( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Close selected", ) ) - - def undo( self ): - self.emit( PYSIGNAL( "explain" ), ( "Edit/Undo selected", ) ) - - def redo( self ): - self.emit( PYSIGNAL( "explain" ), ( "Edit/Redo selected", ) ) - - def normal( self ): - self.isBold = FALSE - self.isUnderline = FALSE - font = QFont() - self.label.setFont( font ) - self.options.setItemChecked( self.boldID, self.isBold ) - self.options.setItemChecked( self.underlineID, self.isUnderline ) - self.emit( PYSIGNAL( "explain" ), ( "Options/Normal selected", ) ) - - def bold( self ): - self.isBold = not self.isBold - font = QFont() - font.setBold( self.isBold ) - font.setUnderline( self.isUnderline ) - self.label.setFont( font ) - self.options.setItemChecked( self.boldID, self.isBold ) - self.emit( PYSIGNAL( "explain" ), ( "Options/Bold selected", ) ) - - def underline( self ): - self.isUnderline = not self.isUnderline - font = QFont() - font.setBold( self.isBold ) - font.setUnderline( self.isUnderline ) - self.label.setFont( font ) - self.options.setItemChecked( self.underlineID, self.isUnderline ) - self.emit( PYSIGNAL("explain"), ( "Options/Underline selected", )) - - def about( self ): - QMessageBox.about( self, "Qt Menu Example", - "This example demonstrates simple use of Qt menus.\n" - "You can cut and paste lines from it to your own\n" - "programs." ) - - def aboutQt( self ): - QMessageBox.aboutQt( self, "Qt Menu Example" ) - - def printDoc( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print selected", ) ) - - def printFile( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print To File selected", ) ) - - def fax( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Print To Fax selected", ) ) - - def printerSetup( self ): - self.emit( PYSIGNAL( "explain" ), ( "File/Printer/Printer Setup selected", ) ) - - def resizeEvent( self, ev ): - self.label.setGeometry( 20, self.rect().center().y()-20, self.width()-40, 40 ) - - -a = QApplication( sys.argv ) -m = MenuExample() - -m.setCaption( "Qt Examples - Menus" ) -a.setMainWidget( m ) -m.show() -a.exec_loop() |