Changeset 426:465ac4f60426 in orange-bioinformatics


Ignore:
Timestamp:
07/17/08 13:43:32 (6 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
38fdf5c6d549c77c8b497f8d925aca578d74f603
Message:

-fixed image widget layout problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • widgets/OWMoleculeVisualizer.py

    r398 r426  
    55<priority>2015</priority> 
    66""" 
     7 
     8from __future__ import with_statement 
    79 
    810import orange 
     
    6466    def syncfunc(func): 
    6567        def f(*args, **kw): 
    66             lock.acquire() 
    67             ret = func(*args, **kw) 
    68             lock.release() 
     68            with lock: 
     69                ret = func(*args, **kw) 
    6970            return ret 
    7071        return f 
     
    143144                return inst 
    144145            except Exception, ex: 
    145                 print "Image cache loading failed", ex 
     146                print "Image cache loading failed", filename, ex 
     147                from traceback import print_exception 
     148                print_exception(*sys.exc_info()) 
    146149                inst = cls(*args, **kw) 
     150                print inst 
    147151                inst.cachefilename = filename 
    148152                return inst 
     
    202206        self.selected=False 
    203207        self.label=QLabel() 
     208        self.label.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) 
    204209        self.image=MolImage(master, self, context) 
     210        self.image.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 
    205211        self.label.setText(context.title) 
    206212        self.label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) 
     
    210216        layout.addWidget(self.image) 
    211217        self.setLayout(layout) 
     218        self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 
    212219        self.show() 
    213220 
     
    297304         
    298305    def resizeEvent(self, event): 
     306        print "in resizeEvent" 
    299307        QScrollArea.resizeEvent(self, event) 
    300308        size=event.size() 
     
    304312        if numColumns!=oldNumColumns: 
    305313            self.master.numColumns=numColumns 
    306             self.master.redrawImages(useCached=not self.master.overRideCache) 
     314            print "in resizeEvent calling redrawImages" 
     315##            self.master.redrawImages(useCached=not self.master.overRideCache) 
     316            self.master.rearrangeLayout() 
    307317##        print self.maximumSize().height(), self.viewport().maximumSize().height() 
    308318         
     
    392402##        self.gridLayout.setAutoAdd(False) 
    393403        self.listBox=QListWidget(spliter) 
    394         self.connect(self.listBox, SIGNAL("highlighted(int)"), self.fragmentSelection) 
     404        self.connect(self.listBox, SIGNAL("currentRowChanged(int)"), self.fragmentSelection) 
    395405##        self.scrollArea.setFocusPolicy(QWidget.StrongFocus) 
    396406##        self.listBox.setFocusPolicy(QWidget.NoFocus) 
     
    588598         
    589599    def fragmentSelection(self, index): 
     600        if index == -1: 
     601            index = 0 
    590602        self.selectedFragment=self.fragmentSmiles[index] 
    591603        self.selectMarkedMoleculesButton.setEnabled(bool(self.selectedFragment)) 
     
    595607         
    596608    def renderImages(self,useCached=False): 
    597         def fixNumColumns(numItems, numColumns): 
    598             if (self.imageSize+4)*(numItems/numColumns+1)>30000: 
    599                 return numItems/(30000/(self.imageSize+4)) 
    600             else: 
    601                 return numColumns 
     609##        def fixNumColumns(numItems, numColumns): 
     610##            if (self.imageSize+4)*(numItems/numColumns+1)>30000: 
     611##                return numItems/(30000/(self.imageSize+4)) 
     612##            else: 
     613##                return numColumns 
    602614         
    603615        self.numColumns=self.scrollArea.width()/(self.imageSize+4) or 1 
     616        self.gridLayout = QGridLayout() 
     617        self.scrollArea.takeWidget() 
     618        self.molWidget = QWidget() 
     619        self.scrollArea.setWidget(self.molWidget) 
     620        self.molWidget.setLayout(self.gridLayout) 
    604621        self.imageWidgets=[] 
    605622        self.imageCache.newEpoch() 
     
    607624        self.fromCacheCount=0 
    608625        if self.showFragments and self.fragmentSmiles: 
    609             correctedNumColumns=fixNumColumns(len(self.fragmentSmiles[1:]), self.numColumns) 
     626            correctedNumColumns=self.numColumns #fixNumColumns(len(self.fragmentSmiles[1:]), self.numColumns) 
    610627            self.progressBarInit() 
    611628            for i,fragment in enumerate(self.fragmentSmiles[1:]): 
     
    628645                    return 
    629646            molSmiles=[(str(e[sAttr]), e) for e in self.molData if not e[sAttr].isSpecial()] 
    630             correctedNumColumns=fixNumColumns(len(molSmiles), self.numColumns) 
     647            correctedNumColumns=self.numColumns #fixNumColumns(len(molSmiles), self.numColumns) 
    631648            self.progressBarInit() 
    632649            if self.colorFragments and self.selectedFragment: 
     
    649666        #print "done drawing" 
    650667        self.overRideCache=False 
     668##        import sip 
     669##        sip.delete(self.molWidget.layout()) 
     670##        self.molWidget.setLayout(self.gridLayout) 
     671##        self.molWidget.layout().activate() 
    651672        self.molWidget.setMinimumSize(self.gridLayout.sizeHint()) 
    652673        self.molWidget.show() 
     
    657678    def destroyImageWidgets(self): 
    658679        for w in self.imageWidgets: 
     680            w.hide() 
    659681            self.gridLayout.removeWidget(w) 
    660682        self.imageWidgets=[] 
     683 
     684    def rearrangeLayout(self): 
     685        self.numColumns=self.scrollArea.width()/(self.imageSize+4) or 1 
     686        self.molWidget = QWidget() 
     687        self.gridLayout = QGridLayout() 
     688        self.molWidget.setLayout(self.gridLayout) 
     689        for i, w in enumerate(self.imageWidgets): 
     690            self.gridLayout.addWidget(w, i/self.numColumns, i%self.numColumns) 
     691        self.scrollArea.takeWidget() 
     692        self.scrollArea.setWidget(self.molWidget) 
     693        self.molWidget.setMinimumSize(self.gridLayout.sizeHint()) 
     694        self.molWidget.show() 
    661695             
    662696    def showImages(self, useCached=False): 
Note: See TracChangeset for help on using the changeset viewer.