Fix ColorChip property/combobox

This commit is contained in:
manongjohn 2022-05-01 13:42:17 -04:00
parent a05b3e7fb2
commit 1eaf44b54e
2 changed files with 17 additions and 12 deletions

View file

@ -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;
}; };

View file

@ -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();
} }