Fix ColorChip property/combobox
This commit is contained in:
parent
a05b3e7fb2
commit
1eaf44b54e
2 changed files with 17 additions and 12 deletions
|
@ -440,6 +440,7 @@ private:
|
||||||
|
|
||||||
class DVAPI TColorChipProperty final : public TProperty {
|
class DVAPI TColorChipProperty final : public TProperty {
|
||||||
public:
|
public:
|
||||||
|
typedef std::vector<std::wstring> Range;
|
||||||
struct ColorChip {
|
struct ColorChip {
|
||||||
QString UIName;
|
QString UIName;
|
||||||
TPixel32 pixelColor;
|
TPixel32 pixelColor;
|
||||||
|
@ -455,12 +456,8 @@ public:
|
||||||
TProperty *clone() const override { return new TColorChipProperty(*this); }
|
TProperty *clone() const override { return new TColorChipProperty(*this); }
|
||||||
|
|
||||||
int indexOf(const std::wstring &value) {
|
int indexOf(const std::wstring &value) {
|
||||||
ColorChips::const_iterator it;
|
Range::const_iterator it = std::find(m_range.begin(), m_range.end(), value);
|
||||||
for (it = m_chips.begin(); it != m_chips.end(); it++) {
|
return (it == m_range.end()) ? -1 : it - m_range.begin();
|
||||||
ColorChip chip = *it;
|
|
||||||
if (chip.UIName == QString::fromStdWString(value)) break;
|
|
||||||
}
|
|
||||||
return (it == m_chips.end()) ? -1 : it - m_chips.begin();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int indexOf(TPixel32 color) {
|
int indexOf(TPixel32 color) {
|
||||||
|
@ -472,10 +469,15 @@ public:
|
||||||
return (it == m_chips.end()) ? -1 : it - m_chips.begin();
|
return (it == m_chips.end()) ? -1 : it - m_chips.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isValue(const std::wstring &value) { return (indexOf(value) != -1); }
|
bool isValue(const std::wstring &value) {
|
||||||
|
bool ret =
|
||||||
|
std::find(m_range.begin(), m_range.end(), value) != m_range.end();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void addValue(std::wstring value, const TPixel32 &color) {
|
void addValue(std::wstring value, const TPixel32 &color) {
|
||||||
if (m_index == -1) m_index = 0;
|
if (m_index == -1) m_index = 0;
|
||||||
|
m_range.push_back(value);
|
||||||
m_chips.push_back(ColorChip(QString::fromStdWString(value), color));
|
m_chips.push_back(ColorChip(QString::fromStdWString(value), color));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,6 +488,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteAllValues() {
|
void deleteAllValues() {
|
||||||
|
m_range.clear();
|
||||||
m_chips.clear();
|
m_chips.clear();
|
||||||
m_index = -1;
|
m_index = -1;
|
||||||
}
|
}
|
||||||
|
@ -509,13 +512,14 @@ public:
|
||||||
|
|
||||||
int getCount() const { return (int)m_chips.size(); }
|
int getCount() const { return (int)m_chips.size(); }
|
||||||
|
|
||||||
|
const Range &getRange() const { return m_range; }
|
||||||
const ColorChips &getColorChips() const { return m_chips; }
|
const ColorChips &getColorChips() const { return m_chips; }
|
||||||
|
|
||||||
std::wstring getValue() const {
|
std::wstring getValue() const {
|
||||||
return (m_index < 0) ? L"" : m_chips[m_index].UIName.toStdWString();
|
return (m_index < 0) ? L"" : m_range[m_index];
|
||||||
}
|
}
|
||||||
std::string getValueAsString() override {
|
std::string getValueAsString() override {
|
||||||
return (m_index < 0) ? "" : m_chips[m_index].UIName.toStdString();
|
return ::to_string(m_range[m_index]);
|
||||||
}
|
}
|
||||||
TPixel32 getColorValue() const {
|
TPixel32 getColorValue() const {
|
||||||
return (m_index < 0) ? TPixel32(0, 0, 0) : m_chips[m_index].pixelColor;
|
return (m_index < 0) ? TPixel32(0, 0, 0) : m_chips[m_index].pixelColor;
|
||||||
|
@ -528,6 +532,7 @@ public:
|
||||||
void assignUIName(TProperty *refP) override;
|
void assignUIName(TProperty *refP) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Range m_range;
|
||||||
ColorChips m_chips;
|
ColorChips m_chips;
|
||||||
int m_index;
|
int m_index;
|
||||||
};
|
};
|
||||||
|
|
|
@ -602,10 +602,10 @@ void ColorChipCombo::updateStatus() {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void ColorChipCombo::onActivated(int index) {
|
void ColorChipCombo::onActivated(int index) {
|
||||||
const TColorChipProperty::ColorChips &chips = m_property->getColorChips();
|
const TColorChipProperty::Range &range = m_property->getRange();
|
||||||
if (index < 0 || index >= (int)chips.size()) return;
|
if (index < 0 || index >= (int)range.size()) return;
|
||||||
|
|
||||||
std::wstring item = chips[index].UIName.toStdWString();
|
std::wstring item = range[index];
|
||||||
m_property->setValue(item);
|
m_property->setValue(item);
|
||||||
notifyTool();
|
notifyTool();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue