def __init__(self, request_emitter): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) #Show the shared files into the shared folder self._redraw_shared_files() self.ui.logoutGroupBox.setVisible(False) #Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.reloadSharedFilesBtn.clicked.connect(self._reloadSharedFiles) self.ui.loginBtn.clicked.connect(self._login) self.ui.logoutBtn.clicked.connect(self._logout) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message) self.connect(self, SIGNAL("login_done"), self._login_done)
def __init__(self, request_emitter): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) #Show the shared files into the shared folder self._redraw_shared_files() #Show the known neighbours self._redraw_peers() #Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.searchNeighboursBtn.clicked.connect(self._searchNeighboursBtnClicked) self.ui.addPeerBtn.clicked.connect(self._addPeerBtnClicked) self.connect(self, SIGNAL("peers_changed"), self._redraw_peers) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message)
def __init__(self, request_emitter, is_superpeer=False): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) # Show the shared files into the shared folder self._redraw_shared_files() # Show the known neighbours self._redraw_neighbours_peers() # Change the UI based on is_superpeer if is_superpeer: self.ui.sessionGroupBox.setVisible(False) self.ui.youAreLabel.setText("superpeer") else: self.ui.youAreLabel.setText("peer") self.ui.tabsWidget.removeTab(2) # remove the "My peers" tab self.ui.logoutBtn.setVisible(False) # Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.addNeighbourPeerBtn.clicked.connect(self._addNeighourPeerBtnClicked) self.ui.searchSuperPeerBtn.clicked.connect(self._searchSuperPeerBtnClicked) self.ui.clearNeighboursBtn.clicked.connect(self._clearAllNeighbours) self.ui.reloadSharedFilesBtn.clicked.connect(self._reloadSharedFiles) self.ui.logoutBtn.clicked.connect(self._logout) self.connect(self, SIGNAL("neighbours_peers_changed"), self._redraw_neighbours_peers) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message) self.connect(self, SIGNAL("superpeer_choosen"), self._show_choosen_superpeer) self.connect(self, SIGNAL("new_superpeer"), self._draw_new_superpeer) self.connect(self, SIGNAL("new_peer"), self._draw_new_peer) self.connect(self, SIGNAL("remove_peer"), self._remove_peer) self.connect(self, SIGNAL("login_done"), self._login_done)
class QBittorrentWindow(QMainWindow): def __init__(self, request_emitter): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) #Show the shared files into the shared folder self._redraw_shared_files() self.ui.logoutGroupBox.setVisible(False) #Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.reloadSharedFilesBtn.clicked.connect(self._reloadSharedFiles) self.ui.loginBtn.clicked.connect(self._login) self.ui.logoutBtn.clicked.connect(self._logout) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message) self.connect(self, SIGNAL("login_done"), self._login_done) #EVENTS def _login(self): tracker_ip = self.ui.trackerIpLineEdit.text() tracker_port = self.ui.trackerPortLineEdit.text() if len(tracker_ip)>0 and len(tracker_port) > 0: self.ui.trackerStatusLabel.setText("Sto connettendo...") if self.request_emitter.login(tracker_ip, tracker_port): self.ui.trackerStatusLabel.setText("Connesso") def _logout(self): if self.request_emitter.logout() != -1: self.ui.trackerStatusLabel.setText("Disconnesso...") self.ui.logoutGroupBox.setVisible(False) self.ui.loginGroupBox.setVisible(True) self.ui.sessionIdLabel.setText("") else: self.ui.trackerStatusLabel.setText("Non puoi disconnetterti!") #After some seconds redraw "Connesso" threading.Timer(3, self.ui.trackerStatusLabel.setText("Connesso")).start() def _login_done(self, session_id): try: if not session_id: self.ui.trackerStatusLabel.setText("Login non riuscito, forse il tracker non esiste.") return elif int(session_id) == 0: self.ui.trackerStatusLabel.setText("Il tracker non vuole farti loggare.") return except Exception: pass self.ui.sessionIdLabel.setText(session_id) self.ui.loginGroupBox.setVisible(False) self.ui.logoutGroupBox.setVisible(True) self.request_emitter.add_all_files_to_tracker() def _reloadSharedFiles(self): FilesManager.load_my_files() self._redraw_shared_files() self.request_emitter.add_all_files_to_tracker() def _show_log_message(self, message): self.ui.loggingTextBrowser.append(message) def _searchBtnClicked(self): self.ui.resultsTreeWidget.clear() query = self.ui.searchLineEdit.text() self.request_emitter.search_for_files(query) def _resultsTreeClicked(self, item, index): file_id = item.text(1) self.request_emitter.download_file(file_id) self.ui.tabsWidget.setCurrentIndex(2) #go to the transfer page def _redraw_shared_files(self): self.ui.sharedFilesListWidget.clear() for file in FilesManager.shared_files(): file_item = QListWidgetItem(file.filename, self.ui.sharedFilesListWidget) def _draw_new_result_file(self, filename, file_id, file_size, part_size): item = QTreeWidgetItem(self.ui.resultsTreeWidget, QStringList([str(filename), str(file_id), str(file_size), str(part_size)])) def _draw_download_item(self, filename, id, part_number, peer_ip, percent): self._draw_transfer_item(self.ui.downloadsTreeWidget, filename, id, part_number, peer_ip, percent) def _draw_upload_item(self, filename, id, part_number, peer_ip, percent): self._draw_transfer_item(self.ui.uploadsTreeWidget, filename, id, part_number, peer_ip, percent) def _draw_transfer_item(self, container, filename, id, part_number, peer_ip, percent): items_found = container.findItems(id, Qt.MatchExactly, 1) item = None if len(items_found) > 0: for i in items_found: if i.text(4) == peer_ip and i.text(2) == str(part_number): item = i break if item: container.itemWidget(item, 3).setValue(percent) else: item = QTreeWidgetItem(container, QStringList([str(filename), str(id), str(part_number), "0", str(peer_ip)])) progress_bar = QProgressBar() progress_bar.setMinimum(0) progress_bar.setMaximum(100) progress_bar.setValue(percent) container.setItemWidget(item, 3, progress_bar) #PUBLIC Methods (ovverides from AbstractUI in the future) def add_new_result_file(self, filename, file_id, file_size, part_size): self.emit(SIGNAL("new_result_file"), filename, file_id, file_size, part_size) def shared_files_changed(self): self.emit(SIGNAL("shared_files_changed")) def download_file_changed(self, filename, file_id, part_number, peer_ip, percent): self.emit(SIGNAL("download_file_changed"), filename, file_id, part_number, peer_ip, percent) def upload_file_changed(self, filename, file_id, part_number, peer_ip, percent): self.emit(SIGNAL("upload_file_changed"), filename, file_id, part_number, peer_ip, percent) def show_log_message(self, message): self.emit(SIGNAL("log_message_ready"), message) def login_done(self, session_id): self.emit(SIGNAL("login_done"), session_id)
class QGnutellaWindow(QMainWindow): def __init__(self, request_emitter): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) #Show the shared files into the shared folder self._redraw_shared_files() #Show the known neighbours self._redraw_peers() #Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.searchNeighboursBtn.clicked.connect(self._searchNeighboursBtnClicked) self.ui.addPeerBtn.clicked.connect(self._addPeerBtnClicked) self.connect(self, SIGNAL("peers_changed"), self._redraw_peers) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message) #EVENTS def _show_log_message(self, message): self.ui.loggingTextBrowser.append(message) def _addPeerBtnClicked(self): ip = self.ui.peerIP.text() port = self.ui.peerPort.text() if len(port) > 1 and len(ip.split(".")) == 4: # Add peer to PeerManager and to list PeersManager.add_new_peer(ip, port) self.peers_changed() def _searchBtnClicked(self): self.ui.resultsTreeWidget.clear() query = self.ui.searchLineEdit.text() ttl = int(self.ui.ttlFilesSearchSpinBox.value()) self.request_emitter.search_for_files(query, ttl) def _resultsTreeClicked(self, item, index): file_name = item.text(0) peer_ip = item.text(1) peer_port = item.text(2) file_md5 = item.text(3) klog("Scarico: %s da %s:%s" % (file_name, peer_ip, peer_port)) self.request_emitter.download_file(peer_ip, peer_port, file_md5, file_name) self.ui.mainTabWidget.setCurrentIndex(2) #go to the transfer page #EVENTS HANDLING def _searchNeighboursBtnClicked(self): ttl = int(self.ui.ttlPeersSearchSpinBox.value()) self.request_emitter.search_for_peers(ttl) def _redraw_peers(self): self.ui.peersTreeWidget.clear() for peer in PeersManager.find_known_peers(): item = QTreeWidgetItem(self.ui.peersTreeWidget, QStringList([str(peer.ip),str(peer.port)])) def _redraw_shared_files(self): self.ui.sharedFilesListWidget.clear() for file in FilesManager.shared_files(): file_item = QListWidgetItem(file.filename, self.ui.sharedFilesListWidget) def _draw_new_result_file(self, filename, peer_ip, peer_port, file_md5): item = QTreeWidgetItem(self.ui.resultsTreeWidget, QStringList([str(filename), str(peer_ip), str(peer_port), str(file_md5)])) def _draw_download_item(self, filename, md5, peer_ip, percent): self._draw_transfer_item(self.ui.downloadsTreeWidget, filename, md5, peer_ip, percent) def _draw_upload_item(self, filename, md5, peer_ip, percent): self._draw_transfer_item(self.ui.uploadsTreeWidget, filename, md5, peer_ip, percent) def _draw_transfer_item(self, container, filename, md5, peer_ip, percent): items_found = container.findItems(md5, Qt.MatchExactly, 3) item = None if len(items_found) > 0: for i in items_found: if i.text(2) == peer_ip: item = i break if item: container.itemWidget(item, 1).setValue(percent) else: item = QTreeWidgetItem(container, QStringList([str(filename), "0", str(peer_ip), str(md5)])) progress_bar = QProgressBar() progress_bar.setMinimum(0) progress_bar.setMaximum(100) progress_bar.setValue(percent) container.setItemWidget(item, 1, progress_bar) #PUBLIC Methods (ovverides from AbstractUI in the future) def add_new_result_file(self, filename, peer_ip, peer_port, file_md5): self.emit(SIGNAL("new_result_file"), filename, peer_ip, peer_port, file_md5) def peers_changed(self): self.emit(SIGNAL("peers_changed")) def shared_files_changed(self): self.emit(SIGNAL("shared_files_changed")) def download_file_changed(self, filename, file_md5, peer_ip, percent): self.emit(SIGNAL("download_file_changed"), filename, file_md5, peer_ip, percent) def upload_file_changed(self, filename, file_md5, peer_ip, percent): self.emit(SIGNAL("upload_file_changed"), filename, file_md5, peer_ip, percent) def show_log_message(self, message): self.emit(SIGNAL("log_message_ready"), message)
class QKazaaWindow(QMainWindow): def __init__(self, request_emitter, is_superpeer=False): self.request_emitter = request_emitter self.request_emitter.ui_handler = self QMainWindow.__init__(self) # Set up the user interface from Designer. self.ui = Ui_MainWindow() self.ui.setupUi(self) # Show the shared files into the shared folder self._redraw_shared_files() # Show the known neighbours self._redraw_neighbours_peers() # Change the UI based on is_superpeer if is_superpeer: self.ui.sessionGroupBox.setVisible(False) self.ui.youAreLabel.setText("superpeer") else: self.ui.youAreLabel.setText("peer") self.ui.tabsWidget.removeTab(2) # remove the "My peers" tab self.ui.logoutBtn.setVisible(False) # Connect the signals to events self.ui.searchBtn.clicked.connect(self._searchBtnClicked) self.ui.resultsTreeWidget.itemDoubleClicked.connect(self._resultsTreeClicked) self.ui.addNeighbourPeerBtn.clicked.connect(self._addNeighourPeerBtnClicked) self.ui.searchSuperPeerBtn.clicked.connect(self._searchSuperPeerBtnClicked) self.ui.clearNeighboursBtn.clicked.connect(self._clearAllNeighbours) self.ui.reloadSharedFilesBtn.clicked.connect(self._reloadSharedFiles) self.ui.logoutBtn.clicked.connect(self._logout) self.connect(self, SIGNAL("neighbours_peers_changed"), self._redraw_neighbours_peers) self.connect(self, SIGNAL("shared_files_changed"), self._redraw_shared_files) self.connect(self, SIGNAL("new_result_file"), self._draw_new_result_file) self.connect(self, SIGNAL("download_file_changed"), self._draw_download_item) self.connect(self, SIGNAL("upload_file_changed"), self._draw_upload_item) self.connect(self, SIGNAL("log_message_ready"), self._show_log_message) self.connect(self, SIGNAL("superpeer_choosen"), self._show_choosen_superpeer) self.connect(self, SIGNAL("new_superpeer"), self._draw_new_superpeer) self.connect(self, SIGNAL("new_peer"), self._draw_new_peer) self.connect(self, SIGNAL("remove_peer"), self._remove_peer) self.connect(self, SIGNAL("login_done"), self._login_done) # EVENTS def _logout(self): if self.request_emitter.logout() != -1: self.ui.logoutBtn.setVisible(False) self.ui.searchSuperPeerBtn.setVisible(True) self.ui.sessionIdLabel.setText("") self.ui.superPeerLabel.setText("") def _login_done(self, session_id): try: if int(session_id) == 0: self.ui.sessionIdLabel.setText("Errore, esisti gia nel supernodo.") return except Exception: pass self.ui.sessionIdLabel.setText(session_id) self.request_emitter.register_all_files_to_supernode() def _clearAllNeighbours(self): PeersManager.remove_all_peers() self.ui.neighboursPeersTreeWidget.clear() def _reloadSharedFiles(self): self.request_emitter.unregister_all_files_to_supernode() FilesManager.load_my_files() self._redraw_shared_files() self.request_emitter.register_all_files_to_supernode() def _draw_new_superpeer(self, superpeer_ip, superpeer_port): item = QTreeWidgetItem(self.ui.superpeersTreeWidget, QStringList([str(superpeer_ip), str(superpeer_port)])) def _remove_peer(self, peer_ip, peer_port): items_found = self.ui.mypeersTreeWidget.findItems(peer_ip, Qt.MatchExactly, 0) if len(items_found) > 0: # search the port for i in items_found: if i.text(1) == peer_port: self.ui.mypeersTreeWidget.removeItemWidget(i, 0) self.ui.mypeersTreeWidget.removeItemWidget(i, 1) def _draw_new_peer(self, peer_ip, peer_port): item = QTreeWidgetItem(self.ui.mypeersTreeWidget, QStringList([str(peer_ip), str(peer_port)])) def _show_choosen_superpeer(self, ip, port): self.ui.superPeerLabel.setText("%s:%d" % (ip, int(port))) self.ui.logoutBtn.setVisible(True) self.ui.searchSuperPeerBtn.setVisible(False) def _show_log_message(self, message): self.ui.loggingTextBrowser.append(message) def _searchSuperPeerBtnClicked(self): self.ui.superpeersTreeWidget.clear() self.request_emitter.search_for_superpeers() def _addNeighourPeerBtnClicked(self): ip = self.ui.peerIP.text() port = self.ui.peerPort.text() if len(port) > 1 and len(ip.split(".")) == 4: # Add peer to PeerManager and to list PeersManager.add_new_peer(Peer(ip, port)) self.neighbours_peers_changed() def _searchBtnClicked(self): self.ui.resultsTreeWidget.clear() query = self.ui.searchLineEdit.text() ttl = int(self.ui.ttlFilesSearchSpinBox.value()) self.request_emitter.search_for_files(query, ttl) def _resultsTreeClicked(self, item, index): file_name = item.text(0) peer_ip = item.text(1) peer_port = item.text(2) file_md5 = item.text(3) klog("Scarico: %s da %s:%s" % (file_name, peer_ip, peer_port)) self.request_emitter.download_file(peer_ip, peer_port, file_md5, file_name) self.ui.tabsWidget.setCurrentIndex(4) # go to the transfer page def _redraw_neighbours_peers(self): self.ui.neighboursPeersTreeWidget.clear() for peer in PeersManager.find_known_peers(): item = QTreeWidgetItem(self.ui.neighboursPeersTreeWidget, QStringList([str(peer.ip), str(peer.port)])) def _redraw_shared_files(self): self.ui.sharedFilesListWidget.clear() for file in FilesManager.shared_files(): file_item = QListWidgetItem(file.filename, self.ui.sharedFilesListWidget) def _draw_new_result_file(self, filename, peer_ip, peer_port, file_md5): item = QTreeWidgetItem( self.ui.resultsTreeWidget, QStringList([str(filename), str(peer_ip), str(peer_port), str(file_md5)]) ) def _draw_download_item(self, filename, md5, peer_ip, percent): self._draw_transfer_item(self.ui.downloadsTreeWidget, filename, md5, peer_ip, percent) def _draw_upload_item(self, filename, md5, peer_ip, percent): self._draw_transfer_item(self.ui.uploadsTreeWidget, filename, md5, peer_ip, percent) def _draw_transfer_item(self, container, filename, md5, peer_ip, percent): items_found = container.findItems(md5, Qt.MatchExactly, 3) item = None if len(items_found) > 0: for i in items_found: if i.text(2) == peer_ip: item = i break if item: container.itemWidget(item, 1).setValue(percent) else: item = QTreeWidgetItem(container, QStringList([str(filename), "0", str(peer_ip), str(md5)])) progress_bar = QProgressBar() progress_bar.setMinimum(0) progress_bar.setMaximum(100) progress_bar.setValue(percent) container.setItemWidget(item, 1, progress_bar) # PUBLIC Methods (ovverides from AbstractUI in the future) def add_new_result_file(self, filename, peer_ip, peer_port, file_md5): self.emit(SIGNAL("new_result_file"), filename, peer_ip, peer_port, file_md5) def neighbours_peers_changed(self): self.emit(SIGNAL("neighbours_peers_changed")) def shared_files_changed(self): self.emit(SIGNAL("shared_files_changed")) def download_file_changed(self, filename, file_md5, peer_ip, percent): self.emit(SIGNAL("download_file_changed"), filename, file_md5, peer_ip, percent) def upload_file_changed(self, filename, file_md5, peer_ip, percent): self.emit(SIGNAL("upload_file_changed"), filename, file_md5, peer_ip, percent) def show_log_message(self, message): self.emit(SIGNAL("log_message_ready"), message) def superpeer_choosen(self, ip, port): self.emit(SIGNAL("superpeer_choosen"), ip, port) def add_new_superpeer(self, ip, port): self.emit(SIGNAL("new_superpeer"), ip, port) def add_new_peer(self, ip, port): self.emit(SIGNAL("new_peer"), ip, port) def remove_peer(self, ip, port): self.emit(SIGNAL("remove_peer"), ip, port) def login_done(self, session_id): self.emit(SIGNAL("login_done"), session_id)