Example #1
0
 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) )
Example #2
0
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()