#include "preferencesdialog.h" #include "ui_preferencesdialog.h" #include "io/config.h" #include #include #include KeySequenceEditor::KeySequenceEditor(QAction* a) : QKeySequenceEdit(0), action(a) { setKeySequence(action->shortcut()); connect(this, SIGNAL(editingFinished()), this, SLOT(set_action_shortcut())); } void KeySequenceEditor::set_action_shortcut() { action->setShortcut(keySequence()); } PreferencesDialog::PreferencesDialog(QWidget *parent) : QDialog(parent), ui(new Ui::PreferencesDialog) { ui->setupUi(this); ui->imgSeqFormatEdit->setText(config.img_seq_formats); } PreferencesDialog::~PreferencesDialog() { delete ui; } void PreferencesDialog::setup_kbd_shortcuts(QMenuBar* menubar) { ui->treeWidget->clear(); QList menus = menubar->findChildren(); // caching for parent-child pairing QVector added_action_items; QVector added_actions; for (int i=0;iparent() != menubar) { for (int j=0;jmenu() == menu) { item = added_action_items.at(j); break; } } } if (menu->parent() == menubar || item == NULL) { item = new QTreeWidgetItem(); item->setText(0, menu->title().replace("&", "")); ui->treeWidget->addTopLevelItem(item); } for (int j=0;jactions().size();j++) { QAction* action = menu->actions().at(j); if (!action->isSeparator()) { QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, action->text().replace("&", "")); item->addChild(child); added_actions.append(action); added_action_items.append(child); } } } for (int i=0;imenu() == NULL) { KeySequenceEditor* editor = new KeySequenceEditor(added_actions.at(i)); ui->treeWidget->setItemWidget(added_action_items.at(i), 1, editor); } } } void PreferencesDialog::on_buttonBox_accepted() { config.img_seq_formats = ui->imgSeqFormatEdit->text(); }