Implement context menu on 'sources' box
parent
67440b92b5
commit
ff2a2cceb3
|
@ -10,6 +10,7 @@ Yes="Yes"
|
|||
No="No"
|
||||
Add="Add"
|
||||
Remove="Remove"
|
||||
Rename="Rename"
|
||||
Properties="Properties"
|
||||
MoveUp="Move Up"
|
||||
MoveDown="Move Down"
|
||||
|
@ -26,6 +27,10 @@ NameExists.Text="The name is already in use."
|
|||
|
||||
NoNameEntered="Please enter a valid name"
|
||||
|
||||
# confirm delete dialog box
|
||||
ConfirmRemove.Title="Confirm Remove"
|
||||
ConfirmRemove.Text="Are you sure you wish to remove '$1'?"
|
||||
|
||||
# output connect messages
|
||||
Output.ConnectFail.Title="Failed to connect"
|
||||
Output.ConnectFail.BadPath="Invalid Path or Connection URL. Please check your settings to confirm that they are valid."
|
||||
|
|
|
@ -152,6 +152,9 @@
|
|||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
|
@ -257,6 +260,9 @@
|
|||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
|
@ -467,7 +473,7 @@
|
|||
<property name="title">
|
||||
<string>Basic.MainMenu.Edit</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuBasic_MainMenu_Edit_Transform">
|
||||
<widget class="QMenu" name="transformMenu">
|
||||
<property name="title">
|
||||
<string>Basic.MainMenu.Edit.Transform</string>
|
||||
</property>
|
||||
|
@ -488,7 +494,7 @@
|
|||
<addaction name="actionUndo"/>
|
||||
<addaction name="actionRedo"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="menuBasic_MainMenu_Edit_Transform"/>
|
||||
<addaction name="transformMenu"/>
|
||||
</widget>
|
||||
<addaction name="menu_File"/>
|
||||
<addaction name="menuBasic_MainMenu_Edit"/>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QBuffer>
|
||||
#include <QAction>
|
||||
#include <obs.hpp>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
@ -60,6 +61,8 @@ private:
|
|||
|
||||
QNetworkAccessManager networkManager;
|
||||
|
||||
QPointer<QAction> removeItemAction;
|
||||
|
||||
QBuffer logUploadPostData;
|
||||
QNetworkReply *logUploadReply = nullptr;
|
||||
QByteArray logUploadReturnData;
|
||||
|
@ -145,6 +148,8 @@ private slots:
|
|||
void ActivateAudioSource(OBSSource source);
|
||||
void DeactivateAudioSource(OBSSource source);
|
||||
|
||||
void RemoveSelectedItem();
|
||||
|
||||
private:
|
||||
/* OBS Callbacks */
|
||||
static void SceneItemAdded(void *data, calldata_t params);
|
||||
|
@ -244,6 +249,9 @@ private slots:
|
|||
|
||||
void AddSourceFromAction();
|
||||
|
||||
void EditSceneName();
|
||||
void EditSceneItemName();
|
||||
|
||||
void SceneNameEdited(QWidget *editor,
|
||||
QAbstractItemDelegate::EndEditHint endHint);
|
||||
void SceneItemNameEdited(QWidget *editor,
|
||||
|
|
Loading…
Reference in New Issue