def connectOrDisconnect(self): if self.ftp: self.ftp.abort() self.ftp.deleteLater() self.ftp = None self.fileList.setEnabled(False) self.cdToParentButton.setEnabled(False) self.downloadButton.setEnabled(False) self.connectButton.setEnabled(True) self.connectButton.setText("Connect") self.setCursor(QtCore.Qt.ArrowCursor) return self.setCursor(QtCore.Qt.WaitCursor) self.ftp = QtNetwork.QFtp(self) self.ftp.commandFinished.connect(self.ftpCommandFinished) self.ftp.listInfo.connect(self.addToList) self.ftp.dataTransferProgress.connect(self.updateDataTransferProgress) self.fileList.clear() self.currentPath = '' self.isDirectory.clear() url = QtCore.QUrl(self.ftpServerLineEdit.text()) if not url.isValid() or url.scheme().lower() != 'ftp': self.ftp.connectToHost(self.ftpServerLineEdit.text(), 21) self.ftp.login() else: self.ftp.connectToHost(url.host(), url.port(21)) user_name = url.userName() if user_name: try: # Python v3. user_name = bytes(user_name, encoding='latin1') except: # Python v2. pass self.ftp.login(QtCore.QUrl.fromPercentEncoding(user_name), url.password()) else: self.ftp.login() if url.path(): self.ftp.cd(url.path()) self.fileList.setEnabled(True) self.connectButton.setEnabled(False) self.connectButton.setText("Disconnect") self.statusLabel.setText("Connecting to FTP server %s..." % self.ftpServerLineEdit.text())
def initUI(self): #layout variables cw = qt.QWidget() self.setCentralWidget(cw) grid = qt.QGridLayout() #toolbar action openAction = qt.QAction( self.style().standardIcon(qt.QStyle.SP_DriveNetIcon), 'Open Connection', self) openAction.triggered.connect(self.openConnectionWin) #toolbar self.toolbar = self.addToolBar('FTP') self.toolbar.addAction(openAction) #init identifiers dictionary self.identifiers = {} #init ftp self.ftp = qnw.QFtp(self) #ftp tree self.serverTree = qt.QTreeWidget() self.serverTree.itemDoubleClicked.connect(self.twDblClicked) #self.serverTree.dropEvent.connect(self.itemDropped) lbls = ["Name", "Size"] self.serverTree.setHeaderLabels(lbls) self.serverTree.setColumnWidth(0, 200) #parent directory button is put on toolbar icn = self.style().standardIcon(qt.QStyle.SP_FileDialogToParent) upBtn = qt.QAction(icn, "Parent dir", self) upBtn.triggered.connect(self.upDir) self.toolbar.addAction(upBtn) #layout code policy = qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding) self.serverTree.setSizePolicy(policy) grid.addWidget(self.serverTree, 0, 0) cw.setLayout(grid) self.setGeometry(100, 100, 450, 575) self.setWindowTitle('FTP') self.setWindowIcon(qt.QIcon('icon.png')) self.show()