summaryrefslogtreecommitdiff
path: root/scripts/rekonf.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rekonf.py')
-rwxr-xr-xscripts/rekonf.py93
1 files changed, 47 insertions, 46 deletions
diff --git a/scripts/rekonf.py b/scripts/rekonf.py
index 48706c3d..941c29c7 100755
--- a/scripts/rekonf.py
+++ b/scripts/rekonf.py
@@ -13,56 +13,59 @@ import sys
from xml.etree import ElementTree
-def write_int_entry(entry):
- '''Add a QSpinBox connected to an Int entry'''
- obj = entry.attrib['key']
- default = entry.find('{*}default').text
+def write_int_entry(obj, name, default):
+ """Add a QSpinBox connected to an Int (obj, name, default)"""
print(f' auto* { obj } = new QSpinBox(this);')
print(f' { obj }->setValue(s->value("{ obj }", { default }).toInt());')
- print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { obj });')
+ print(f' connect({ obj }, &QSpinBox::valueChanged, this, [this]() {{ emit changed(); }});')
+ print(f' formLayout->addRow(tr("{ name }"), { obj });')
-def write_bool_entry(entry):
- '''Add a QCheckBox connected to a Bool entry'''
- obj = entry.attrib['key']
- default = entry.find('{*}default').text
- print(f' auto* { obj } = new QCheckBox(tr("{ entry.attrib["name"] }"), this);')
+def write_bool_entry(obj, name, default):
+ """Add a QCheckBox connected to a Bool (obj, name, default)"""
+ print(f' auto* { obj } = new QCheckBox(tr("{ name }"), this);')
print(f' { obj }->setChecked(s->value("{ obj }", { default }).toBool());')
+ print(f' connect({ obj }, &QCheckBox::stateChanged, this, [this]() {{ emit changed(); }});')
print(f' formLayout->addRow(QString(), { obj });')
-def write_string_entry(entry):
- '''Add a QLineEdit connected to a String entry'''
- obj = entry.attrib['key']
- default = entry.find('{*}default').text
+def write_string_entry(obj, name, default):
+ """Add a QLineEdit connected to a String (obj, name, default)"""
print(f' auto* {obj} = new QLineEdit(this);')
- print(f' {obj}->setText(s->value("{ obj }", "{ default }").toString());')
- print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { obj });')
+ print(f' { obj }->setText(s->value("{ obj }", "{ default }").toString());')
+ print(f' connect({ obj }, &QLineEdit::textChanged, this, [this]() {{ emit changed(); }});')
+ print(f' formLayout->addRow(tr("{ name }"), { obj });')
-def write_font_entry(entry):
- '''Add a QFontComboBox connected to a Font entry'''
- obj = entry.attrib['key']
- default = entry.find('{*}default').text
+def write_font_entry(obj, name, default):
+ """Add a QFontComboBox connected to a Font (obj, name, default)"""
print(f' auto* { obj } = new QFontComboBox(this);')
print(f' { obj }->setCurrentFont(s->value("{ obj }", "{ default }").toString());')
- print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { obj });')
+ print(f' connect({ obj }, &QFontComboBox::currentFontChanged, this, [this]() {{ emit changed(); }});')
+ print(f' formLayout->addRow(tr("{ name }"), { obj });')
-def write_shortcut_entry(entry):
- '''Add a QKeySequenceEdit connected to a Shortcut entry'''
- obj = entry.attrib['key']
- default = entry.find('{*}default').text
- print(f' auto* { entry.attrib["key"] } = new QKeySequenceEdit(this);')
+def write_shortcut_entry(obj, name, default):
+ """Add a QKeySequenceEdit connected to a Shortcut (obj, name, default)"""
+ print(f' auto* { obj } = new QKeySequenceEdit(this);')
print(f' { obj }->setKeySequence(s->value("{ obj }", "{ default }").toString());')
- print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { obj });')
+ print(f' connect({ obj }, &QKeySequenceEdit::keySequenceChanged, this, [this]() {{ emit changed(); }});')
+ print(f' formLayout->addRow(tr("{ name }"), { obj });')
def generate_group_widget(root, group):
- '''Generate a class based on the group name'''
+ """Generate a class based on the group name"""
class_group = group.attrib["name"].replace(' ', '')
class_name = group.attrib["name"].replace(' ', '') + 'SettingsWidget'
+ write_entry_fn = {
+ 'Int': write_int_entry,
+ 'Bool': write_bool_entry,
+ 'String': write_string_entry,
+ 'Font': write_font_entry,
+ 'Shortcut': write_shortcut_entry
+ }
+
# includes
print('// Includes')
print('#include "settingswidgets.hpp"')
@@ -78,8 +81,11 @@ def generate_group_widget(root, group):
print(f'#include <{ include.text }>')
print('')
+ # ctor
print(f'{ class_name }::{ class_name }(RekonqSettings *s, QWidget *parent) : SettingsWidget(s, parent) {{')
- print(f' s->beginGroup("{ class_group }");')
+ print(f' setObjectName("{ class_group }");')
+ if class_group != 'General':
+ print(f' s->beginGroup("{ class_group }");')
print(' auto *formLayout = new QFormLayout;')
print(' setLayout(formLayout);')
print('')
@@ -88,28 +94,22 @@ def generate_group_widget(root, group):
for entry in group.findall('{http://www.kde.org/standards/kcfg/1.0}entry'):
if entry.attrib.get("hidden") == "true":
print(f' // hidden entry { entry.attrib.get("name") }')
- elif entry.attrib['type'] == 'Int':
- write_int_entry(entry)
- elif entry.attrib['type'] == 'Bool':
- write_bool_entry(entry)
- elif entry.attrib['type'] == 'String':
- write_string_entry(entry)
- elif entry.attrib['type'] == 'Font':
- write_font_entry(entry)
- elif entry.attrib['type'] == 'Shortcut':
- write_shortcut_entry(entry)
else:
- print(f'#error entry with unknown type { entry.attrib["type"] }')
+ obj = entry.attrib['key']
+ name = entry.attrib["name"]
+ default = entry.find('{*}default').text
+ write_entry_fn.get(entry.attrib['type'])(obj, name, default)
+ print(f' { obj }->setObjectName("{ obj }");')
+ print(f' { obj }->setProperty("defaultValue", "{ default }");')
print('')
- print(' s->endGroup();')
+ if class_group != 'General':
+ print(' s->endGroup();')
print('}\n')
- print(f'void { class_name }::save() {{ }}')
- print(f'void { class_name }::reset() {{ }}')
-
-def generate_group_ini(root, group):
+def generate_group_ini(group):
+ """Generate settings in ini format for group"""
group_name = group.attrib["name"].replace(' ', '')
print(f'[{ group_name }]')
for entry in group.findall('{http://www.kde.org/standards/kcfg/1.0}entry'):
@@ -122,6 +122,7 @@ def generate_group_ini(root, group):
def main():
+ """main function"""
parser = argparse.ArgumentParser(description='Generate SettingsWidgets')
parser.add_argument('file', type=str, help='kcfg file')
parser.add_argument('--group', type=str, required=True, help='Group')
@@ -134,7 +135,7 @@ def main():
if args.group == 'all':
for group in root.findall('{http://www.kde.org/standards/kcfg/1.0}group'):
- generate_group_ini(root, group)
+ generate_group_ini(group)
else:
for group in root.findall('{http://www.kde.org/standards/kcfg/1.0}group'):
if group.attrib["name"] == args.group: