diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/rekonf.py | 81 |
1 files changed, 55 insertions, 26 deletions
diff --git a/scripts/rekonf.py b/scripts/rekonf.py index 56ded374..48706c3d 100755 --- a/scripts/rekonf.py +++ b/scripts/rekonf.py @@ -15,45 +15,52 @@ from xml.etree import ElementTree def write_int_entry(entry): '''Add a QSpinBox connected to an Int entry''' - print(f' // { entry.attrib["name"] }') - print(f' auto* { entry.attrib["key"] } = new QSpinBox(this);') - print(f' { entry.attrib["key"] }->setValue({ entry.find("{*}default").text });') - print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { entry.attrib["key"] });') + obj = entry.attrib['key'] + default = entry.find('{*}default').text + 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 });') def write_bool_entry(entry): '''Add a QCheckBox connected to a Bool entry''' - print(f' // { entry.attrib["name"] }') - print(f' auto* { entry.attrib["key"] } = new QCheckBox(tr("{ entry.attrib["name"] }"), this);') - print(f' { entry.attrib["key"] }->setChecked({ entry.find("{*}default").text });') - print(f' formLayout->addRow(QString(), { entry.attrib["key"] });') + obj = entry.attrib['key'] + default = entry.find('{*}default').text + print(f' auto* { obj } = new QCheckBox(tr("{ entry.attrib["name"] }"), this);') + print(f' { obj }->setChecked(s->value("{ obj }", { default }).toBool());') + print(f' formLayout->addRow(QString(), { obj });') def write_string_entry(entry): '''Add a QLineEdit connected to a String entry''' - print(f' // { entry.attrib["name"] }') - print(f' auto* { entry.attrib["key"] } = new QLineEdit(this);') - print(f' { entry.attrib["key"] }->setText("{ entry.find("{*}default").text }");') - print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { entry.attrib["key"] });') + obj = entry.attrib['key'] + default = entry.find('{*}default').text + 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 });') def write_font_entry(entry): '''Add a QFontComboBox connected to a Font entry''' - print(f' // { entry.attrib["name"] }') - print(f' auto* { entry.attrib["key"] } = new QFontComboBox(this);') - print(f' { entry.attrib["key"] }->setCurrentFont({ entry.find("{*}default").text });') - print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { entry.attrib["key"] });') + obj = entry.attrib['key'] + default = entry.find('{*}default').text + 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 });') def write_shortcut_entry(entry): '''Add a QKeySequenceEdit connected to a Shortcut entry''' - print(f' // { entry.attrib["name"] }') - print(f' auto* { entry.attrib["key"] } = new QKeySequenceEdit({{ "{entry.find("{*}default").text}" }}, this);') - print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { entry.attrib["key"] });') + obj = entry.attrib['key'] + default = entry.find('{*}default').text + print(f' auto* { entry.attrib["key"] } = new QKeySequenceEdit(this);') + print(f' { obj }->setKeySequence(s->value("{ obj }", "{ default }").toString());') + print(f' formLayout->addRow(tr("{ entry.attrib["name"] }"), { obj });') def generate_group_widget(root, group): '''Generate a class based on the group name''' + class_group = group.attrib["name"].replace(' ', '') class_name = group.attrib["name"].replace(' ', '') + 'SettingsWidget' # includes @@ -71,7 +78,8 @@ def generate_group_widget(root, group): print(f'#include <{ include.text }>') print('') - print(f'{ class_name }::{ class_name }(QWidget *parent) : SettingsWidget(parent) {{') + print(f'{ class_name }::{ class_name }(RekonqSettings *s, QWidget *parent) : SettingsWidget(s, parent) {{') + print(f' s->beginGroup("{ class_group }");') print(' auto *formLayout = new QFormLayout;') print(' setLayout(formLayout);') print('') @@ -94,13 +102,26 @@ def generate_group_widget(root, group): print(f'#error entry with unknown type { entry.attrib["type"] }') print('') + print(' s->endGroup();') print('}\n') print(f'void { class_name }::save() {{ }}') print(f'void { class_name }::reset() {{ }}') -if __name__ == '__main__': +def generate_group_ini(root, 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'): + if entry.find('{*}default').get('code') == 'true': + continue + entry_key = entry.attrib['key'] + entry_val = entry.find('{*}default').text + print(f'{ entry_key }={ entry_val }') + print('') + + +def main(): 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') @@ -111,8 +132,16 @@ if __name__ == '__main__': tree = ElementTree.parse(args.file) root = tree.getroot() - # groups - for group in root.findall('{http://www.kde.org/standards/kcfg/1.0}group'): - if group.attrib["name"] == args.group: - print('// This is an automatically generated file') - generate_group_widget(root, group) + if args.group == 'all': + for group in root.findall('{http://www.kde.org/standards/kcfg/1.0}group'): + generate_group_ini(root, group) + else: + for group in root.findall('{http://www.kde.org/standards/kcfg/1.0}group'): + if group.attrib["name"] == args.group: + print('// This is an automatically generated file') + generate_group_widget(root, group) + break + + +if __name__ == '__main__': + main() |