6 ColorSelect::ColorSelect(lc::ui::MetaInfoManager_SPtr metaInfoManager, QWidget *parent,
bool showByLayer,
bool showByBlock) :
24 insertSeparator(count());
26 for(
auto color : QColor::colorNames()){
29 addItem(QIcon(pixmap),
color);
32 connect(
this, SIGNAL(activated(
const QString&)),
this, SLOT(
onActivated(
const QString&)));
39 auto colorDialog =
new QColorDialog(
this);
56 auto index = findText(
CUSTOM);
58 setItemIcon(index, QIcon(pixmap));
69 QColor
color(layer->color().redI(), layer->color().greenI(), layer->color().blueI(), layer->color().alphaI());
72 setItemIcon(index, QIcon(pixmap));
79 QColor qColor(color.redI(), color.greenI(), color.blueI(), color.alphaI());
89 if(metaInfoManager !=
nullptr) {
90 if(metaInfoManager->color() ==
nullptr) {
93 else if(std::dynamic_pointer_cast<const lc::MetaColorByBlock>(metaInfoManager->color())) {
97 auto colorByValue = std::dynamic_pointer_cast<
const lc::MetaColorByValue>(metaInfoManager->color());
98 if(colorByValue !=
nullptr) {
118 return std::make_shared<lc::MetaColorByBlock>();
121 return std::make_shared<const lc::MetaColorByValue>(
color());
126 throw "Color can't be returned if ByLayer or ByBlock is selected.";
131 if(currentText() ==
CUSTOM) {
135 color = QColor(currentText());
138 if(!color.isValid()) {
139 throw "The selected color is invalid.";
142 return lc::Color(color.red(), color.green(), color.blue(), color.alpha());
lc::Color color()
Returns selected color.
void onActivated(const QString &text)
void onLayerChanged(lc::Layer_CSPtr layer)
Event when a new layer is selected.
lc::ui::MetaInfoManager_SPtr _metaInfoManager
void updateMetaInfoManager()
void setColor(lc::Color color)
Set selected color.
void on_customColorChanged(const QColor &color)
lc::MetaColor_CSPtr metaColor()
Returns selected color.
void setMetaInfoManager(lc::ui::MetaInfoManager_SPtr metaInfoManager=nullptr)
Set the MetaInfo manager.
ColorSelect(lc::ui::MetaInfoManager_SPtr metaInfoManager=nullptr, QWidget *parent=0, bool showByLayer=false, bool showByBlock=false)
Create widget.