diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/rekonf.py | 93 | 
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: | 
