diff options
Diffstat (limited to 'examples/progressbar.py')
| -rwxr-xr-x | examples/progressbar.py | 155 | 
1 files changed, 155 insertions, 0 deletions
| diff --git a/examples/progressbar.py b/examples/progressbar.py new file mode 100755 index 0000000..e33362e --- /dev/null +++ b/examples/progressbar.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python + +"""*********************************************************************** +** $Id: progressbar.py,v 1.1 2003/06/10 14:51:24 phil Exp $ +** +** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved. +** +** This file is part of an example program for TQt.  This example +** program may be used, distributed and modified without limitation. +** +**************************************************************************""" + +#import pdb +import sys +from python_tqt.qt import * + +FALSE = 0 +TRUE  = 1 + +class ProgressBar( TQButtonGroup ): +    # Constructor +    # Creates child widgets of the ProgressBar widget +    def __init__( self, parent=None, name=None ): +        TQButtonGroup.__init__( self, 0, TQt.Horizontal, "Progress Bar", parent, name ) +         +        self.timer = TQTimer() +         +        self.setMargin( 10 ) +        toplayout = TQGridLayout( self.layout(), 2, 2, 5) +             +        self.setRadioButtonExclusive( TRUE ) +         +        # insert three radiobuttons which the user can use +        # to set the speed of the progress and two pushbuttons +        # to start/pause/continue and reset the progress +        self.slow   = TQRadioButton( "&Slow",   self ) +        self.normal = TQRadioButton( "&Normal", self ) +        self.fast   = TQRadioButton( "&Fast",   self ) +        vb1 = TQVBoxLayout( ) +        toplayout.addLayout( vb1, 0, 0 ) +        vb1.addWidget( self.slow ) +        vb1.addWidget( self.normal ) +        vb1.addWidget( self.fast ) +         +        # two push buttons, one for start, for for reset. +        self.start = TQPushButton( "&Start", self ) +        self.reset = TQPushButton( "&Reset", self ) +         +        vb2 = TQVBoxLayout() +        toplayout.addLayout( vb2, 0, 1 ) +        vb2.addWidget( self.start ) +        vb2.addWidget( self.reset ) +         +        # Create the progressbar +        self.progress = TQProgressBar( 100, self ) +        #self.progress.setStyle( TQMotifStyle() ) +        toplayout.addMultiCellWidget( self.progress, 1, 1, 0, 1 ) +         +        # connect the clicked() SIGNALs of the pushbuttons to SLOTs +        self.connect( self.start, SIGNAL("clicked()"), self.slotStart ) +        self.connect( self.reset, SIGNAL("clicked()"), self.slotReset ) +         +        # connect the timeout() SIGNAL of the progress-timer to a SLOT +        self.connect( self.timer, SIGNAL("timeout()"), self.slotTimeout ) +        # Let's start with normal speed... +        self.normal.setChecked( TRUE ) + +        # some contraints +        self.start.setFixedWidth( 80 ) +        self.setMinimumWidth( 300 ) +         +    # SLOT slotStart +    # This SLOT is called if the user clicks start/pause/continue button +    def slotStart( self ): +        # If the progress bar is at the beginning... +        if self.progress.progress() == -1 : +            # ...set according to the checked speed-radiobutton the +            # the number of steps which are needed to complete the process +            if self.slow.isChecked(): +                self.progress.setTotalSteps( 10000 ) +            elif self.normal.isChecked() : +                self.progress.setTotalSteps( 1000 ) +            else : +                self.progress.setTotalSteps( 50 ) +     +            # disable the speed-radiobuttons +            self.slow.setEnabled( FALSE ) +            self.normal.setEnabled( FALSE ) +            self.fast.setEnabled( FALSE ) +             +        # If the progress is not running... +        if not self.timer.isActive() : +            # ...start the timer (and so the progress) with a interval of 1 ms... +            self.timer.start( 1 ) +            # ...and rename the start/pause/continue button to Pause +            self.start.setText( "&Pause" ) +        else : # if the prgress is running... +            # ...stop the timer (and so the prgress)... +            self.timer.stop() +            # ...and rename the start/pause/continue button to Continue +            self.start.setText( "&Continue" ) +     +    # SLOT slotReset +    # This SLOT is called when the user clicks the reset button +    def slotReset( self ): +        # stop the timer and progress +        self.timer.stop() +     +        # rename the start/pause/continue button to Start... +        self.start.setText( "&Start" ) +        # ...and enable this button +        self.start.setEnabled( TRUE ) +     +        # enable the speed-radiobuttons +        self.slow.setEnabled( TRUE ) +        self.normal.setEnabled( TRUE ) +        self.fast.setEnabled( TRUE ) +     +        # reset the progressbar +        self.progress.reset() +     +    # SLOT slotTimeout +    # This SLOT is called each ms when the timer is +    # active (== progress is running) +    def slotTimeout( self ): +        p = self.progress.progress() + +        # If the progress is complete... +        if p == self.progress.totalSteps() : +            # ...rename the start/pause/continue button to Start... +            self.start.setText( "&Start" ) +            # ...and disable it... +            self.start.setEnabled( FALSE ) +            # ...and return +            return + +        # If the process is not complete increase it +        p += 1 +        self.progress.setProgress( p ) +     + +    #TQPushButton *start, *pause, *reset; + +def main( args ): +    a = TQApplication( args ) +     +    progressbar = ProgressBar() +    progressbar.setCaption("TQt Example - ProgressBar") +    a.setMainWidget(progressbar) +    progressbar.show() +     +    a.exec_loop() +     +if __name__=="__main__": +    main(sys.argv) | 
