def __init__( self, reactor, parent = None ): super( MainWindow, self ).__init__( parent ) self.reactor = reactor self.ui = Ui_MainWindow() self.ui.setupUi( self ) self.ui.connectButton.setText( "Connect" ) username = getpass.getuser() if ( username and re.search( r'^[a-z]{3,8}$', username ) ): self.ui.uniqname.insert( str(username) ) self.ui.uniqname.setSelection( 0, len(username) )
class MainWindow( QMainWindow ): def __init__( self, reactor, parent = None ): super( MainWindow, self ).__init__( parent ) self.reactor = reactor self.ui = Ui_MainWindow() self.ui.setupUi( self ) self.ui.connectButton.setText( "Connect" ) username = getpass.getuser() if ( username and re.search( r'^[a-z]{3,8}$', username ) ): self.ui.uniqname.insert( str(username) ) self.ui.uniqname.setSelection( 0, len(username) ) @pyqtSlot() def on_uniqname_textChanged( uniqname ): log.msg( "uniqname set: %s" % uniqname ) # TODO: enable or disable the Connect button based on username validity if ( uniqname and re.search( r'^[a-z]{3,8}$', str( uniqname ) ) ): log.msg( "uniqname is OK" ) else: log.msg( "uniqname is not a uniqname" ) @pyqtSlot() def on_connectButton_clicked( self ): global fluxSession if not fluxSession: uniqname = str( self.ui.uniqname.text() ) fluxSession = connectToFlux( self, uniqname ) else: fluxSession.disconnect() fluxSession = None @pyqtSlot( 'QString' ) def on_accountDropdown_currentIndexChanged( self, account ): global fluxSession, fluxAccounts log.msg( "account set: %s" % account ) if account not in fluxAccounts: log.msg( "account information not found for %s" % account ) return maxproc = fluxAccounts[account]['maxproc'] maxmem = fluxAccounts[account]['maxmem'] / 1024 / 1024 log.msg( "resources: %d cores, %d GB" % (maxproc, maxmem) ) self.ui.resourcesValueLabel.setText( str( "%d cores, %d GB RAM" % ( maxproc, maxmem ) ) ) @pyqtSlot() def on_aButton_clicked( self ): global fluxSession log.msg( "Button A clicked" ) if not fluxSession: log.msg( " not connected" ) return fluxSession.runCommand( "/bin/ls -la" ) @pyqtSlot() def on_bButton_clicked( self ): global fluxSession log.msg( "Button B clicked" ) if not fluxSession: log.msg( " not connected" ) return fluxSession.runCommand( "/sbin/ifconfig en0" ) def closeEvent(self, e): if self.reactor.getThreadPool(): self.reactor.threadpool.stop() # TODO: add this to qt5reactor code self.reactor.stop()