class QgsRuleBasedRendererV2Model : QAbstractItemModel { %TypeHeaderCode #include %End public: QgsRuleBasedRendererV2Model( QgsRuleBasedRendererV2* r ); virtual Qt::ItemFlags flags( const QModelIndex &index ) const; virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const; virtual int columnCount( const QModelIndex & = QModelIndex() ) const; //! provide model index for parent's child item virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const; //! provide parent model index virtual QModelIndex parent( const QModelIndex &index ) const; // editing support virtual bool setData( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ); // drag'n'drop support Qt::DropActions supportedDropActions() const; QStringList mimeTypes() const; QMimeData *mimeData( const QModelIndexList &indexes ) const; bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ); bool removeRows( int row, int count, const QModelIndex & parent = QModelIndex() ); // new methods QgsRuleBasedRendererV2::Rule* ruleForIndex( const QModelIndex& index ) const; void insertRule( const QModelIndex& parent, int before, QgsRuleBasedRendererV2::Rule* newrule ); void updateRule( const QModelIndex& parent, int row ); void removeRule( const QModelIndex& index ); void willAddRules( const QModelIndex& parent, int count ); // call beginInsertRows void finishedAddingRules(); // call endInsertRows }; class QgsRuleBasedRendererV2Widget : QgsRendererV2Widget { %TypeHeaderCode #include %End public: static QgsRendererV2Widget* create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) /Factory/; QgsRuleBasedRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ); ~QgsRuleBasedRendererV2Widget(); virtual QgsFeatureRendererV2* renderer(); public slots: void addRule(); void editRule(); void editRule( const QModelIndex& index ); void removeRule(); void refineRuleScales(); void refineRuleCategories(); void refineRuleRanges(); void setRenderingOrder(); void currentRuleChanged( const QModelIndex& current = QModelIndex(), const QModelIndex& previous = QModelIndex() ); void saveSectionWidth( int section, int oldSize, int newSize ); void restoreSectionWidths(); protected: void refineRule( int type ); void refineRuleCategoriesGui( const QModelIndexList& index ); void refineRuleRangesGui( const QModelIndexList& index ); void refineRuleScalesGui( const QModelIndexList& index ); QgsRuleBasedRendererV2::Rule* currentRule(); QList selectedSymbols(); void refreshSymbolView(); }; /////// class QgsRendererRulePropsDialog : QDialog { %TypeHeaderCode #include %End public: QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style ); ~QgsRendererRulePropsDialog(); QgsRuleBasedRendererV2::Rule* rule(); public slots: void testFilter(); void buildExpression(); void accept(); };