2017-06-13 15:16:41 +00:00
|
|
|
// Copyright 2017 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QDialog>
|
|
|
|
#include <QString>
|
2019-03-02 20:47:26 +00:00
|
|
|
#include <QSyntaxHighlighter>
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
#include "Common/Flag.h"
|
|
|
|
#include "InputCommon/ControllerInterface/Device.h"
|
|
|
|
|
|
|
|
class ControlReference;
|
2019-01-06 23:15:00 +00:00
|
|
|
class MappingWidget;
|
2017-06-13 15:16:41 +00:00
|
|
|
class QAbstractButton;
|
|
|
|
class QComboBox;
|
|
|
|
class QDialogButtonBox;
|
2019-03-02 20:47:26 +00:00
|
|
|
class QLineEdit;
|
2019-01-06 23:15:00 +00:00
|
|
|
class QTableWidget;
|
2017-06-13 15:16:41 +00:00
|
|
|
class QVBoxLayout;
|
|
|
|
class QWidget;
|
|
|
|
class QPlainTextEdit;
|
|
|
|
class QPushButton;
|
|
|
|
class QSlider;
|
|
|
|
class QSpinBox;
|
|
|
|
|
|
|
|
namespace ControllerEmu
|
|
|
|
{
|
|
|
|
class EmulatedController;
|
|
|
|
}
|
|
|
|
|
2019-03-02 20:47:26 +00:00
|
|
|
class ControlExpressionSyntaxHighlighter final : public QSyntaxHighlighter
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
ControlExpressionSyntaxHighlighter(QTextDocument* parent, QLineEdit* result);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void highlightBlock(const QString& text) final override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
QLineEdit* const m_result_text;
|
|
|
|
};
|
|
|
|
|
2017-06-13 15:16:41 +00:00
|
|
|
class IOWindow final : public QDialog
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
enum class Type
|
|
|
|
{
|
|
|
|
Input,
|
|
|
|
Output
|
|
|
|
};
|
|
|
|
|
2019-01-06 23:15:00 +00:00
|
|
|
explicit IOWindow(MappingWidget* parent, ControllerEmu::EmulatedController* m_controller,
|
2017-06-13 15:16:41 +00:00
|
|
|
ControlReference* ref, Type type);
|
|
|
|
|
2019-01-06 23:15:00 +00:00
|
|
|
std::shared_ptr<ciface::Core::Device> GetSelectedDevice();
|
|
|
|
|
2017-06-13 15:16:41 +00:00
|
|
|
private:
|
|
|
|
void CreateMainLayout();
|
|
|
|
void ConnectWidgets();
|
2019-03-15 01:27:49 +00:00
|
|
|
void ConfigChanged();
|
2019-01-06 23:15:00 +00:00
|
|
|
void Update();
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
void OnDialogButtonPressed(QAbstractButton* button);
|
|
|
|
void OnDeviceChanged(const QString& device);
|
|
|
|
void OnDetectButtonPressed();
|
2019-02-28 00:10:18 +00:00
|
|
|
void OnTestButtonPressed();
|
2017-06-13 15:16:41 +00:00
|
|
|
void OnRangeChanged(int range);
|
|
|
|
|
2019-01-27 16:35:29 +00:00
|
|
|
void AppendSelectedOption();
|
2017-06-13 15:16:41 +00:00
|
|
|
void UpdateOptionList();
|
|
|
|
void UpdateDeviceList();
|
|
|
|
|
|
|
|
// Main Layout
|
|
|
|
QVBoxLayout* m_main_layout;
|
|
|
|
|
|
|
|
// Devices
|
|
|
|
QComboBox* m_devices_combo;
|
|
|
|
|
|
|
|
// Options
|
2019-01-06 23:15:00 +00:00
|
|
|
QTableWidget* m_option_list;
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
// Range
|
|
|
|
QSlider* m_range_slider;
|
|
|
|
QSpinBox* m_range_spinbox;
|
|
|
|
|
|
|
|
// Shared actions
|
|
|
|
QPushButton* m_select_button;
|
2019-01-27 16:35:29 +00:00
|
|
|
QComboBox* m_operators_combo;
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
// Input actions
|
|
|
|
QPushButton* m_detect_button;
|
2019-01-27 16:35:29 +00:00
|
|
|
QComboBox* m_functions_combo;
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
// Output actions
|
|
|
|
QPushButton* m_test_button;
|
|
|
|
|
|
|
|
// Textarea
|
|
|
|
QPlainTextEdit* m_expression_text;
|
2019-03-02 20:47:26 +00:00
|
|
|
QLineEdit* m_parse_text;
|
2017-06-13 15:16:41 +00:00
|
|
|
|
|
|
|
// Buttonbox
|
|
|
|
QDialogButtonBox* m_button_box;
|
|
|
|
QPushButton* m_clear_button;
|
|
|
|
QPushButton* m_apply_button;
|
|
|
|
|
|
|
|
ControlReference* m_reference;
|
|
|
|
ControllerEmu::EmulatedController* m_controller;
|
|
|
|
|
|
|
|
ciface::Core::DeviceQualifier m_devq;
|
|
|
|
Type m_type;
|
2019-01-06 23:15:00 +00:00
|
|
|
std::shared_ptr<ciface::Core::Device> m_selected_device;
|
2017-06-13 15:16:41 +00:00
|
|
|
};
|