Example #1
0
class TabPeers(QWidget):
    def __init__(self, parent):
        QWidget.__init__(self, parent)
        PyQt4.uic.loadUi('ui/peers.ui', self)
        self.peers_get = None

    def update_peers(self):
        if self.peers_get is None:
            self.peers_get = PeersGet()
            self.peers_get.do_get(self.set_peers)

    def add_peer(self, peer):
        rows = self.table_peers.rowCount()
        self.table_peers.insertRow(rows)
        self.table_peers.setItem(rows, 0, QTableWidgetItem(peer.nickname))
        self.table_peers.setItem(rows, 1, QTableWidgetItem(peer.ip))

    def set_peers(self, peers):
        while self.table_peers.rowCount():
            self.table_peers.removeRow(0)
        for peer in peers:
            self.add_peer(peer)
        self.peers_get = None
Example #2
0
 def update_peers(self):
     if self.peers_get is None:
         self.peers_get = PeersGet()
         self.peers_get.do_get(self.peersReceived.emit)
Example #3
0
class TabPeers(QWidget):
    peersReceived = pyqtSignal(list)
    statsReceived = pyqtSignal(object)
    def __init__(self, tab_search, tab_downloads, tabs):
        QWidget.__init__(self, tabs)
        self.tab_search   = tab_search
        self.tab_downloads= tab_downloads
        self.tabs_results = self.tab_search.instance.tabs_results
        self.tabs         = tabs
        # Load de l'UI
        PyQt4.uic.loadUi('ui/peers.ui', self)
        # Vars
        self.peers_get  = None
        self.stats_get  = None
        self.timer      = None
        self.cache      = {}
        # Config affichage
        self.table_peers.sortItems(0)
        self.button_SMB.hide()
        self.button_FTP.hide()
        #self.table_peers.setStyleSheet(\
        #        "QTableView::item{ \
        #         border-right-style:solid; \
        #         border-width:0.5; \
        #         border-color: #9B9B9B; \
        #         }")
        # On autorise la creation de menu contextuel
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        # Signaux
        self.customContextMenuRequested.connect(self.contextMenu)
        self.peersReceived.connect(self.set_peers)
        self.statsReceived.connect(self.set_stats)

    def update_peers(self):
        if self.peers_get is None:
            self.peers_get = PeersGet()
            self.peers_get.do_get(self.peersReceived.emit)

    def add_peer(self, peer):
        rows = self.table_peers.rowCount()
        self.table_peers.insertRow(rows)
        item = QTableWidgetItem(peer.nickname)
        item.peer = peer
        self.table_peers.setItem(rows, 0, item)
        self.table_peers.setItem(rows, 1, QTableWidgetItem(peer.ip))

    def set_peers(self, peers):
        while self.table_peers.rowCount():
            self.table_peers.removeRow(0)
        self.table_peers.setSortingEnabled(False)
        for peer in peers:
            self.add_peer(peer)
        self.peers_get = None
        self.table_peers.setSortingEnabled(True)

    def set_stats(self, stats):
        if stats:
            self.cache[stats.ip] = stats
            row = self.table_peers.currentRow()
            if row >= 0 and self.table_peers.item(row, 0).peer.ip == stats.ip:
                self.label_size_shares.setText(stats.shares_size_mine_str)
                self.label_size_total_shares.setText(stats.shares_size_total_str)
                self.label_peers.setText(str(stats.users))
                self.button_FTP.show()
        else:
            if self.timer:
                self.timer.stop()
            self.timer = QTimer()
            self.timer.setSingleShot(True)
            self.timer.start(1000)
            self.timer.timeout.connect(self.stats_get.do_get)

    def cell_selected(self, row, col, prev_row, prev_col):
        if row >= 0:
            item = self.table_peers.item(row, 0)
            self.label_nickname.setText(item.peer.nickname)
            self.label_ip.setText(item.peer.ip)
            self.label_version.setText("%s %s" % (item.peer.name, item.peer.version))

            if item.peer.ip in self.cache:
                self.set_stats(self.cache[item.peer.ip])
            else:
                self.label_size_shares.setText('-')
                self.label_size_total_shares.setText('-')
                self.label_peers.setText('-')

            self.stats_get = StatisticsGet(self.statsReceived.emit, item.peer.ip)
            self.stats_get.do_get()
            
    def contextMenu(self, pos):
        menu = QMenu()
        # Actions
        showAction      = menu.addAction("Afficher ses partages")
        copyAction      = menu.addAction("Copier l'IP")
        # Signaux
        self.connect(showAction, SIGNAL('triggered()'), self.show_Action)
        self.connect(copyAction, SIGNAL('triggered()'), self.copy_Action)
        # On affiche le menu
        menu.exec_(self.mapToGlobal(pos))
        
    def getPeer(self):
        row = self.table_peers.currentRow()
        return self.table_peers.item(row, 0).peer
        
    def show_Action(self):
        peer = self.getPeer()
        #TODO: ajouter le SMB quand ça existera :p
        browser = BrowserFtp("ftp://"+str(peer.ip)+":2221", self.tabs, self.tabs_results, self.tab_downloads, self.tabs_results)
        self.tabs_results.addTab(browser, peer.nickname)
        self.tabs_results.setCurrentWidget(browser)
        self.tabs.setCurrentIndex(0)
                
    def copy_Action(self):
        pressPaper = QApplication.clipboard()
        pressPaper.setText(self.getPeer().ip)
        
    def double_clicked(self, row, col):
        self.show_Action()
        
    def resizeEvent(self, event):
        maxSize = self.table_peers.size().width()
        # Pseudo : 35%
        self.table_peers.horizontalHeader().resizeSection(0, maxSize*.35)
        event.accept()       
Example #4
0
 def update_peers(self):
     if self.peers_get is None:
         self.peers_get = PeersGet()
         self.peers_get.do_get(self.set_peers)