mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-06 06:19:52 +08:00
VPalette: support referencing definition in the same group
This commit is contained in:
parent
49811cabc0
commit
0d4a62626e
@ -620,7 +620,6 @@ QTreeView {
|
||||
color: @treeview_fg;
|
||||
background: @treeview_bg;
|
||||
show-decoration-selected: 0;
|
||||
padding-top: 3px;
|
||||
border: none;
|
||||
selection-background-color: transparent;
|
||||
outline: none;
|
||||
@ -681,7 +680,6 @@ QListView {
|
||||
color: @listview_fg;
|
||||
background: @listview_bg;
|
||||
show-decoration-selected: 0;
|
||||
padding-top: 3px;
|
||||
border: none;
|
||||
selection-background-color: transparent;
|
||||
outline: none;
|
||||
|
@ -42,6 +42,8 @@ void VPalette::initPaleteFromSettings(QSettings *p_settings, const QString &p_gr
|
||||
QRegExp reg("@(\\w+)");
|
||||
|
||||
p_settings->beginGroup(p_group);
|
||||
// Used to store undefined pairs.
|
||||
QHash<QString, QString> undefined;
|
||||
QStringList keys = p_settings->childKeys();
|
||||
for (auto const & key : keys) {
|
||||
if (key.isEmpty()) {
|
||||
@ -54,14 +56,35 @@ void VPalette::initPaleteFromSettings(QSettings *p_settings, const QString &p_gr
|
||||
if (it != m_palette.end()) {
|
||||
val = it.value();
|
||||
} else {
|
||||
qWarning() << "non-defined reference attribute" << key << "in palette" << p_settings->fileName();
|
||||
val.clear();
|
||||
undefined.insert(key, reg.cap(1));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
m_palette.insert(key, val);
|
||||
}
|
||||
|
||||
// Handle definition: a=@b b=@c c=red.
|
||||
int iter = 0;
|
||||
while (!undefined.isEmpty()) {
|
||||
if (iter >= undefined.size()) {
|
||||
qWarning() << "cyclic palette definitions found" << undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
for (auto it = undefined.begin(); it != undefined.end();) {
|
||||
auto pit = m_palette.find(it.value());
|
||||
if (pit != m_palette.end()) {
|
||||
m_palette.insert(it.key(), pit.value());
|
||||
iter = 0;
|
||||
it = undefined.erase(it);
|
||||
} else {
|
||||
++iter;
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p_settings->endGroup();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user