Changeset 9127:d8a84fdd190c in orange


Ignore:
Timestamp:
10/20/11 15:42:43 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
af64650d62133831986bc229e757b587545fc3ce
Message:

Fixed a mismatch in the output examples order and appended cluster labels.
Fixed signal and event handling for DendrogramScene, DendrogramWidget and DendrogramItem.

Location:
orange/OrangeWidgets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWClustering.py

    r8042 r9127  
    154154        self.setFlag(QGraphicsItem.ItemIsSelectable, True) 
    155155        self.setAcceptHoverEvents(True) 
     156        self.setAcceptedMouseButtons(Qt.LeftButton) 
    156157        self.orientation = orientation 
    157158        self.set_cluster(cluster) 
     
    282283        self._path = path 
    283284     
    284     def itemChange(self, change, value): 
    285         if change == QGraphicsItem.ItemSelectedHasChanged:  
    286             widget = self.parentWidget() 
    287             if isinstance(widget, DendrogramWidget): 
    288                 # Notify the DendrogramWidget of the change in the selection 
    289                 return QVariant(widget.item_selection(self, value.toBool())) 
    290         return value 
     285    def mousePressEvent(self, event): 
     286        widget = self.parentWidget() 
     287        if isinstance(widget, DendrogramWidget): 
     288            if event.modifiers() & Qt.ControlModifier: 
     289                widget.item_selection(self, not self.isSelected())  
     290            else: 
     291                widget.set_selected_items([self]) 
     292        else: 
     293            return QGraphicsRectItem.mousePressEvent(self, event) 
     294         
     295    def mouseMoveEvent(self, *args, **kwargs): 
     296        pass 
     297     
     298    def mouseReleaseEvent(self, *args, **kwargs): 
     299        pass 
     300     
     301    def mouseDoubleClickEvent(self, *args, **kwargs): 
     302        pass 
    291303             
    292304         
     
    636648            # remove that selection 
    637649            super_selection = self._selected_super_item(item) 
     650            print super_selection 
    638651            if super_selection: 
    639                 self._remove_selection(super_selection) 
     652                self._remove_selection(super_selection, emit_changed=False) 
    640653            # Remove selections this selection will override. 
    641654            sub_selections = self._selected_sub_items(item) 
     655            print sub_selections 
    642656            for sub in sub_selections: 
    643                 self._remove_selection(sub) 
     657                self._remove_selection(sub, emit_changed=False) 
    644658             
    645659            if select_state == True: 
     
    792806             
    793807    def mousePressEvent(self, event): 
    794         pass  
     808        pass 
    795809     
    796810    def mouseMoveEvent(self, event): 
     
    807821         
    808822    def mouseReleaseEvent(self, event): 
    809         pass 
     823        widget = self.parentWidget() 
     824        dpos = event.pos() - event.lastPos() 
     825        line = self.line() 
     826        if widget.orientation == Qt.Vertical: 
     827            line = line.translated(dpos.x(), 0) 
     828        else: 
     829            line = line.translated(0, dpos.y()) 
     830        self.setLine(line) 
     831        height = widget.height_at(event.pos()) 
     832        self.cutoff_selection(height) 
    810833     
    811834    def mouseDoubleClickEvent(self, event): 
  • orange/OrangeWidgets/Unsupervised/OWHierarchicalClustering.py

    r8042 r9127  
    188188        self.dendrogramView = DendrogramView(self.dendrogram, self.mainArea) 
    189189         
    190         self.connect(self.dendrogram, SIGNAL("selectionChanged()"), self.on_selection_change) 
     190        self.connect(self.dendrogram, SIGNAL("clusterSelectionChanged()"), self.on_selection_change) 
    191191        self.connect(self.dendrogram, SIGNAL("sceneRectChanged(QRectF)"), scale.scene_rect_update) 
    192192        self.connect(self.dendrogram, SIGNAL("dendrogramGeometryChanged(QRectF)"), self.on_dendrogram_geometry_change) 
     
    196196        self.connect(self.dendrogramView, SIGNAL("transformChanged(QTransform)"), self.headerView.setTransform) 
    197197        self.connect(self.dendrogramView, SIGNAL("transformChanged(QTransform)"), self.footerView.setTransform) 
    198      
     198         
    199199        self.mainArea.layout().addWidget(self.headerView) 
    200200        self.mainArea.layout().addWidget(self.dendrogramView) 
     
    447447        self.selectedExamples = None 
    448448        selection = self.selected_clusters 
     449        selection = sorted(selection, key=lambda c: c.first) 
    449450        maps = [list(self.root_cluster.mapping[c.first: c.last]) for c in selection] 
    450451         
    451452        from operator import add 
    452         selected_indices = sorted(reduce(add, maps, [])) 
     453        selected_indices = reduce(add, maps, []) 
    453454        unselected_indices = sorted(set(self.root_cluster.mapping) - set(selected_indices)) 
    454455         
     
    597598                     lambda rect: self.emit(SIGNAL("dendrogramGeometryChanged(QRectF)"), 
    598599                                            rect)) 
     600        self.connect(widget, SIGNAL("selectionChanged()"), 
     601                     lambda: self.emit(SIGNAL("clusterSelectionChanged()")) 
     602                     ) 
    599603         
    600604        widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 
Note: See TracChangeset for help on using the changeset viewer.