27 #include "../../../se/Style.h"
28 #include "../../../se/Symbolizer.h"
29 #include "../../../se/Rule.h"
38 : QTreeWidget(parent),
42 setAlternatingRowColors(
true);
43 setSelectionMode(QAbstractItemView::SingleSelection);
44 setHeaderHidden(
true);
45 setIconSize(QSize(16, 16));
53 connect(
this, SIGNAL(itemClicked(QTreeWidgetItem*,
int)), SLOT(
onItemClicked(QTreeWidgetItem*,
int)));
76 QTreeWidgetItem* root =
new QTreeWidgetItem(
this, STYLE);
77 root->setText(0, tr(
"Style"));
79 std::size_t nRules = m_style->getRules().size();
81 for(std::size_t i = 0; i < nRules; ++i)
84 const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
86 QTreeWidgetItem* ruleItem =
new QTreeWidgetItem(root, RULE);
87 ruleItem->setText(0, tr(
"Rule"));
88 ruleItem->setData(0, Qt::UserRole, (
int)i);
91 for(std::size_t j = 0; j < symbs.size(); ++j)
93 QTreeWidgetItem* symbItem =
new QTreeWidgetItem(ruleItem, SYMBOLIZER);
95 QString symbTypeName = tr(
"Unknown Symbol");
97 std::map<QString, QString>::iterator it = m_symbolizerNames.find(symbs[j]->getType().c_str());
98 if(it != m_symbolizerNames.end())
99 symbTypeName = it->second;
104 symbTypeName.append(
" " + count);
106 symbItem->setText(0, symbTypeName);
107 symbItem->setData(0, Qt::UserRole, static_cast<int>(j));
112 setCurrentItem(symbItem);
113 emit symbolizerClicked(symbs[j]);
123 QTreeWidgetItem* selectedItem = getSelectedItem();
125 if(selectedItem == 0)
128 if(selectedItem->type() == RULE)
129 return getRule(selectedItem);
131 if(selectedItem->type() == SYMBOLIZER)
132 return getRule(selectedItem->parent());
139 QTreeWidgetItem* selectedItem = getSelectedItem();
141 if(selectedItem != 0 && selectedItem->type() == SYMBOLIZER)
142 return getSymbolizer(selectedItem);
149 QTreeWidgetItem* currentItem = getSelectedItem();
151 if(currentItem == 0 || currentItem->type() != SYMBOLIZER)
155 std::size_t index = currentItem->data(0, Qt::UserRole).toUInt();
164 swapSymbolizers(rule, index, index - 1);
171 QTreeWidgetItem* currentItem = getSelectedItem();
173 if(currentItem == 0 || currentItem->type() != SYMBOLIZER)
180 std::size_t index = currentItem->data(0, Qt::UserRole).toUInt();
186 swapSymbolizers(rule, index, index + 1);
193 setIconSize(QSize(size, size));
200 QTreeWidgetItem* symbolizerItem = getSelectedItem();
206 QTreeWidgetItem* ruleItem = symbolizerItem->parent();
210 const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
217 assert(item && item->type() == RULE);
220 std::size_t index = item->data(0, Qt::UserRole).toUInt();
221 assert((index >= 0) && (index < m_style->getRules().size()));
223 return m_style->getRule(index);
228 assert(item && item->type() == SYMBOLIZER);
231 QTreeWidgetItem* parent = item->parent();
238 const std::vector<te::se::Symbolizer*>& symbs = rule->
getSymbolizers();
241 std::size_t index = item->data(0, Qt::UserRole).toUInt();
242 assert(index >= 0 && index < symbs.size());
249 QList<QTreeWidgetItem*> selected = selectedItems();
254 return selected.at(0);
278 emit ruleClicked(getRule(item));
282 emit symbolizerClicked(getSymbolizer(item));
The Style defines the styling that is to be applied to a geographic dataset (vector geometries or cov...
A Symbolizer describes how a feature is to appear on a map.
Static class used to generate preview of Symbology elements.
const std::vector< Symbolizer * > & getSymbolizers() const
A Rule is used to attach property/scale conditions to and group the individual symbols used for rende...
void setSymbolizer(std::size_t i, Symbolizer *s)
virtual Symbolizer * clone() const =0
It creates a new copy of this object.
const Symbolizer * getSymbolizer(std::size_t i) const