#pragma once #include "domain/control_logic_model.h" #include #include class QComboBox; class QSpinBox; namespace Ui { class LogicInstructionDialog; } class LogicInstructionDialog final : public QDialog { Q_OBJECT public: explicit LogicInstructionDialog( const LogicNodeConfig &config, QWidget *parent = nullptr); ~LogicInstructionDialog() override; LogicNodeConfig config() const; private: void configureCounter(const CounterNodeConfig &config); void configureMove(const MoveNodeConfig &config); void configureArithmetic(const ArithmeticNodeConfig &config); void updateOperandRanges(); static void setOperand( QComboBox *kind_combo, QSpinBox *value_spin, const WordOperand &operand); static WordOperand operandFrom( const QComboBox *kind_combo, const QSpinBox *value_spin); std::unique_ptr ui_; LogicNodeConfig original_config_; };