Changeset 8588:d7e4ec95b75c in orange


Ignore:
Timestamp:
08/03/11 14:09:57 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
a7e9185094417d97049dce7540c7a798a23d6046
Message:

Fix some object ownership problems in NetworkCurve and PlotItem

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWNxCanvasQt.py

    r8587 r8588  
    718718             
    719719        self.networkCurve.add_edges(edges) 
     720        self.set_dirty() 
     721        self.replot() 
    720722         
    721723    def set_graph(self, graph, curve=None, items=None, links=None): 
     
    778780            else: 
    779781                edges = [EdgeItem(vertices[i], vertices[j], 
    780                     graph[i][j].get('weight', 1), links_index, label) for \ 
     782                    graph[i][j].get('weight', 1), links_index, label, parent=self.networkCurve) for \ 
    781783                    ((i, j), links_index, label) in zip(self.graph.edges(), \ 
    782                                                         links_indices, labels, parent=self.networkCurve)] 
     784                                                        links_indices, labels)] 
    783785        elif self.graph.is_directed(): 
    784786            edges = [EdgeItem(vertices[i], vertices[j], 
     
    790792        self.networkCurve.set_edges(edges) 
    791793        self.networkCurve.update_properties() 
     794        self.set_dirty() 
    792795        self.replot() 
    793796         
  • source/orangeplot/curve.cpp

    r8582 r8588  
    3131{ 
    3232    cancelAllUpdates(); 
    33     if (plot()) 
    34     { 
    35         plot()->remove_all_points(this); 
    36     } 
    3733} 
    3834 
  • source/orangeplot/networkcurve.cpp

    r8585 r8588  
    278278NetworkCurve::~NetworkCurve() 
    279279{ 
     280    cancelAllUpdates(); 
    280281    qDeleteAll(m_edges); 
    281282    m_edges.clear(); 
     
    310311        } 
    311312    } 
    312     qDebug() << "NetworkCurve::dataRect()" << r; 
    313313    return r; 
    314314} 
     
    504504} 
    505505 
    506 NetworkCurve::Edges NetworkCurve::edges() 
     506NetworkCurve::Edges NetworkCurve::edges() const 
    507507{ 
    508508    return m_edges; 
     
    531531    qDeleteAll(m_nodes); 
    532532    m_nodes = nodes; 
     533    Q_ASSERT(m_nodes.uniqueKeys() == m_nodes.keys()); 
    533534    register_points(); 
    534535} 
    535536 
    536 NetworkCurve::Nodes NetworkCurve::nodes() 
     537NetworkCurve::Nodes NetworkCurve::nodes() const 
    537538{ 
    538539    return m_nodes; 
     
    595596 
    596597    m_nodes.unite(nodes); 
     598    Q_ASSERT(m_nodes.uniqueKeys() == m_nodes.keys()); 
    597599    register_points(); 
    598600} 
  • source/orangeplot/networkcurve.h

    r8585 r8588  
    157157    int random(); 
    158158     
    159     Nodes nodes(); 
     159    Nodes nodes() const; 
    160160    void set_nodes(const Nodes& nodes); 
    161161    void add_nodes(const Nodes& nodes); 
     
    163163    void remove_nodes(const QList< int >& nodes); 
    164164     
    165     Edges edges(); 
     165    Edges edges() const; 
    166166    void set_edges(const Edges& edges); 
    167167    void add_edges(const Edges& edges); 
  • source/orangeplot/networkcurve.sip

    r8585 r8588  
    2727    void set_label(const QString& label); 
    2828    QString label() const; 
    29      
    30     void set_selected(bool selected); 
    31     bool is_selected() const; 
    32  
    33     void set_marked(bool marked); 
    34     bool is_marked() const; 
    3529     
    3630    void set_tooltip(const QString& tooltip); 
     
    7973class NetworkCurve : Curve 
    8074{ 
    81  
    82 %TypeCode 
    83 static void transfer_nodes_to(const NetworkCurve::Nodes& nodes, NetworkCurve* owner) 
    84 { 
    85     foreach (NodeItem* item, nodes) 
    86     { 
    87         sipTransferTo(sipGetPyObject(item, sipType_NodeItem), sipGetPyObject(owner, sipType_NetworkCurve)); 
    88     } 
    89 } 
    90  
    91 static void transfer_edges_to(const NetworkCurve::Edges& edges, NetworkCurve* owner) 
    92 { 
    93     foreach (EdgeItem* item, edges) 
    94     { 
    95         sipTransferTo(sipGetPyObject(item, sipType_EdgeItem), sipGetPyObject(owner, sipType_NetworkCurve)); 
    96     } 
    97 } 
    98 %End 
    99  
    10075public: 
    101     typedef QList<EdgeItem*> Edges /NoTypeName/; 
    102     typedef QMap<int, NodeItem*> Nodes /NoTypeName/; 
     76    typedef QList<EdgeItem*> Edges; 
     77    typedef QMap<int, NodeItem*> Nodes; 
    10378 
    10479    NetworkCurve(QGraphicsItem* parent /TransferThis/ = 0, QGraphicsScene* scene /TransferThis/ = 0); 
     
    11186    int random(); 
    11287 
    113     Nodes nodes(); 
     88    Nodes nodes() const; 
    11489    void set_nodes(const Nodes& nodes); 
    115     %MethodCode 
    116         transfer_nodes_to(*a0, sipCpp); 
    117         sipCpp->set_nodes(*a0); 
    118     %End 
    11990    void add_nodes(const Nodes& nodes); 
    120     %MethodCode 
    121         transfer_nodes_to(*a0, sipCpp); 
    122         sipCpp->add_nodes(*a0); 
    123     %End 
    12491    void remove_node(int index); 
    12592    void remove_nodes(const QList< int >& nodes); 
    12693     
    127     Edges edges(); 
     94    Edges edges() const; 
    12895    void set_edges(const Edges& edges); 
    129     %MethodCode 
    130         transfer_edges_to(*a0, sipCpp); 
    131         sipCpp->set_edges(*a0); 
    132     %End 
    13396    void add_edges(const Edges& edges); 
    134     %MethodCode 
    135         transfer_edges_to(*a0, sipCpp); 
    136         sipCpp->add_edges(*a0); 
    137     %End 
    13897     
    13998    QList<QPair<int, int> > edge_indices(); 
  • source/orangeplot/plot.cpp

    r8574 r8588  
    5656Plot::~Plot() 
    5757{ 
    58  
     58    foreach (PlotItem* item, m_items) 
     59    { 
     60        remove_item(item); 
     61    } 
    5962} 
    6063 
     
    340343void Plot::unselect_all_points() 
    341344{ 
    342     int i = 0; 
    343345    foreach (const PointHash& hash, m_point_hash) 
    344346    { 
    345347        foreach (Point* point, hash) 
    346348        { 
    347             ++i; 
    348349            point->set_selected(false); 
    349350        } 
    350351    } 
    351352    emit selection_changed(); 
    352     qDebug() << "Unselected" << i << "points"; 
    353353} 
    354354 
  • source/orangeplot/plotitem.cpp

    r8585 r8588  
    1616PlotItem::~PlotItem() 
    1717{ 
    18  
     18    detach(); 
    1919} 
    2020 
  • source/orangeplot/types.sip

    r8469 r8588  
    2222 
    2323        PyObject *kobj = SIPLong_FromLong(i.key()); 
    24         PyObject *tobj = sipConvertFromNewType(t, sipType_TYPE, sipTransferObj); 
     24        PyObject *tobj = sipConvertFromType(t, sipType_TYPE, sipTransferObj); 
    2525 
    2626        if (kobj == NULL || tobj == NULL || PyDict_SetItem(d, kobj, tobj) < 0) 
Note: See TracChangeset for help on using the changeset viewer.