Changeset 11436:3e57927834a2 in orange


Ignore:
Timestamp:
04/03/13 11:05:04 (13 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Code style fixes for 'OWDatabasesUpdate'.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/OWDatabasesUpdate.py

    r10979 r11436  
    1 from __future__ import with_statement  
    2 import sys, os 
     1from __future__ import with_statement 
     2 
     3import os 
     4import sys 
     5 
     6from datetime import datetime 
     7 
    38import orngServerFiles 
    49import orngEnviron 
    5 import threading 
     10 
     11from Orange.utils.serverfiles import sizeformat as sizeof_fmt 
     12 
    613from OWWidget import * 
    7 from functools import partial 
    8 from datetime import datetime 
    9  
    10 import gzip, sys 
    11  
    12 def sizeof_fmt(num): 
    13     for x in ['bytes','KB','MB','GB','TB']: 
    14         if num < 1024.0: 
    15             return "%3.1f %s" % (num, x) if x <> 'bytes' else "%1.0f %s" % (num, x) 
    16         num /= 1024.0 
    17  
    18         
     14from OWConcurrent import * 
     15 
     16import OWGUIEx 
     17 
     18 
    1919class ItemProgressBar(QProgressBar): 
     20    """Progress Bar with and advance() slot. 
     21    """ 
    2022    @pyqtSignature("advance()") 
    2123    def advance(self): 
    2224        self.setValue(self.value() + 1) 
    23     
    24          
     25 
     26 
    2527class ProgressBarRedirect(QObject): 
    2628    def __init__(self, parent, redirect): 
     
    2830        self.redirect = redirect 
    2931        self._delay = False 
    30          
     32 
    3133    @pyqtSignature("advance()") 
    3234    def advance(self): 
    33         # delay OWBaseWidget.progressBarSet call, because it calls qApp.processEvents 
    34         #which can result in 'event queue climbing' and max. recursion error if GUI thread 
    35         #gets another advance signal before it finishes with this one 
     35        # delay OWBaseWidget.progressBarSet call, because it calls 
     36        # qApp.processEvents which can result in 'event queue climbing' 
     37        # and max. recursion error if GUI thread gets another advance 
     38        # signal before it finishes with this one 
    3639        if not self._delay: 
    3740            try: 
     
    4346            QTimer.singleShot(10, self.advance) 
    4447 
    45          
    46 from OWConcurrent import * 
    47          
     48_icons_dir = os.path.join(orngEnviron.canvasDir, "icons") 
     49 
     50 
     51def icon(name): 
     52    return QIcon(os.path.join(_icons_dir, name)) 
     53 
     54 
    4855class UpdateOptionsWidget(QWidget): 
    4956    def __init__(self, updateCallback, removeCallback, state, *args): 
     
    5562        layout.setContentsMargins(1, 1, 1, 1) 
    5663        self.updateButton = QToolButton(self) 
    57         self.updateButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "update.png"))) 
     64        self.updateButton.setIcon(icon("update.png")) 
    5865        self.updateButton.setToolTip("Download") 
    59 #        self.updateButton.setIconSize(QSize(10, 10)) 
     66 
    6067        self.removeButton = QToolButton(self) 
    61         self.removeButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "delete.png"))) 
     68        self.removeButton.setIcon(icon("delete.png")) 
    6269        self.removeButton.setToolTip("Remove from system") 
    63 #        self.removeButton.setIconSize(QSize(10, 10)) 
    64         self.connect(self.updateButton, SIGNAL("released()"), self.updateCallback) 
    65         self.connect(self.removeButton, SIGNAL("released()"), self.removeCallback) 
     70 
     71        self.connect(self.updateButton, SIGNAL("released()"), 
     72                     self.updateCallback) 
     73        self.connect(self.removeButton, SIGNAL("released()"), 
     74                     self.removeCallback) 
     75 
    6676        self.setMaximumHeight(30) 
    6777        layout.addWidget(self.updateButton) 
     
    7383        self.state = state 
    7484        if state == 0: 
    75             self.updateButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "update1.png"))) 
     85            self.updateButton.setIcon(icon("update1.png")) 
    7686            self.updateButton.setToolTip("Update") 
    7787            self.updateButton.setEnabled(False) 
    7888            self.removeButton.setEnabled(True) 
    7989        elif state == 1: 
    80             self.updateButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "update1.png"))) 
     90            self.updateButton.setIcon(icon("update1.png")) 
    8191            self.updateButton.setToolTip("Update") 
    8292            self.updateButton.setEnabled(True) 
    8393            self.removeButton.setEnabled(True) 
    8494        elif state == 2: 
    85             self.updateButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "update.png"))) 
     95            self.updateButton.setIcon(icon("update.png")) 
    8696            self.updateButton.setToolTip("Download") 
    8797            self.updateButton.setEnabled(True) 
    8898            self.removeButton.setEnabled(False) 
    8999        elif state == 3: 
    90             self.updateButton.setIcon(QIcon(os.path.join(orngEnviron.canvasDir, "icons", "update.png"))) 
     100            self.updateButton.setIcon(icon("update.png")) 
    91101            self.updateButton.setToolTip("") 
    92102            self.updateButton.setEnabled(False) 
     
    95105 
    96106class UpdateTreeWidgetItem(QTreeWidgetItem): 
    97     stateDict = {0:"up-to-date", 1:"new version available", 2:"not downloaded", 3:"obsolete"} 
    98     def __init__(self, master, treeWidget, domain, filename, infoLocal, infoServer, *args): 
     107    stateDict = {0: "up-to-date", 
     108                 1: "new version available", 
     109                 2: "not downloaded", 
     110                 3: "obsolete"} 
     111 
     112    def __init__(self, master, treeWidget, domain, filename, infoLocal, 
     113                 infoServer, *args): 
    99114        if not infoLocal: 
    100115            self.state = 2 
     
    102117            self.state = 3 
    103118        else: 
    104             dateServer = datetime.strptime(infoServer["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S") 
    105             dateLocal = datetime.strptime(infoLocal["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S") 
     119            dateServer = datetime.strptime( 
     120                infoServer["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S" 
     121            ) 
     122            dateLocal = datetime.strptime( 
     123                infoLocal["datetime"].split(".")[0], "%Y-%m-%d %H:%M:%S") 
    106124            self.state = 0 if dateLocal >= dateServer else 1 
     125 
    107126        title = infoServer["title"] if infoServer else (infoLocal["title"]) 
    108127        tags = infoServer["tags"] if infoServer else infoLocal["tags"] 
    109         specialTags = dict([tuple(tag.split(":")) for tag in tags if tag.startswith("#") and ":" in tag]) 
     128        specialTags = dict([tuple(tag.split(":")) 
     129                            for tag in tags 
     130                            if tag.startswith("#") and ":" in tag]) 
    110131        tags = ", ".join(tag for tag in tags if not tag.startswith("#")) 
    111132        self.size = infoServer["size"] if infoServer else infoLocal["size"] 
    112 #        if self.state == 2 or self.state == 1: 
    113 #            size = sizeof_fmt(float(self.size)) + (" (%s uncompressed)" % sizeof_fmt(float(specialTags["#uncompressed"])) if "#uncompressed" in specialTags else "") 
    114 #        else: 
    115 #            size = sizeof_fmt(float(specialTags.get("#uncompressed", self.size))) 
     133 
    116134        size = sizeof_fmt(float(self.size)) 
    117         state = self.stateDict[self.state] + (dateServer.strftime(" (%Y, %b, %d)") if self.state == 1 else "") 
     135        state = self.stateDict[self.state] 
     136        if self.state == 1: 
     137            state += dateServer.strftime(" (%Y, %b, %d)") 
     138 
    118139        QTreeWidgetItem.__init__(self, treeWidget, ["", title, size]) 
    119         self.updateWidget = UpdateOptionsWidget(self.StartDownload, self.Remove, self.state, treeWidget) 
     140        self.updateWidget = UpdateOptionsWidget( 
     141            self.StartDownload, self.Remove, self.state, treeWidget 
     142        ) 
     143 
    120144        self.treeWidget().setItemWidget(self, 0, self.updateWidget) 
    121145        self.updateWidget.show() 
     
    126150        self.domain = domain 
    127151        self.filename = filename 
    128 ##        for i in range(1, 5): 
    129 ##            self.setSizeHint(i, QSize(self.sizeHint(i).width(), self.sizeHint(0).height())) 
    130152        self.UpdateToolTip() 
    131153 
    132154    def UpdateToolTip(self): 
    133         state = {0:"local, updated", 1:"local, needs update", 2:"on server, download for local use", 3:"obsolete"} 
    134         tooltip = "State: %s\nTags: %s" % (state[self.state], ", ".join(self.tags)) 
     155        state = {0: "local, updated", 
     156                 1: "local, needs update", 
     157                 2: "on server, download for local use", 
     158                 3: "obsolete"} 
     159        tooltip = "State: %s\nTags: %s" % (state[self.state], 
     160                                           ", ".join(self.tags)) 
    135161        if self.state != 2: 
    136             tooltip += "\nFile: %s" % orngServerFiles.localpath(self.domain, self.filename) 
     162            tooltip += "\nFile: %s" % \ 
     163                        orngServerFiles.localpath(self.domain, self.filename) 
    137164        for i in range(1, 5): 
    138165            self.setToolTip(i, tooltip) 
    139          
     166 
    140167    def StartDownload(self): 
    141168        self.updateWidget.removeButton.setEnabled(False) 
    142169        self.updateWidget.updateButton.setEnabled(False) 
    143170        self.setData(2, Qt.DisplayRole, QVariant("")) 
    144         serverFiles = orngServerFiles.ServerFiles(access_code=self.master.accessCode if self.master.accessCode else None)  
    145          
     171        serverFiles = orngServerFiles.ServerFiles( 
     172            access_code=self.master.accessCode if self.master.accessCode 
     173            else None 
     174        ) 
     175 
    146176        pb = ItemProgressBar(self.treeWidget()) 
    147177        pb.setRange(0, 100) 
    148178        pb.setTextVisible(False) 
    149          
     179 
    150180        self.task = AsyncCall(threadPool=QThreadPool.globalInstance()) 
    151          
     181 
    152182        if not getattr(self.master, "_sum_progressBar", None): 
    153             self.master._sum_progressBar = OWGUI.ProgressBar(self.master,0) 
     183            self.master._sum_progressBar = OWGUI.ProgressBar(self.master, 0) 
    154184            self.master._sum_progressBar.in_progress = 0 
    155185        master_pb = self.master._sum_progressBar 
    156186        master_pb.iter += 100 
    157187        master_pb.in_progress += 1 
    158         self._progressBarRedirect = ProgressBarRedirect(QThread.currentThread(), master_pb) 
    159 #        QObject.connect(self.thread, SIGNAL("advance()"), lambda :(pb.setValue(pb.value()+1), master_pb.advance())) 
    160         QObject.connect(self.task, SIGNAL("advance()"), pb.advance, Qt.QueuedConnection) 
    161         QObject.connect(self.task, SIGNAL("advance()"), self._progressBarRedirect.advance, Qt.QueuedConnection) 
    162         QObject.connect(self.task, SIGNAL("finished(QString)"), self.EndDownload, Qt.QueuedConnection) 
     188        self._progressBarRedirect = \ 
     189            ProgressBarRedirect(QThread.currentThread(), master_pb) 
     190        QObject.connect(self.task, 
     191                        SIGNAL("advance()"), 
     192                        pb.advance, 
     193                        Qt.QueuedConnection) 
     194        QObject.connect(self.task, 
     195                        SIGNAL("advance()"), 
     196                        self._progressBarRedirect.advance, 
     197                        Qt.QueuedConnection) 
     198        QObject.connect(self.task, 
     199                        SIGNAL("finished(QString)"), 
     200                        self.EndDownload, 
     201                        Qt.QueuedConnection) 
    163202        self.treeWidget().setItemWidget(self, 2, pb) 
    164203        pb.show() 
    165          
    166         self.task.apply_async(orngServerFiles.download, args=(self.domain, self.filename, serverFiles), kwargs=dict(callback=self.task.emitAdvance)) 
     204 
     205        self.task.apply_async(orngServerFiles.download, 
     206                              args=(self.domain, self.filename, serverFiles), 
     207                              kwargs=dict(callback=self.task.emitAdvance)) 
    167208 
    168209    def EndDownload(self, exitCode=0): 
     
    171212            self.state = 0 
    172213            self.updateWidget.SetState(self.state) 
    173             self.setData(2, Qt.DisplayRole, QVariant(sizeof_fmt(float(self.size)))) 
     214            self.setData(2, Qt.DisplayRole, 
     215                         QVariant(sizeof_fmt(float(self.size)))) 
    174216            self.master.UpdateInfoLabel() 
    175217            self.UpdateToolTip() 
    176218        else: 
    177219            self.updateWidget.SetState(1) 
    178             self.setData(2, Qt.DisplayRole, QVariant("Error occured while downloading:" + str(exitCode))) 
    179              
     220            self.setData(2, Qt.DisplayRole, 
     221                         QVariant("Error occurred while downloading:" + 
     222                                  str(exitCode))) 
     223 
    180224        master_pb = self.master._sum_progressBar 
    181 #        print master_pb.in_progress 
     225 
    182226        if master_pb and master_pb.in_progress == 1: 
    183227            master_pb.finish() 
     
    185229        elif master_pb: 
    186230            master_pb.in_progress -= 1 
    187          
    188 #        self.thread, self._runnable = None, None 
    189              
     231 
    190232    def Remove(self): 
    191233        orngServerFiles.remove(self.domain, self.filename) 
     
    196238 
    197239    def __contains__(self, item): 
    198         return any(item.lower() in tag.lower() for tag in self.tags + [self.title]) 
    199      
     240        return any(item.lower() in tag.lower() 
     241                   for tag in self.tags + [self.title]) 
     242 
    200243    def __lt__(self, other): 
    201         return getattr(self, "title", "") < getattr(other, "title", "")  
     244        return getattr(self, "title", "") < getattr(other, "title", "") 
     245 
    202246 
    203247class UpdateItemDelegate(QItemDelegate): 
     
    208252        widget = parent.itemWidget(item, 0) 
    209253        if widget: 
    210             size = QSize(size.width(), widget.sizeHint().height()/2) 
     254            size = QSize(size.width(), widget.sizeHint().height() / 2) 
    211255        return size 
    212      
     256 
     257 
    213258def retrieveFilesList(serverFiles, domains=None, advance=lambda: None): 
     259    """ 
     260    Retrieve and return serverfiles.allinfo for all domains. 
     261    """ 
    214262    domains = serverFiles.listdomains() if domains is None else domains 
    215263    advance() 
     
    217265    advance() 
    218266    return serverInfo 
    219      
     267 
     268 
    220269class OWDatabasesUpdate(OWWidget): 
    221     def __init__(self, parent=None, signalManager=None, name="Databases update", wantCloseButton=False, searchString="", showAll=True, domains=None, accessCode=""): 
     270    def __init__(self, parent=None, signalManager=None, 
     271                 name="Databases update", wantCloseButton=False, 
     272                 searchString="", showAll=True, domains=None, 
     273                 accessCode=""): 
    222274        OWWidget.__init__(self, parent, signalManager, name) 
    223275        self.searchString = searchString 
     
    227279        self.serverFiles = orngServerFiles.ServerFiles() 
    228280        box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") 
    229         import OWGUIEx 
    230         self.lineEditFilter = OWGUIEx.lineEditHint(box, self, "searchString", "Filter", caseSensitive=False, delimiters=" ", matchAnywhere=True, listUpdateCallback=self.SearchUpdate, callbackOnType=True, callback=self.SearchUpdate) 
     281 
     282        self.lineEditFilter = \ 
     283            OWGUIEx.lineEditHint(box, self, "searchString", "Filter", 
     284                                 caseSensitive=False, 
     285                                 delimiters=" ", 
     286                                 matchAnywhere=True, 
     287                                 listUpdateCallback=self.SearchUpdate, 
     288                                 callbackOnType=True, 
     289                                 callback=self.SearchUpdate) 
    231290 
    232291        box = OWGUI.widgetBox(self.mainArea, "Files") 
     
    237296        self.filesView.setSortingEnabled(True) 
    238297        self.filesView.setItemDelegate(UpdateItemDelegate(self.filesView)) 
    239         self.connect(self.filesView.model(), SIGNAL("layoutChanged()"), self.SearchUpdate) 
     298        self.connect(self.filesView.model(), 
     299                     SIGNAL("layoutChanged()"), 
     300                     self.SearchUpdate) 
    240301        box.layout().addWidget(self.filesView) 
    241302 
    242303        box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") 
    243         OWGUI.button(box, self, "Update all local files", callback=self.UpdateAll, tooltip="Update all updatable files") 
    244         OWGUI.button(box, self, "Download filtered", callback=self.DownloadFiltered, tooltip="Download all filtered files shown") 
     304        OWGUI.button(box, self, "Update all local files", 
     305                     callback=self.UpdateAll, 
     306                     tooltip="Update all updatable files") 
     307        OWGUI.button(box, self, "Download filtered", 
     308                     callback=self.DownloadFiltered, 
     309                     tooltip="Download all filtered files shown") 
    245310        OWGUI.rubber(box) 
    246         OWGUI.lineEdit(box, self, "accessCode", "Access Code", orientation="horizontal", callback=self.RetrieveFilesList) 
    247         self.retryButton = OWGUI.button(box, self, "Retry", callback=self.RetrieveFilesList) 
     311        OWGUI.lineEdit(box, self, "accessCode", "Access Code", 
     312                       orientation="horizontal", 
     313                       callback=self.RetrieveFilesList) 
     314        self.retryButton = OWGUI.button(box, self, "Retry", 
     315                                        callback=self.RetrieveFilesList) 
    248316        self.retryButton.hide() 
    249317        box = OWGUI.widgetBox(self.mainArea, orientation="horizontal") 
    250318        OWGUI.rubber(box) 
    251319        if wantCloseButton: 
    252             OWGUI.button(box, self, "Close", callback=self.accept, tooltip="Close") 
    253  
    254 ##        statusBar = QStatusBar() 
     320            OWGUI.button(box, self, "Close", 
     321                         callback=self.accept, 
     322                         tooltip="Close") 
     323 
    255324        self.infoLabel = QLabel() 
    256325        self.infoLabel.setAlignment(Qt.AlignCenter) 
    257 ##        statusBar.addWidget(self.infoLabel) 
    258 ##        self.mainArea.layout().addWidget(statusBar) 
     326 
    259327        self.mainArea.layout().addWidget(self.infoLabel) 
    260328        self.infoLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) 
     
    262330        self.updateItems = [] 
    263331        self.allTags = [] 
    264          
     332 
    265333        self.resize(800, 600) 
    266          
    267 #        QTimer.singleShot(50, self.UpdateFilesList) 
     334 
    268335        QTimer.singleShot(50, self.RetrieveFilesList) 
    269          
     336 
    270337    def RetrieveFilesList(self): 
    271338        self.serverFiles = orngServerFiles.ServerFiles(access_code=self.accessCode) 
    272339        self.pb = ProgressBar(self, 3) 
    273         self.async_retrieve = createTask(retrieveFilesList, (self.serverFiles, self.domains, self.pb.advance), onResult=self.SetFilesList, onError=self.HandleError) 
    274          
     340        self.async_retrieve = createTask(retrieveFilesList, 
     341                                         (self.serverFiles, self.domains, 
     342                                          self.pb.advance), 
     343                                         onResult=self.SetFilesList, 
     344                                         onError=self.HandleError) 
     345 
    275346        self.setEnabled(False) 
    276          
    277          
     347 
    278348    def SetFilesList(self, serverInfo): 
    279349        self.setEnabled(True) 
    280350        domains = serverInfo.keys() or orngServerFiles.listdomains() 
    281         localInfo = dict([(dom, orngServerFiles.allinfo(dom)) for dom in domains]) 
     351        localInfo = dict([(dom, orngServerFiles.allinfo(dom)) 
     352                          for dom in domains]) 
    282353        items = [] 
    283          
     354 
    284355        self.allTags = set() 
    285356        allTitles = set() 
    286357        self.updateItems = [] 
    287          
    288         for i, domain in enumerate(set(domains) - set(["test", "demo"])): 
    289             local = localInfo.get(domain, {})  
    290             server =  serverInfo.get(domain, {}) 
     358 
     359        for domain in set(domains) - set(["test", "demo"]): 
     360            local = localInfo.get(domain, {}) 
     361            server = serverInfo.get(domain, {}) 
    291362            files = sorted(set(server.keys() + local.keys())) 
    292             for j, file in enumerate(files): 
    293                 infoServer = server.get(file, None) 
    294                 infoLocal = local.get(file, None) 
    295                  
    296                 items.append((self.filesView, domain, file, infoLocal, infoServer)) 
    297                  
     363            for filename in files: 
     364                infoServer = server.get(filename, None) 
     365                infoLocal = local.get(filename, None) 
     366 
     367                items.append((self.filesView, domain, filename, infoLocal, 
     368                              infoServer)) 
     369 
    298370                displayInfo = infoServer if infoServer else infoLocal 
    299371                self.allTags.update(displayInfo["tags"]) 
    300372                allTitles.update(displayInfo["title"].split()) 
    301          
    302         for i, item in enumerate(items): 
     373 
     374        for item in items: 
    303375            self.updateItems.append(UpdateTreeWidgetItem(self, *item)) 
    304376        self.pb.advance() 
     
    306378        self.filesView.resizeColumnToContents(1) 
    307379        self.filesView.resizeColumnToContents(2) 
    308         self.lineEditFilter.setItems([hint for hint in sorted(self.allTags) if not hint.startswith("#")]) 
     380        self.lineEditFilter.setItems([hint for hint in sorted(self.allTags) 
     381                                      if not hint.startswith("#")]) 
    309382        self.SearchUpdate() 
    310383        self.UpdateInfoLabel() 
    311384        self.pb.finish() 
    312          
     385 
    313386    def HandleError(self, (exc_type, exc_value, tb)): 
    314387        if exc_type >= IOError: 
    315             self.error(0, "Could not connect to server! Press the Retry button to try again.") 
     388            self.error(0, 
     389                       "Could not connect to server! Press the Retry " 
     390                       "button to try again.") 
    316391            self.SetFilesList({}) 
    317392        else: 
     
    319394            self.pb.finish() 
    320395            self.setEnabled(True) 
    321              
    322          
    323 #    def UpdateFilesList(self): 
    324 #        self.retryButton.hide() 
    325 ##        self.progressBarInit() 
    326 #        pb = OWGUI.ProgressBar(self, 3) 
    327 #        self.filesView.clear() 
    328 ##        self.tagsWidget.clear() 
    329 #        self.allTags = set() 
    330 #        allTitles = set() 
    331 #        self.updateItems = [] 
    332 #        if self.accessCode: 
    333 #            self.serverFiles = orngServerFiles.ServerFiles(access_code=self.accessCode) 
    334 #             
    335 #        self.error(0)     
    336 #        try: 
    337 #            domains = self.serverFiles.listdomains() if self.domains is None else self.domains 
    338 #            pb.advance() 
    339 #            serverInfo = dict([(dom, self.serverFiles.allinfo(dom)) for dom in domains]) 
    340 #            pb.advance() 
    341 #        except IOError, ex: 
    342 #            self.error(0, "Could not connect to server! Press the Retry button to try again.") 
    343 #            self.retryButton.show() 
    344 #            domains =orngServerFiles.listdomains() if self.domains is None else self.domains 
    345 #            pb.advance() 
    346 #            serverInfo = {} 
    347 #            pb.advance() 
    348 #             
    349 #        localInfo = dict([(dom, orngServerFiles.allinfo(dom)) for dom in domains]) 
    350 #        items = [] 
    351 #         
    352 #        for i, domain in enumerate(set(domains) - set(["test", "demo"])): 
    353 #            local = localInfo.get(domain, {}) #orngServerFiles.listfiles(domain) or [] 
    354 ##                files = self.serverFiles.listfiles(domain) 
    355 #            server =  serverInfo.get(domain, {}) #self.serverFiles.allinfo(domain) 
    356 #            files = sorted(set(server.keys() + local.keys())) 
    357 #            for j, file in enumerate(files): 
    358 #                infoServer = server.get(file, None) 
    359 #                infoLocal = local.get(file, None) 
    360 #                 
    361 #                items.append((self.filesView, domain, file, infoLocal, infoServer)) 
    362 #                 
    363 #                displayInfo = infoServer if infoServer else infoLocal 
    364 #                self.allTags.update(displayInfo["tags"]) 
    365 #                allTitles.update(displayInfo["title"].split()) 
    366 # 
    367 ##                    self.progressBarSet(100.0 * i / len(domains) + 100.0 * j / (len(files) * len(domains))) 
    368 #         
    369 #        for i, item in enumerate(items): 
    370 #            self.updateItems.append(UpdateTreeWidgetItem(self, *item)) 
    371 #        pb.advance() 
    372 #        self.filesView.resizeColumnToContents(0) 
    373 #        self.filesView.resizeColumnToContents(1) 
    374 #        self.filesView.resizeColumnToContents(2) 
    375 #        self.lineEditFilter.setItems([hint for hint in sorted(self.allTags) if not hint.startswith("#")]) 
    376 #        self.SearchUpdate() 
    377 #        self.UpdateInfoLabel() 
    378 # 
    379 #        self.progressBarFinished() 
    380396 
    381397    def UpdateInfoLabel(self): 
    382398        local = [item for item in self.updateItems if item.state != 2] 
    383399        onServer = [item for item in self.updateItems] 
     400        size = sum(float(item.specialTags.get("#uncompressed", item.size)) 
     401                   for item in local) 
     402        sizeOnServer = sum(float(item.size) for item in self.updateItems) 
     403 
    384404        if self.showAll: 
    385             self.infoLabel.setText("%i items, %s (data on server: %i items, %s)" % (len(local), sizeof_fmt(sum(float(item.specialTags.get("#uncompressed", item.size)) for item in local)), 
    386                                                                             len(onServer), sizeof_fmt(sum(float(item.size) for item in self.updateItems)))) 
     405 
     406            text = ("%i items, %s (data on server: %i items, %s)" % 
     407                    (len(local), 
     408                     sizeof_fmt(size), 
     409                     len(onServer), 
     410                     sizeof_fmt(sizeOnServer))) 
    387411        else: 
    388             self.infoLabel.setText("%i items, %s" % (len(local), sizeof_fmt(sum(float(item.specialTags.get("#uncompressed", item.size)) for item in local)))) 
    389          
     412            text = "%i items, %s" % (len(local), sizeof_fmt(size)) 
     413 
     414        self.infoLabel.setText(text) 
     415 
    390416    def UpdateAll(self): 
    391417        for item in self.updateItems: 
    392418            if item.state == 1: 
    393419                item.StartDownload() 
    394                  
     420 
    395421    def DownloadFiltered(self): 
    396422        for item in self.updateItems: 
     
    399425 
    400426    def SearchUpdate(self, searchString=None): 
    401         strings = unicode(self.lineEditFilter.text()).split() #self.searchString.split() if searchString is None else unicode(searchString).split() 
     427        strings = unicode(self.lineEditFilter.text()).split() 
    402428        tags = set() 
    403429        for item in self.updateItems: 
     
    406432            if not hide: 
    407433                tags.update(item.tags) 
    408 #        self.lineEditFilter.setItems(sorted(tags, key=lambda tag: chr(1) + tag.lower() if strings and tag.lower().startswith(strings[-1].lower()) else tag.lower())) 
    409 #        self.tagsWidget.setText(", ".join(sorted(tags, key=lambda tag: chr(1) + tag.lower() if strings and tag.lower().startswith(strings[-1].lower()) else tag.lower()))) 
    410          
     434 
     435 
    411436if __name__ == "__main__": 
    412437    app = QApplication(sys.argv) 
Note: See TracChangeset for help on using the changeset viewer.