diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /python/pyqt/examples2/menu.py | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'python/pyqt/examples2/menu.py')
-rwxr-xr-x | python/pyqt/examples2/menu.py | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/python/pyqt/examples2/menu.py b/python/pyqt/examples2/menu.py new file mode 100755 index 00000000..36efffa8 --- /dev/null +++ b/python/pyqt/examples2/menu.py @@ -0,0 +1,301 @@ +#!/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... ", +" ......... ", +" ", +" " +] + +p4_xpm = [ +' 16 14 5 1', +'. c #000000', +'# c #848284', +'a c #c6c3c6', +'b c #ffff00', +'c c #ffffff', +'aaaaa.........aa', +'aaaa.cccccccc.aa', +'aaaa.c.....c.aaa', +'aaa.cccccccc.aaa', +'aaa.c.....c....a', +'aa.cccccccc.a.a.', +'a..........a.a..', +'.aaaaaaaaaa.a.a.', +'.............aa.', +'.aaaaaa###aa.a.a', +'.aaaaaabbbaa...a', +'.............a.a', +'a.aaaaaaaaa.a.aa', +'aa...........aaa' +] + +# 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=None, f=None ): +# apply( QCustomMenuItem.__init__,( self, s, f ) ) +# string = QString( s ) +# font = QFont( f ) + +# def paint( self, p, TRUE, FALSE, x, y, w, h ) : +# p.setFont ( font ) +# p.drawText( x, y, w, h, Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, string ) +# def sizeHint( self ): +# return QFontMetrics( font ).size( Qt.AlignLeft | Qt.AlignVCenter | Qt.ShowPrefix | Qt.DontClip, string ) + + +# +### Implementation of MenuExample class +# + +class MenuExample( QWidget ): + def __init__( self, parent=None, name=None ): + apply( QWidget.__init__,(self, parent, name) ) + self.p1 = QIconSet( QPixmap ( p1_xpm ) ) + self.p2 = QIconSet( QPixmap ( p2_xpm ) ) + self.p3 = QIconSet( QPixmap ( p3_xpm ) ) + self.p4 = QIconSet( QPixmap ( p4_xpm ) ) + #openIcon = QPixmap() + #saveIcon = QPixmap() + #printIcon = QPixmap() + + self.printer = QPopupMenu( self ) + #CHECK_PTR( self.printer ) + self.printer.insertTearOffHandle() + self.printer.insertItem( "&Print to printer", self.printDoc ) + self.printer.insertItem( "Print to &file", self.file ) + self.printer.insertItem( "Print to fa&x", self.fax ) + self.printer.insertSeparator() + self.printer.insertItem( "Printer &Setup", self.printerSetup ) + + self.file = QPopupMenu( self ) + #CHECK_PTR( self.file ); + 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( self.p4, "&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 ) + #CHECK_PTR( self.edit ) + undoID = self.edit.insertItem( "&Undo", self.undo ) + redoID = self.edit.insertItem( "&Redo", self.redo ) + self.edit.setItemEnabled( undoID, TRUE ) + self.edit.setItemEnabled( redoID, FALSE ) + + self.options = QPopupMenu( self ) + #CHECK_PTR( self.options ) + self.options.insertTearOffHandle() + self.options.setCaption( 'Options' ) + self.options.insertItem( "&Normal Font", self.normal ) + self.options.insertSeparator() + + self.options.polish() # adjust system settings + self.f = QFont( self.options.font() ) + self.f.setBold( TRUE ) + self.boldID = self.options.insertItem( "&Bold" ) + self.options.setAccel( Qt.CTRL+Qt.Key_B, self.boldID ) + self.options.connectItem( self.boldID, self.bold ) + + self.f = QFont( self.options.font() ) + self.f.setUnderline( TRUE ) + self.underlineID = self.options.insertItem( "&Underline" ) + 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.options = QPopupMenu() + #CHECK_PTR( self.options ) + self.options.insertItem( "&Normal Font", self.normal ) + self.options.insertSeparator() + self.boldID = self.options.insertItem( "&Bold", self.bold ) + self.underlineID = self.options.insertItem( "&Underline", self.underline ) + + self.isBold = FALSE + self.isUnderline = FALSE + self.options.setCheckable( TRUE ) + + self.help = QPopupMenu( self ) + #CHECK_PTR( self.help ) + self.help.insertItem( "&About", self.about, Qt.CTRL+Qt.Key_H ) + self.help.insertItem( "About &Qt", self.aboutQt ) + + self.menu = QMenuBar( self ) + #CHECK_PTR( self.menu ); + 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 ) + + self.label = QLabel( self ) + #CHECK_PTR( self.label ) + 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.label.setFont( QFont( "times", 12, QFont.Bold ) ) + self.connect( self, PYSIGNAL( "explain" ), self.label.setText ) + #self.connect( self, PYSIGNAL( "explain(const char *)" ), + # self.label, SLOT( "setText(const char *)" ) ) + + self.setMinimumSize( 100, 80 ) + + 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 + 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 + self.options.setItemChecked( self.boldID, self.isBold ) + self.emit ( PYSIGNAL( "explain" ), ( "Options/Bold selected", ) ) + + def underline( self ): + self.isUnderline = not self.isUnderline + 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 file( 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() + +a.setMainWidget( m ) +m.setCaption( 'MenuExample' ) +m.show() +#a.connect( a, SIGNAL('lastWindowClosed()'), a, SLOT('quit()') ) +a.exec_loop() |