Changeset 8715:e92b1353132e in orange


Ignore:
Timestamp:
08/16/11 08:01:42 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
1cb6baaa043c73bbccf0cac588336685096e6d63
Message:

Finally make OWDistributionsQt work

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Visualize Qt/OWDistributionsQt.py

    r8710 r8715  
    2727        OWCurve.__init__(self) 
    2828        self._item = QGraphicsPathItem(self) 
    29         self._currently_updating = False 
    3029        self.set_style(OWCurve.Lines) 
     30        self.set_point_size(7) 
    3131         
    3232    def update_properties(self): 
    33         if self.style() != OWCurve.NoCurve: 
    34             self.set_points([]) 
    35          
    36         self._item.setVisible(self.style() != OWCurve.NoCurve) 
    37          
    38         if self.style() == OWCurve.Lines: 
    39             self._item.setPath(self.continuous_path()) 
    40         elif self.style() == OWCurve.NoCurve: 
    41             self.update_number_of_points() 
    42             self.update_point_coordinates() 
    43         elif self.style() == self.DistributionCurve: 
     33        should_be_cont = (self.style() == OWCurve.Lines) 
     34        if self.is_continuous() != should_be_cont: 
     35            self.set_continuous(should_be_cont) 
     36            if self.auto_update(): 
     37                return 
     38                 
     39        OWCurve.update_properties(self) 
     40     
     41        if self.style() == self.DistributionCurve: 
    4442            d = self.data() 
    4543            n = len(d)/3 
     
    5856                p.lineTo(pxr, py3) 
    5957            self._item.setPath(self.graph_transform().map(p)) 
    60          
     58            self._item.setPen(self.pen()) 
     59            self._item.show() 
     60        else: 
     61            self._item.hide() 
     62        self.set_updated(OWCurve.UpdateAll) 
     63 
    6164 
    6265class OWDistributionGraphQt(OWPlot): 
     
    9396        curve.setVisible(visible) 
    9497        curve.set_axes(xAxis, yAxis) 
     98        curve.set_color(self.color(QPalette.Text)) 
    9599        return OWPlot.add_custom_curve(self, curve, enableLegend=0) 
    96100 
     
    239243        cn=0 
    240244        for key in keys: 
    241             ckey = PolygonCurve(pen=QPen(Qt.black), brush=QBrush(Qt.gray)) 
     245            ckey = PolygonCurve(pen=self.color(QPalette.Base), brush=QBrush(Qt.gray)) 
    242246            ckey.attach(self) 
    243247            if self.variableContinuous: 
     
    257261        if self.dataHasClass and not self.dataHasDiscreteClass and self.showContinuousClassGraph: 
    258262            self.enableYRaxis(1) 
    259             self.setAxisAutoScale(yRight) 
     263#            self.setAxisAutoScale(yRight) 
    260264            self.setYRaxisTitle(str(self.data.domain.classVar.name)) 
    261265            if self.variableContinuous: 
     
    271275            key = self.addCurve(xBottom, yRight) 
    272276            key.setData([a[0] for a in XY], [a[1] for a in XY]) 
    273             if self.variableContinuous: 
    274                 key.setPen(QPen(Qt.black)) 
    275             else: 
    276                 key.setColor(Qt.black) 
     277            key.set_color(self.color(QPalette.Text)) 
     278            if not self.variableContinuous: 
    277279                key.set_symbol(OWPoint.Diamond) 
    278                 key.setPointSize(7) 
     280                key.set_point_size(7) 
    279281        else: 
    280282            self.enableYRaxis(0) 
     
    368370                    lps.append(ps[self.targetValue] - cis[self.targetValue]) 
    369371                else: 
     372                    ## We make 3x as many point in both cases.  
     373                    ## This way animations look better when switching the ConfidenceIntervals on and off 
     374                    xs.extend([cn] * 3) 
    370375                    if self.showConfidenceIntervals: 
    371                         xs.append(cn) 
    372376                        mps.append(ps[self.targetValue] + cis[self.targetValue]) 
    373  
    374                     xs.append(cn) 
    375                     mps.append(ps[self.targetValue] + 0.0) 
    376  
    377                     if self.showConfidenceIntervals: 
    378                         xs.append(cn) 
     377                        mps.append(ps[self.targetValue] + 0.0) 
    379378                        mps.append(ps[self.targetValue] - cis[self.targetValue]) 
     379                    else: 
     380                        mps.extend([ps[self.targetValue]] * 3) 
    380381                cn += 1.0 
    381382 
     
    398399                    self.probCurveKey.set_style(distribErrorBarCurve.DistributionCurve) 
    399400                else: 
    400                     self.probCurveKey.set_style(OWCurve.Dots) 
     401                    self.probCurveKey.set_style(OWCurve.NoCurve) 
    401402        else: 
    402403            self.enableYRaxis(0) 
     
    447448        self.graph = OWDistributionGraphQt(self, self.mainArea) 
    448449        self.mainArea.layout().addWidget(self.graph) 
    449         self.graph.setYRlabels(None) 
    450450        self.graph.setAxisScale(yRight, 0.0, 1.0, 0.1) 
    451451        self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) 
  • source/orangeqt/curve.cpp

    r8710 r8715  
    6363Curve::~Curve() 
    6464{ 
    65     cancelAllUpdates(); 
    66 } 
    67  
    68 void Curve::updateNumberOfItems() 
    69 { 
    70   cancelAllUpdates(); 
     65    cancel_all_updates(); 
     66} 
     67 
     68void Curve::update_number_of_items() 
     69{ 
     70  cancel_all_updates(); 
    7171  if (m_continuous || (m_data.size() == m_pointItems.size())) 
    7272  { 
     
    8080void Curve::update_properties() 
    8181{ 
    82   cancelAllUpdates(); 
    83   set_continuous(m_style != Curve::NoCurve); 
    84    
     82  cancel_all_updates(); 
     83     
     84  if (m_style < UserCurve && m_continuous != (m_style != Curve::NoCurve)) 
     85  { 
     86      m_continuous = (m_style != Curve::NoCurve); 
     87      m_needsUpdate |= UpdateContinuous; 
     88  } 
     89     
    8590  if (m_needsUpdate & UpdateContinuous) 
    8691  { 
     
    9196  { 
    9297    QPen p = m_pen; 
    93     p.setWidthF(m_pen.widthF()/m_zoom_transform.determinant()); 
     98    p.setCosmetic(true); 
    9499    m_lineItem->setPen(p); 
    95100    m_lineItem->setPath(continuous_path()); 
     
    97102  }  
    98103   
    99   int n = m_data.size(); 
    100   if (m_pointItems.size() != n) 
    101   { 
    102     updateNumberOfItems(); 
    103   } 
    104    
    105   Q_ASSERT(m_pointItems.size() == n); 
    106    
     104  if (m_pointItems.size() != m_data.size()) 
     105  { 
     106    update_number_of_items(); 
     107  } 
    107108   
    108109  // Move, resize, reshape and/or recolor the items 
     
    271272{ 
    272273    m_style = style; 
    273     m_needsUpdate |= UpdateSymbol; 
     274    m_needsUpdate |= UpdateAll; 
    274275    checkForUpdate(); 
    275276} 
     
    298299void Curve::changeContinuous() 
    299300{ 
    300   cancelAllUpdates(); 
     301  cancel_all_updates(); 
    301302  if (m_continuous) 
    302303  { 
     
    333334} 
    334335 
    335 void Curve::cancelAllUpdates() 
     336void Curve::cancel_all_updates() 
    336337{ 
    337338    QMap<UpdateFlag, QFuture< void > >::iterator it = m_currentUpdate.begin(); 
     
    352353    } 
    353354    m_currentUpdate.clear(); 
    354     m_coords_watcher.future().cancel(); 
    355     m_pos_watcher.future().cancel(); 
     355     
     356    m_coords_watcher.blockSignals(true); 
     357    m_coords_watcher.cancel(); 
    356358    m_coords_watcher.waitForFinished(); 
     359    m_coords_watcher.blockSignals(false); 
     360     
     361    m_pos_watcher.blockSignals(true); 
     362    m_pos_watcher.cancel(); 
    357363    m_pos_watcher.waitForFinished(); 
     364    m_pos_watcher.blockSignals(false); 
    358365} 
    359366 
     
    395402void Curve::update_point_coordinates() 
    396403{ 
    397     if (m_coords_watcher.future().isRunning()) 
    398     { 
    399         m_coords_watcher.future().cancel(); 
    400         m_coords_watcher.future().waitForFinished(); 
     404    if (m_coords_watcher.isRunning()) 
     405    { 
     406        m_coords_watcher.blockSignals(true); 
     407        m_coords_watcher.cancel(); 
     408        m_coords_watcher.waitForFinished(); 
     409        m_coords_watcher.blockSignals(false); 
    401410    } 
    402411    m_coords_watcher.setFuture(QtConcurrent::run(this, &Curve::update_point_properties_threaded<DataPoint>, QByteArray("coordinates"), m_data)); 
     
    405414void Curve::update_point_positions() 
    406415{ 
    407     if (m_pos_watcher.future().isRunning()) 
    408     { 
    409         m_pos_watcher.future().cancel(); 
    410         m_pos_watcher.future().waitForFinished(); 
     416    if (m_pos_watcher.isRunning()) 
     417    { 
     418        m_pos_watcher.blockSignals(true); 
     419        m_pos_watcher.cancel(); 
     420        m_pos_watcher.waitForFinished(); 
     421        m_pos_watcher.blockSignals(false); 
    411422    } 
    412423    if (m_pointItems.isEmpty()) 
  • source/orangeqt/curve.h

    r8710 r8715  
    212212  Curve::UpdateFlags needs_update(); 
    213213  void set_updated(Curve::UpdateFlags flags); 
    214   void cancelAllUpdates(); 
     214   
     215  void cancel_all_updates(); 
     216  void update_number_of_items(); 
    215217   
    216218  void checkForUpdate(); 
    217   void updateNumberOfItems(); 
    218219  void changeContinuous(); 
    219220   
  • source/orangeqt/curve.sip

    r8710 r8715  
    9898  void set_points(const QList<Point*>& points); 
    9999  QList<Point*> points(); 
    100  
    101   void update_point_positions(); 
    102100   
    103101protected: 
    104102  void set_updated(Curve::UpdateFlags flags); 
    105103  Curve::UpdateFlags needs_update(); 
    106    
     104 
     105  void cancel_all_updates(); 
     106  void update_number_of_items(); 
     107 
     108public slots: 
     109    void update_point_coordinates(); 
     110    void update_point_positions(); 
     111 
    107112}; 
  • source/orangeqt/multicurve.cpp

    r8694 r8715  
    3434void MultiCurve::set_point_colors(const QList< QColor >& colors) 
    3535{ 
    36     updateNumberOfItems(); 
     36    update_number_of_items(); 
    3737    update_point_properties("color", colors); 
    3838} 
     
    4040void MultiCurve::set_point_labels(const QStringList& labels) 
    4141{ 
    42     updateNumberOfItems(); 
     42    update_number_of_items(); 
    4343    update_point_properties("label", labels, false); 
    4444} 
     
    4646void MultiCurve::set_point_sizes(const QList<int>& sizes) 
    4747{ 
    48     updateNumberOfItems(); 
     48    update_number_of_items(); 
    4949    update_point_properties("size", sizes); 
    5050} 
     
    5252void MultiCurve::set_point_symbols(const QList< int >& symbols) 
    5353{ 
    54     updateNumberOfItems(); 
     54    update_number_of_items(); 
    5555    update_point_properties("symbol", symbols, false); 
    5656} 
     
    5858void MultiCurve::update_properties() 
    5959{ 
    60     updateNumberOfItems(); 
     60    update_number_of_items(); 
    6161    update_point_coordinates(); 
    6262} 
     
    6464void MultiCurve::shuffle_points() 
    6565{ 
    66     updateNumberOfItems(); 
     66    update_number_of_items(); 
    6767    update_items(points(), PointShuffler(), UpdateContinuous); 
    6868} 
     
    7575void MultiCurve::set_points_marked(const QList< bool >& marked) 
    7676{ 
    77     updateNumberOfItems(); 
     77    update_number_of_items(); 
    7878    update_point_properties("marked", marked, false); 
    7979} 
  • source/orangeqt/networkcurve.cpp

    r8706 r8715  
    356356NetworkCurve::~NetworkCurve() 
    357357{ 
    358     cancelAllUpdates(); 
     358    cancel_all_updates(); 
    359359    qDeleteAll(m_edges); 
    360360    m_edges.clear(); 
     
    812812void NetworkCurve::set_edges(const NetworkCurve::Edges& edges) 
    813813{ 
    814     cancelAllUpdates(); 
     814    cancel_all_updates(); 
    815815    qDeleteAll(m_edges); 
    816816    m_edges = edges; 
     
    839839void NetworkCurve::set_nodes(const NetworkCurve::Nodes& nodes) 
    840840{ 
    841     cancelAllUpdates(); 
     841    cancel_all_updates(); 
    842842    qDeleteAll(m_edges); 
    843843    m_edges.clear(); 
     
    855855void NetworkCurve::remove_nodes(const QList<int>& nodes) 
    856856{ 
    857     cancelAllUpdates(); 
     857    cancel_all_updates(); 
    858858    foreach (int i, nodes) 
    859859    { 
     
    865865void NetworkCurve::remove_node(int index) 
    866866{ 
    867     cancelAllUpdates(); 
     867    cancel_all_updates(); 
    868868    if (!m_nodes.contains(index)) 
    869869    { 
     
    924924void NetworkCurve::set_node_sizes(const QMap<int, double>& sizes, double min_size, double max_size) 
    925925{ 
    926     cancelAllUpdates(); 
     926    cancel_all_updates(); 
    927927 
    928928    NodeItem* node; 
     
    10271027void NetworkCurve::set_node_labels(const QMap<int, QString>& labels) 
    10281028{ 
    1029     cancelAllUpdates(); 
     1029    cancel_all_updates(); 
    10301030    QMap<int, QString>::ConstIterator it; 
    10311031    for (it = labels.constBegin(); it != labels.constEnd(); ++it) 
     
    10371037void NetworkCurve::set_node_tooltips(const QMap<int, QString>& tooltips) 
    10381038{ 
    1039     cancelAllUpdates(); 
     1039    cancel_all_updates(); 
    10401040    QMap<int, QString>::ConstIterator it; 
    10411041    for (it = tooltips.constBegin(); it != tooltips.constEnd(); ++it) 
     
    10471047void NetworkCurve::set_node_marks(const QMap<int, bool>& marks) 
    10481048{ 
    1049     cancelAllUpdates(); 
     1049    cancel_all_updates(); 
    10501050    QMap<int, bool>::ConstIterator it; 
    10511051    for (it = marks.constBegin(); it != marks.constEnd(); ++it) 
     
    10571057void NetworkCurve::clear_node_marks() 
    10581058{ 
    1059     cancelAllUpdates(); 
     1059    cancel_all_updates(); 
    10601060    Nodes::Iterator it; 
    10611061    for (it = m_nodes.begin(); it != m_nodes.end(); ++it) 
     
    10801080void NetworkCurve::set_edge_colors(const QList<QColor>& colors) 
    10811081{ 
    1082     cancelAllUpdates(); 
     1082    cancel_all_updates(); 
    10831083    int i; 
    10841084    for (i = 0; i < colors.size(); ++i) 
     
    10921092void NetworkCurve::set_edge_sizes(double max_size) 
    10931093{ 
    1094     cancelAllUpdates(); 
     1094    cancel_all_updates(); 
    10951095 
    10961096    double min_size_value = std::numeric_limits<double>::max(); 
     
    11371137void NetworkCurve::set_edge_labels(const QList<QString>& labels) 
    11381138{ 
    1139     cancelAllUpdates(); 
     1139    cancel_all_updates(); 
    11401140    int i; 
    11411141    for (i = 0; i < labels.size(); ++i) 
  • source/orangeqt/plot.cpp

    r8704 r8715  
    366366    m_point_set[parent].insert(pos); 
    367367    m_point_hash[parent].insert(pos, point); 
    368     qDebug() << "Added point" << m_point_set[parent].size(); 
    369368} 
    370369 
  • source/orangeqt/unconnectedlinescurve.cpp

    r8695 r8715  
    6868void UnconnectedLinesCurve::update_properties() 
    6969{ 
    70     cancelAllUpdates(); 
     70    cancel_all_updates(); 
    7171    if (needs_update() & UpdatePosition) 
    7272    { 
Note: See TracChangeset for help on using the changeset viewer.