You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.2 KiB
138 lines
4.2 KiB
/* |
|
SPDX-FileCopyrightText: 2007-2008 Robert Knight <robertknight@gmail.com> |
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later |
|
*/ |
|
|
|
#ifndef KEYBINDINGEDITOR_H |
|
#define KEYBINDINGEDITOR_H |
|
|
|
// Qt |
|
#include <QDialog> |
|
|
|
// Konsole |
|
// TODO: Move away Profile::Property from the profile header. |
|
#include "profile/Profile.h" |
|
|
|
class QTableWidgetItem; |
|
|
|
namespace Ui |
|
{ |
|
class KeyBindingEditor; |
|
} |
|
|
|
namespace Konsole |
|
{ |
|
class KeyboardTranslator; |
|
|
|
/** |
|
* A dialog which allows the user to edit a key bindings scheme |
|
* which maps between key combinations input by the user and |
|
* the character sequence sent to the terminal when those |
|
* combinations are pressed. |
|
* |
|
* The dialog can be initialized with the settings of an |
|
* existing key bindings scheme using the setup() method. |
|
* |
|
* The dialog creates a copy of the supplied keyboard translator |
|
* to which any changes are applied. The modified translator |
|
* can be retrieved using the translator() method. |
|
*/ |
|
class KeyBindingEditor : public QDialog |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
/** Constructs a new key bindings editor with the specified parent. */ |
|
explicit KeyBindingEditor(QWidget *parent = nullptr); |
|
~KeyBindingEditor() override; |
|
|
|
/** |
|
* Initializes the dialog with the bindings and other settings |
|
* from the specified @p translator. |
|
* @p currentProfileTranslator the name of the translator set in the |
|
* current profile |
|
* @p isNewTranslator specifies whether the translator being edited |
|
* is an already existing one or a newly created |
|
* one, defaults to false. |
|
*/ |
|
void setup(const KeyboardTranslator *translator, const QString ¤tProfileTranslator, bool isNewTranslator = false); |
|
|
|
/** |
|
* Returns the modified translator describing the changes to the bindings |
|
* and other settings which the user made. |
|
*/ |
|
KeyboardTranslator *translator() const; |
|
|
|
/** |
|
* Sets the text of the editor's description field. |
|
*/ |
|
void setDescription(const QString &description); |
|
|
|
/** |
|
* Returns the text of the editor's description field. |
|
*/ |
|
QString description() const; |
|
|
|
// reimplemented to handle test area input |
|
bool eventFilter(QObject *watched, QEvent *event) override; |
|
|
|
Q_SIGNALS: |
|
/** |
|
* Emitted when the user clicks the OK button to save the changes. This |
|
* signal is connected to EditProfileDialog::updateKeyBindingsList() |
|
* to update the key bindings list on the Keyboard tab in the Edit |
|
* Profile dialog. |
|
* @p translatorName is the translator that has just been edited |
|
*/ |
|
void updateKeyBindingsListRequest(const QString &translatorName); |
|
|
|
/** |
|
* Emitted when the user clicks the OK button to save the changes to |
|
* the translator that's set in the current profile; this signal is |
|
* connected to EditProfileDialog::updateTempProfileProperty() to |
|
* request applying the changes to the _tempProfile. |
|
* @p newTranslatorName is the name of the translator, that has just |
|
* been edited/saved, and which is also the translator |
|
* set in the current Profile |
|
*/ |
|
void updateTempProfileKeyBindingsRequest(Profile::Property, const QString &newTranslatorName); |
|
|
|
private Q_SLOTS: |
|
// reimplemented |
|
void accept() override; |
|
|
|
void setTranslatorDescription(const QString &description); |
|
void bindingTableItemChanged(QTableWidgetItem *item); |
|
void removeSelectedEntry(); |
|
void addNewEntry(); |
|
|
|
private: |
|
Q_DISABLE_COPY(KeyBindingEditor) |
|
|
|
void setupKeyBindingTable(const KeyboardTranslator *translator); |
|
|
|
Ui::KeyBindingEditor *_ui; |
|
|
|
// translator to which modifications are made as the user makes |
|
// changes in the UI. |
|
// this is initialized as a copy of the translator specified |
|
// when setup() is called |
|
KeyboardTranslator *_translator; |
|
|
|
// Show only the rows that match the text entered by the user in the |
|
// filter search box |
|
void filterRows(const QString &text); |
|
|
|
bool _isNewTranslator; |
|
|
|
// The translator set in the current profile |
|
QString _currentProfileTranslator; |
|
|
|
// Sets the size hint of the dialog to be slightly smaller than the |
|
// size of EditProfileDialog |
|
QSize sizeHint() const override; |
|
}; |
|
} |
|
|
|
#endif // KEYBINDINGEDITOR_H
|
|
|