27 #include "../../../se/Style.h" 
   28 #include "../../../se/Symbolizer.h" 
   29 #include "../../../se/Rule.h" 
   41   setAlternatingRowColors(
true);
 
   42   setSelectionMode(QAbstractItemView::SingleSelection);
 
   43   setHeaderHidden(
true);
 
   44   setIconSize(QSize(16, 16));
 
   52   connect(
this, SIGNAL(itemClicked(QTreeWidgetItem*, 
int)), SLOT(
onItemClicked(QTreeWidgetItem*, 
int)));
 
   72   QTreeWidgetItem* root = 
new QTreeWidgetItem(
this, STYLE);
 
   73   root->setText(0, tr(
"Style"));
 
   75   std::size_t nRules = m_style->getRules().size();
 
   77   for(std::size_t i = 0; i < nRules; ++i) 
 
   80     const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
 
   82     QTreeWidgetItem* ruleItem = 
new QTreeWidgetItem(root, RULE);
 
   83     ruleItem->setText(0, tr(
"Rule"));
 
   84     ruleItem->setData(0, Qt::UserRole, (
int)i);
 
   87     for(std::size_t j = 0; j < symbs.size(); ++j) 
 
   89       QTreeWidgetItem* symbItem = 
new QTreeWidgetItem(ruleItem, SYMBOLIZER);
 
   91       QString symbTypeName = tr(
"Unknown Symbol");
 
   93       std::map<QString, QString>::iterator it = m_symbolizerNames.find(symbs[j]->getType().c_str());
 
   94       if(it != m_symbolizerNames.end())
 
   95         symbTypeName = it->second;
 
  100       symbTypeName.append(
" " + count);
 
  102       symbItem->setText(0, symbTypeName);
 
  103       symbItem->setData(0, Qt::UserRole, static_cast<int>(j));
 
  108         setCurrentItem(symbItem);
 
  109         emit symbolizerClicked(symbs[j]);
 
  119   QTreeWidgetItem* selectedItem = getSelectedItem();
 
  121   if(selectedItem == 0)
 
  124   if(selectedItem->type() == RULE)
 
  125     return getRule(selectedItem);
 
  127   if(selectedItem->type() == SYMBOLIZER)
 
  128     return getRule(selectedItem->parent());
 
  135   QTreeWidgetItem* selectedItem = getSelectedItem();
 
  137   if(selectedItem != 0 && selectedItem->type() == SYMBOLIZER)
 
  138     return getSymbolizer(selectedItem);
 
  145   QTreeWidgetItem* currentItem = getSelectedItem();
 
  147   if(currentItem == 0 || currentItem->type() != SYMBOLIZER)
 
  151   std::size_t index = currentItem->data(0, Qt::UserRole).toUInt();
 
  160   swapSymbolizers(rule, index, index - 1);
 
  167   QTreeWidgetItem* currentItem = getSelectedItem();
 
  169   if(currentItem == 0 || currentItem->type() != SYMBOLIZER)
 
  176   std::size_t index = currentItem->data(0, Qt::UserRole).toUInt();
 
  182   swapSymbolizers(rule, index, index + 1);
 
  189   setIconSize(QSize(size, size));
 
  196   QTreeWidgetItem* symbolizerItem = getSelectedItem();
 
  202   QTreeWidgetItem* ruleItem = symbolizerItem->parent();
 
  206     const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
 
  213   assert(item && item->type() == RULE);
 
  216   std::size_t index = item->data(0, Qt::UserRole).toUInt();
 
  217   assert((index >= 0) && (index < m_style->getRules().size()));
 
  219   return m_style->getRule(index);
 
  224   assert(item && item->type() == SYMBOLIZER);
 
  227   QTreeWidgetItem* parent = item->parent();
 
  234   const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
 
  237   std::size_t index = item->data(0, Qt::UserRole).toUInt();
 
  238   assert(index >= 0 && index < symbs.size());
 
  245   QList<QTreeWidgetItem*> selected = selectedItems();
 
  250   return selected.at(0);
 
  274       emit ruleClicked(getRule(item));
 
  278       emit symbolizerClicked(getSymbolizer(item));
 
static QPixmap build(const te::se::Symbolizer *symb, const QSize &size)
Generates the preview of given symbolizer element. 
 
void swapSymbolizers(te::se::Rule *r, int indexFirst, int indexSecond)
 
std::map< QString, QString > m_symbolizerNames
A map of symbolizers names to user interface names. 
 
te::se::Rule * getCurrentRule()
Gets the current rule. 
 
const Symbolizer * getSymbolizer(std::size_t i) const 
 
void setStyle(te::se::Style *style)
Sets a style element to this widget. 
 
A Symbolizer describes how a feature is to appear on a map. 
 
const std::vector< Symbolizer * > & getSymbolizers() const 
 
te::se::Symbolizer * getCurrentSymbolizer()
Gets the current symbolizer. 
 
A widget used to explore a style. 
 
A Rule is used to attach property/scale conditions to and group the individual symbols used for rende...
 
void setLegendIconSize(int size)
 
virtual Symbolizer * clone() const =0
It creates a new copy of this object. 
 
void onSymbolizerChanged(te::se::Symbolizer *symb)
 
StyleExplorer(QWidget *parent=0)
Constructs a style explorer widget which is a child of parent. 
 
~StyleExplorer()
Destructor. 
 
te::se::Rule * getRule(QTreeWidgetItem *item) const 
Auxiliary internal method to retrieve a rule from a QTreeWidgetItem. 
 
void onItemClicked(QTreeWidgetItem *item, int column)
 
The Style defines the styling that is to be applied to a geographic dataset (vector geometries or cov...
 
void updateStyleTree()
This method updates the Style Explorer. 
 
QTreeWidgetItem * getSelectedItem() const 
Auxiliary internal method to retrieve the selected item on Style Explorer. 
 
Static class used to generate preview of Symbology elements. 
 
void setSymbolizer(std::size_t i, Symbolizer *s)
 
te::se::Symbolizer * getSymbolizer(QTreeWidgetItem *item) const 
Auxiliary internal method to retrieve a symbolizer from a QTreeWidgetItem.