Implement context menu on 'sources' box

This commit is contained in:
jp9000
2014-06-30 01:13:32 -07:00
parent 67440b92b5
commit ff2a2cceb3
4 changed files with 77 additions and 4 deletions

View File

@@ -88,6 +88,12 @@ OBSBasic::OBSBasic(QWidget *parent)
this,
SLOT(SceneItemNameEdited(QWidget*,
QAbstractItemDelegate::EndEditHint)));
removeItemAction = new QAction(QTStr("Remove"), this);
removeItemAction->setShortcut(QKeySequence(Qt::Key_Delete));
connect(removeItemAction, SIGNAL(triggered()),
this, SLOT(RemoveSelectedItem()));
addAction(removeItemAction);
}
static void SaveAudioDevice(const char *name, int channel, obs_data_t parent)
@@ -786,6 +792,25 @@ void OBSBasic::DeactivateAudioSource(OBSSource source)
}
}
void OBSBasic::RemoveSelectedItem()
{
OBSSceneItem item = GetCurrentSceneItem();
if (item) {
obs_source_t source = obs_sceneitem_getsource(item);
const char *name = obs_source_getname(source);
QString text = QTStr("ConfirmRemove.Text");
text.replace("$1", QT_UTF8(name));
QMessageBox::StandardButton button;
button = QMessageBox::question(this,
QTStr("ConfirmRemove.Remove"), text);
if (button == QMessageBox::Yes)
obs_sceneitem_remove(item);
}
}
/* OBS Callbacks */
void OBSBasic::SceneItemAdded(void *data, calldata_t params)
@@ -1211,6 +1236,11 @@ void OBSBasic::on_scenes_currentItemChanged(QListWidgetItem *current,
UNUSED_PARAMETER(prev);
}
void OBSBasic::EditSceneName()
{
ui->scenes->editItem(ui->scenes->currentItem());
}
void OBSBasic::on_scenes_customContextMenuRequested(const QPoint &pos)
{
/* TODO */
@@ -1315,10 +1345,34 @@ void OBSBasic::on_sources_currentItemChanged(QListWidgetItem *current,
UNUSED_PARAMETER(prev);
}
void OBSBasic::EditSceneItemName()
{
ui->sources->editItem(ui->sources->currentItem());
}
void OBSBasic::on_sources_customContextMenuRequested(const QPoint &pos)
{
/* TODO */
UNUSED_PARAMETER(pos);
QListWidgetItem *item = ui->sources->itemAt(pos);
QMenu popup;
QPointer<QMenu> addSourceMenu = CreateAddSourcePopupMenu();
if (addSourceMenu)
popup.addMenu(addSourceMenu);
if (item) {
if (addSourceMenu)
popup.addSeparator();
popup.addAction(QTStr("Rename"), this,
SLOT(EditSceneItemName()));
popup.addAction(removeItemAction);
popup.addMenu(ui->transformMenu);
popup.addSeparator();
popup.addAction(QTStr("Properties"), this,
SLOT(on_actionSourceProperties_triggered()));
}
popup.exec(QCursor::pos());
}
void OBSBasic::AddSource(const char *id)