Better hotkey input
This commit is contained in:
parent
2bd01bf181
commit
67c8f5c5cf
@ -62,7 +62,8 @@ SOURCES += main.cpp\
|
|||||||
aboutbox.cpp \
|
aboutbox.cpp \
|
||||||
cropeditor/drawing/eraseritem.cpp \
|
cropeditor/drawing/eraseritem.cpp \
|
||||||
cropeditor/drawing/rectitem.cpp \
|
cropeditor/drawing/rectitem.cpp \
|
||||||
cropeditor/drawing/ellipseitem.cpp
|
cropeditor/drawing/ellipseitem.cpp \
|
||||||
|
hotkeyinputdialog.cpp
|
||||||
|
|
||||||
HEADERS += mainwindow.hpp \
|
HEADERS += mainwindow.hpp \
|
||||||
cropeditor/cropeditor.hpp \
|
cropeditor/cropeditor.hpp \
|
||||||
@ -103,7 +104,8 @@ HEADERS += mainwindow.hpp \
|
|||||||
aboutbox.hpp \
|
aboutbox.hpp \
|
||||||
cropeditor/drawing/eraseritem.hpp \
|
cropeditor/drawing/eraseritem.hpp \
|
||||||
cropeditor/drawing/rectitem.hpp \
|
cropeditor/drawing/rectitem.hpp \
|
||||||
cropeditor/drawing/ellipseitem.hpp
|
cropeditor/drawing/ellipseitem.hpp \
|
||||||
|
hotkeyinputdialog.hpp
|
||||||
|
|
||||||
LIBS += -lavcodec -lavformat -lavutil -lswscale -lavutil
|
LIBS += -lavcodec -lavformat -lavutil -lswscale -lavutil
|
||||||
|
|
||||||
@ -131,7 +133,8 @@ FORMS += mainwindow.ui \
|
|||||||
cropeditor/settings/blurdialog.ui \
|
cropeditor/settings/blurdialog.ui \
|
||||||
recording/encoders/encodersettingsdialog.ui \
|
recording/encoders/encodersettingsdialog.ui \
|
||||||
settingsdialog.ui \
|
settingsdialog.ui \
|
||||||
aboutbox.ui
|
aboutbox.ui \
|
||||||
|
hotkeyinputdialog.ui
|
||||||
|
|
||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
README.md \
|
README.md \
|
||||||
|
37
hotkeyinputdialog.cpp
Normal file
37
hotkeyinputdialog.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "hotkeyinputdialog.hpp"
|
||||||
|
#include "ui_hotkeyinputdialog.h"
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
HotkeyInputDialog::HotkeyInputDialog(QString hotkeyName, QKeySequence currentSeq, QWidget *parent)
|
||||||
|
: QDialog(parent), ui(new Ui::HotkeyInputDialog) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
ui->keySeq->setText(currentSeq.toString());
|
||||||
|
setWindowTitle(hotkeyName);
|
||||||
|
connect(this, &QDialog::accepted, [&] {
|
||||||
|
QKeySequence s(ui->keySeq->text());
|
||||||
|
if (!s.toString().isEmpty()) emit sequenceSelected(s, windowTitle());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
HotkeyInputDialog::~HotkeyInputDialog() {
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyInputDialog::keyPressEvent(QKeyEvent *e) {
|
||||||
|
if (e->key() == Qt::Key_Shift || e->key() == Qt::Key_Control || e->key() == Qt::Key_Alt || e->key() == Qt::Key_AltGr
|
||||||
|
|| e->key() == Qt::Key_Context1 || e->key() == Qt::Key_Context2 || e->key() == Qt::Key_Context3 || e->key() == Qt::Key_Context4)
|
||||||
|
return;
|
||||||
|
if (recording) {
|
||||||
|
QKeySequence seq(e->modifiers() + e->key());
|
||||||
|
ui->keySeq->setText(seq.toString());
|
||||||
|
recording = false;
|
||||||
|
ui->recordButton->setText("Record");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyInputDialog::on_recordButton_clicked() {
|
||||||
|
recording = !recording;
|
||||||
|
ui->recordButton->setText(recording ? "Stop recording" : "Record");
|
||||||
|
}
|
31
hotkeyinputdialog.hpp
Normal file
31
hotkeyinputdialog.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#ifndef HOTKEYINPUTDIALOG_HPP
|
||||||
|
#define HOTKEYINPUTDIALOG_HPP
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class HotkeyInputDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class HotkeyInputDialog : public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit HotkeyInputDialog(QString hotkeyName, QKeySequence currentSeq, QWidget *parent = 0);
|
||||||
|
~HotkeyInputDialog();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void sequenceSelected(QKeySequence seq, QString name);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void keyPressEvent(QKeyEvent *e) override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_recordButton_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool recording = false;
|
||||||
|
Ui::HotkeyInputDialog *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // HOTKEYINPUTDIALOG_HPP
|
74
hotkeyinputdialog.ui
Normal file
74
hotkeyinputdialog.ui
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>HotkeyInputDialog</class>
|
||||||
|
<widget class="QDialog" name="HotkeyInputDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>255</width>
|
||||||
|
<height>80</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLineEdit" name="keySeq"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QPushButton" name="recordButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Record</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>HotkeyInputDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>HotkeyInputDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
2
main.cpp
2
main.cpp
@ -1,5 +1,6 @@
|
|||||||
#include "mainwindow.hpp"
|
#include "mainwindow.hpp"
|
||||||
#include "screenshotutil.hpp"
|
#include "screenshotutil.hpp"
|
||||||
|
#include "ui_mainwindow.h"
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
@ -11,7 +12,6 @@ extern "C" {
|
|||||||
#include <libavcodec/avcodec.h>
|
#include <libavcodec/avcodec.h>
|
||||||
#include <libavformat/avformat.h>
|
#include <libavformat/avformat.h>
|
||||||
}
|
}
|
||||||
#include "ui_mainwindow.h"
|
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <notifications.hpp>
|
#include <notifications.hpp>
|
||||||
#include <platformbackend.hpp>
|
#include <platformbackend.hpp>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "settingsdialog.hpp"
|
#include "settingsdialog.hpp"
|
||||||
|
#include "hotkeyinputdialog.hpp"
|
||||||
#include "mainwindow.hpp"
|
#include "mainwindow.hpp"
|
||||||
#include "ui_settingsdialog.h"
|
#include "ui_settingsdialog.h"
|
||||||
|
|
||||||
@ -111,10 +112,10 @@ void SettingsDialog::on_hotkeys_doubleClicked(const QModelIndex &) {
|
|||||||
if (ui->hotkeys->selectedItems().length() == 1) {
|
if (ui->hotkeys->selectedItems().length() == 1) {
|
||||||
QListWidgetItem *i = ui->hotkeys->selectedItems().at(0);
|
QListWidgetItem *i = ui->hotkeys->selectedItems().at(0);
|
||||||
QString str = i->data(Qt::UserRole + 1).toString();
|
QString str = i->data(Qt::UserRole + 1).toString();
|
||||||
bool ok;
|
HotkeyInputDialog *hotkey = new HotkeyInputDialog(str, hotkeying::sequence(str), this);
|
||||||
QString seq = QInputDialog::getText(MainWindow::inst(), "Hotkey Input", "Insert hotkey:", QLineEdit::Normal,
|
connect(hotkey, &HotkeyInputDialog::sequenceSelected,
|
||||||
hotkeying::sequence(str), &ok);
|
[&](QKeySequence seq, QString name) { hotkeying::hotkey(name, seq, fncs.value(name)); });
|
||||||
if (ok && hotkeying::valid(seq)) hotkeying::hotkey(str, QKeySequence(seq), fncs.value(str));
|
hotkey->show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user