Show current cursor position

This commit is contained in:
WarmUpTill 2021-07-18 17:41:32 +02:00 committed by WarmUpTill
parent 41821cbeb2
commit 7cf7fd6112
3 changed files with 34 additions and 7 deletions

View File

@ -86,7 +86,8 @@ AdvSceneSwitcher.condition.audio.entry="Volume of {{audioSources}} is {{conditio
AdvSceneSwitcher.condition.cursor="Screen region"
AdvSceneSwitcher.condition.cursor.type.region="is in region"
AdvSceneSwitcher.condition.cursor.type.moving="is moving"
AdvSceneSwitcher.condition.cursor.entry="Cursor is {{conditions}} {{minX}} {{minY}} {{maxX}} {{maxY}}"
AdvSceneSwitcher.condition.cursor.entry.line1="Cursor is {{conditions}} {{minX}} {{minY}} {{maxX}} {{maxY}}"
AdvSceneSwitcher.condition.cursor.entry.line2="Cursor is currently at {{xPos}} x {{yPos}}"
AdvSceneSwitcher.condition.scene="Scene"
AdvSceneSwitcher.condition.scene.type.current="Current"
AdvSceneSwitcher.condition.scene.type.previous="Previous"

View File

@ -49,6 +49,7 @@ private slots:
void MinYChanged(int pos);
void MaxXChanged(int pos);
void MaxYChanged(int pos);
void UpdateCursorPos();
protected:
QSpinBox *_minX;
@ -56,9 +57,12 @@ protected:
QSpinBox *_maxX;
QSpinBox *_maxY;
QComboBox *_conditions;
QLabel *_xPos;
QLabel *_yPos;
std::shared_ptr<MacroConditionCursor> _entryData;
private:
void SetRegionSelectionVisible(bool);
QTimer _timer;
bool _loading = true;
};

View File

@ -77,6 +77,8 @@ MacroConditionCursorEdit::MacroConditionCursorEdit(
_minY = new QSpinBox();
_maxX = new QSpinBox();
_maxY = new QSpinBox();
_xPos = new QLabel("-");
_yPos = new QLabel("-");
populateConditionSelection(_conditions);
@ -106,19 +108,32 @@ MacroConditionCursorEdit::MacroConditionCursorEdit(
QWidget::connect(_maxY, SIGNAL(valueChanged(int)), this,
SLOT(MaxYChanged(int)));
QHBoxLayout *mainLayout = new QHBoxLayout;
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
{"{{conditions}}", _conditions},
{"{{minX}}", _minX},
{"{{minY}}", _minY},
{"{{maxX}}", _maxX},
{"{{maxY}}", _maxY}};
placeWidgets(obs_module_text("AdvSceneSwitcher.condition.cursor.entry"),
mainLayout, widgetPlaceholders);
{"{{maxY}}", _maxY},
{"{{xPos}}", _xPos},
{"{{yPos}}", _yPos},
};
QHBoxLayout *line1 = new QHBoxLayout;
placeWidgets(obs_module_text(
"AdvSceneSwitcher.condition.cursor.entry.line1"),
line1, widgetPlaceholders);
QHBoxLayout *line2 = new QHBoxLayout;
placeWidgets(obs_module_text(
"AdvSceneSwitcher.condition.cursor.entry.line2"),
line2, widgetPlaceholders);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(line1);
mainLayout->addLayout(line2);
setLayout(mainLayout);
connect(&_timer, &QTimer::timeout, this,
&MacroConditionCursorEdit::UpdateCursorPos);
_timer.start(1000);
_entryData = entryData;
UpdateEntryData();
_loading = false;
@ -176,6 +191,13 @@ void MacroConditionCursorEdit::MaxYChanged(int pos)
_entryData->_maxY = pos;
}
void MacroConditionCursorEdit::UpdateCursorPos()
{
std::pair<int, int> position = getCursorPos();
_xPos->setText(QString::number(position.first));
_yPos->setText(QString::number(position.second));
}
void MacroConditionCursorEdit::SetRegionSelectionVisible(bool visible)
{
_minX->setVisible(visible);