mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Cleanup ItemSettingsDialog and ItemSelection
* Added option to configure name conflict locale * Fixed some locale options not being displayed properly due to missing obs_module_text() calls and name conflicts not being handled properly. * No longer force a fixed width * Added option to hide the rename context menu entry * Use locale for invalid connection and variable selection string
This commit is contained in:
parent
49e8bf7639
commit
07b86dda41
|
|
@ -1030,6 +1030,7 @@ AdvSceneSwitcher.macroSegmentSelection.invalid="Invalid selection!"
|
|||
AdvSceneSwitcher.variable.select="--select variable--"
|
||||
AdvSceneSwitcher.variable.add="Add new variable"
|
||||
AdvSceneSwitcher.variable.configure="Configure variable settings"
|
||||
AdvSceneSwitcher.variable.invalid="Invalid varialbe selection"
|
||||
AdvSceneSwitcher.variable.name="Name:"
|
||||
AdvSceneSwitcher.variable.value="Current value:"
|
||||
AdvSceneSwitcher.variable.save="Save / load behavior"
|
||||
|
|
@ -1040,6 +1041,7 @@ AdvSceneSwitcher.variable.save.default="Set to value"
|
|||
AdvSceneSwitcher.connection.select="--select connection--"
|
||||
AdvSceneSwitcher.connection.add="Add new connection"
|
||||
AdvSceneSwitcher.connection.configure="Configure connection settings"
|
||||
AdvSceneSwitcher.connection.invalid="Invalid connection selection"
|
||||
AdvSceneSwitcher.connection.name="Name:"
|
||||
AdvSceneSwitcher.connection.useCustomURI="Use custom URI"
|
||||
AdvSceneSwitcher.connection.customURI="Address:"
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ std::string GetWeakConnectionName(std::weak_ptr<Connection> connection)
|
|||
{
|
||||
auto con = connection.lock();
|
||||
if (!con) {
|
||||
return "invalid connection selection";
|
||||
return obs_module_text("AdvSceneSwitcher.connection.invalid");
|
||||
}
|
||||
return con->Name();
|
||||
}
|
||||
|
|
@ -248,6 +248,7 @@ ConnectionSelection::ConnectionSelection(QWidget *parent)
|
|||
AskForSettingsWrapper,
|
||||
"AdvSceneSwitcher.connection.select",
|
||||
"AdvSceneSwitcher.connection.add",
|
||||
"AdvSceneSwitcher.item.nameNotAvailable",
|
||||
"AdvSceneSwitcher.connection.configure", parent)
|
||||
{
|
||||
// Connect to slots
|
||||
|
|
@ -297,7 +298,8 @@ ConnectionSettingsDialog::ConnectionSettingsDialog(QWidget *parent,
|
|||
const Connection &settings)
|
||||
: ItemSettingsDialog(settings, switcher->connections,
|
||||
"AdvSceneSwitcher.connection.select",
|
||||
"AdvSceneSwitcher.connection.add", parent),
|
||||
"AdvSceneSwitcher.connection.add",
|
||||
"AdvSceneSwitcher.item.nameNotAvailable", parent),
|
||||
_useCustomURI(new QCheckBox()),
|
||||
_customUri(new QLineEdit()),
|
||||
_address(new QLineEdit()),
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ static bool ItemNameAvailable(const std::string &name,
|
|||
ItemSelection::ItemSelection(std::deque<std::shared_ptr<Item>> &items,
|
||||
CreateItemFunc create, SettingsCallback callback,
|
||||
std::string_view select, std::string_view add,
|
||||
std::string_view conflict,
|
||||
std::string_view configureTooltip, QWidget *parent)
|
||||
: QWidget(parent),
|
||||
_selection(new FilterComboBox(this, obs_module_text(select.data()))),
|
||||
|
|
@ -54,7 +55,8 @@ ItemSelection::ItemSelection(std::deque<std::shared_ptr<Item>> &items,
|
|||
_askForSettings(callback),
|
||||
_items(items),
|
||||
_selectStr(select),
|
||||
_addStr(add)
|
||||
_addStr(add),
|
||||
_conflictStr(conflict)
|
||||
{
|
||||
_modify->setMaximumWidth(22);
|
||||
SetButtonIcon(_modify, ":/settings/images/settings/general.svg");
|
||||
|
|
@ -94,6 +96,11 @@ void ItemSelection::SetItem(const std::string &item)
|
|||
}
|
||||
}
|
||||
|
||||
void ItemSelection::ShowRenameContextMenu(bool value)
|
||||
{
|
||||
_showRenameContextMenu = value;
|
||||
}
|
||||
|
||||
void ItemSelection::ChangeSelection(const QString &sel)
|
||||
{
|
||||
if (sel == obs_module_text(_addStr.data())) {
|
||||
|
|
@ -139,12 +146,14 @@ void ItemSelection::ModifyButtonClicked()
|
|||
};
|
||||
|
||||
QMenu menu(this);
|
||||
|
||||
QAction *action = new QAction(
|
||||
obs_module_text("AdvSceneSwitcher.item.rename"), &menu);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(RenameItem()));
|
||||
action->setProperty("connetion", QVariant::fromValue(item));
|
||||
menu.addAction(action);
|
||||
QAction *action;
|
||||
if (_showRenameContextMenu) {
|
||||
action = new QAction(
|
||||
obs_module_text("AdvSceneSwitcher.item.rename"), &menu);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(RenameItem()));
|
||||
action->setProperty("item", QVariant::fromValue(item));
|
||||
menu.addAction(action);
|
||||
}
|
||||
|
||||
action = new QAction(obs_module_text("AdvSceneSwitcher.item.remove"),
|
||||
&menu);
|
||||
|
|
@ -162,7 +171,7 @@ void ItemSelection::ModifyButtonClicked()
|
|||
void ItemSelection::RenameItem()
|
||||
{
|
||||
QAction *action = reinterpret_cast<QAction *>(sender());
|
||||
QVariant variant = action->property("connetion");
|
||||
QVariant variant = action->property("item");
|
||||
Item *item = variant.value<Item *>();
|
||||
|
||||
std::string name;
|
||||
|
|
@ -174,12 +183,13 @@ void ItemSelection::RenameItem()
|
|||
return;
|
||||
}
|
||||
if (name.empty()) {
|
||||
DisplayMessage("AdvSceneSwitcher.item.emptyName");
|
||||
DisplayMessage(
|
||||
obs_module_text("AdvSceneSwitcher.item.emptyName"));
|
||||
return;
|
||||
}
|
||||
if (_selection->currentText().toStdString() != name &&
|
||||
!ItemNameAvailable(name, _items)) {
|
||||
DisplayMessage("AdvSceneSwitcher.item.nameNotAvailable");
|
||||
DisplayMessage(obs_module_text(_conflictStr.data()));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -245,7 +255,9 @@ Item *ItemSelection::GetCurrentItem()
|
|||
ItemSettingsDialog::ItemSettingsDialog(const Item &settings,
|
||||
std::deque<std::shared_ptr<Item>> &items,
|
||||
std::string_view select,
|
||||
std::string_view add, QWidget *parent)
|
||||
std::string_view add,
|
||||
std::string_view nameConflict,
|
||||
QWidget *parent)
|
||||
: QDialog(parent),
|
||||
_name(new QLineEdit()),
|
||||
_nameHint(new QLabel),
|
||||
|
|
@ -253,18 +265,20 @@ ItemSettingsDialog::ItemSettingsDialog(const Item &settings,
|
|||
QDialogButtonBox::Cancel)),
|
||||
_items(items),
|
||||
_selectStr(select),
|
||||
_addStr(add)
|
||||
_addStr(add),
|
||||
_conflictStr(nameConflict)
|
||||
{
|
||||
setModal(true);
|
||||
setWindowModality(Qt::WindowModality::WindowModal);
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
setFixedWidth(555);
|
||||
setMinimumWidth(555);
|
||||
setMinimumHeight(100);
|
||||
|
||||
_buttonbox->setCenterButtons(true);
|
||||
_buttonbox->button(QDialogButtonBox::Ok)->setDisabled(true);
|
||||
|
||||
_name->setText(QString::fromStdString(settings._name));
|
||||
_originalName = QString::fromStdString(settings._name);
|
||||
_name->setText(_originalName);
|
||||
|
||||
QWidget::connect(_name, SIGNAL(textEdited(const QString &)), this,
|
||||
SLOT(NameChanged(const QString &)));
|
||||
|
|
@ -279,9 +293,8 @@ ItemSettingsDialog::ItemSettingsDialog(const Item &settings,
|
|||
void ItemSettingsDialog::NameChanged(const QString &text)
|
||||
{
|
||||
|
||||
if (text != _name->text() && !ItemNameAvailable(text, _items)) {
|
||||
SetNameWarning(obs_module_text(
|
||||
"AdvSceneSwitcher.item.nameNotAvailable"));
|
||||
if (text != _originalName && !ItemNameAvailable(text, _items)) {
|
||||
SetNameWarning(obs_module_text(_conflictStr.data()));
|
||||
return;
|
||||
}
|
||||
if (text.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -36,10 +36,13 @@ class ItemSettingsDialog : public QDialog {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ItemSettingsDialog(const Item &, std::deque<std::shared_ptr<Item>> &,
|
||||
std::string_view = "AdvSceneSwitcher.item.select",
|
||||
std::string_view = "AdvSceneSwitcher.item.select",
|
||||
QWidget *parent = 0);
|
||||
ItemSettingsDialog(
|
||||
const Item &, std::deque<std::shared_ptr<Item>> &,
|
||||
std::string_view selectString = "AdvSceneSwitcher.item.select",
|
||||
std::string_view addString = "AdvSceneSwitcher.item.add",
|
||||
std::string_view conflictString =
|
||||
"AdvSceneSwitcher.item.nameNotAvailable",
|
||||
QWidget *parent = 0);
|
||||
virtual ~ItemSettingsDialog() = default;
|
||||
|
||||
private slots:
|
||||
|
|
@ -54,6 +57,8 @@ protected:
|
|||
std::deque<std::shared_ptr<Item>> &_items;
|
||||
std::string_view _selectStr;
|
||||
std::string_view _addStr;
|
||||
std::string_view _conflictStr;
|
||||
QString _originalName;
|
||||
};
|
||||
|
||||
typedef bool (*SettingsCallback)(QWidget *, Item &);
|
||||
|
|
@ -68,9 +73,12 @@ public:
|
|||
SettingsCallback,
|
||||
std::string_view selectString = "AdvSceneSwitcher.item.select",
|
||||
std::string_view addString = "AdvSceneSwitcher.item.add",
|
||||
std::string_view conflictString =
|
||||
"AdvSceneSwitcher.item.nameNotAvailable",
|
||||
std::string_view configureTooltip = "", QWidget *parent = 0);
|
||||
virtual ~ItemSelection() = default;
|
||||
void SetItem(const std::string &);
|
||||
void ShowRenameContextMenu(bool value);
|
||||
|
||||
private slots:
|
||||
void ModifyButtonClicked();
|
||||
|
|
@ -96,6 +104,8 @@ protected:
|
|||
std::deque<std::shared_ptr<Item>> &_items;
|
||||
std::string_view _selectStr;
|
||||
std::string_view _addStr;
|
||||
std::string_view _conflictStr;
|
||||
bool _showRenameContextMenu = true;
|
||||
};
|
||||
|
||||
} // namespace advss
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ std::string GetWeakVariableName(std::weak_ptr<Variable> var_)
|
|||
{
|
||||
auto var = var_.lock();
|
||||
if (!var) {
|
||||
return "invalid variable selection";
|
||||
return obs_module_text("AdvSceneSwitcher.variable.invalid");
|
||||
}
|
||||
return var->Name();
|
||||
}
|
||||
|
|
@ -164,7 +164,8 @@ VariableSettingsDialog::VariableSettingsDialog(QWidget *parent,
|
|||
const Variable &settings)
|
||||
: ItemSettingsDialog(settings, switcher->variables,
|
||||
"AdvSceneSwitcher.variable.select",
|
||||
"AdvSceneSwitcher.variable.add", parent),
|
||||
"AdvSceneSwitcher.variable.add",
|
||||
"AdvSceneSwitcher.item.nameNotAvailable", parent),
|
||||
_value(new ResizingPlainTextEdit(this)),
|
||||
_defaultValue(new ResizingPlainTextEdit(this)),
|
||||
_save(new QComboBox())
|
||||
|
|
@ -248,6 +249,7 @@ VariableSelection::VariableSelection(QWidget *parent)
|
|||
AskForSettingsWrapper,
|
||||
"AdvSceneSwitcher.variable.select",
|
||||
"AdvSceneSwitcher.variable.add",
|
||||
"AdvSceneSwitcher.item.nameNotAvailable",
|
||||
"AdvSceneSwitcher.variable.configure", parent)
|
||||
{
|
||||
// Connect to slots
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user