Context menu on empty space in GraphDisplay

Display a context menu allowing to:
Add plugin
Clear graph
This commit is contained in:
Stéphane Cerveau 2017-09-22 22:58:17 +02:00
parent 6440059012
commit 9390e492ef
4 changed files with 35 additions and 6 deletions

View file

@ -516,8 +516,7 @@ GraphDisplay::showContextMenu (QMouseEvent *event)
if (isActive)
pact->setDisabled (true);
pact = new CustomMenuAction ("Request pad...", &menu);
menu.addAction (pact);
menu.addAction (new CustomMenuAction ("Request pad...", &menu));
}
else {
for (std::size_t i = 0; i < m_info.size (); i++) {
@ -565,6 +564,10 @@ GraphDisplay::showContextMenu (QMouseEvent *event)
if (!menu.isEmpty ())
break;
}
if (menu.isEmpty ()) {
menu.addAction (new CustomMenuAction ("Add plugin", &menu));
menu.addAction (new CustomMenuAction ("Clear graph", &menu));
}
}
if (!menu.isEmpty ()) {
@ -589,6 +592,10 @@ GraphDisplay::showContextMenu (QMouseEvent *event)
removeSelected ();
else if (pact->getName () == "ElementName")
connectPlugin (elementId, pact->text ());
else if (pact->getName () == "Add plugin")
addPlugin ();
else if (pact->getName () == "Clear graph")
clearGraph ();
}
}
}
@ -619,6 +626,18 @@ GraphDisplay::removeSelected ()
}
}
void
GraphDisplay::addPlugin ()
{
emit signalAddPlugin();
}
void
GraphDisplay::clearGraph ()
{
emit signalClearGraph();
}
void
GraphDisplay::removePlugin (std::size_t id)
{

View file

@ -29,6 +29,10 @@ public:
private slots:
void addRequestPad(int row, int collumn);
signals:
void signalAddPlugin();
void signalClearGraph();
private:
enum MoveAction
@ -74,6 +78,8 @@ private:
void disconnect(std::size_t elementId, std::size_t padId);
void requestPad(std::size_t elementId);
void connectPlugin(std::size_t elementId, const QString& destElementName);
void addPlugin();
void clearGraph();
ElementInfo* getElement(std::size_t elementId);
PadInfo* getPad(std::size_t elementId, std::size_t padId);

View file

@ -155,6 +155,10 @@ m_pGraph (new GraphManager)
m_menu->addAction ("About pipeviz...", this, SLOT (About ()));
m_pGraphDisplay = new GraphDisplay(this);
connect(m_pGraphDisplay, SIGNAL(signalAddPlugin()),
this, SLOT(AddPlugin()));
connect(m_pGraphDisplay, SIGNAL(signalClearGraph()),
this, SLOT(ClearGraph()));
QScrollArea *pscroll = new QScrollArea;
pscroll->setWidget (m_pGraphDisplay);
@ -238,7 +242,7 @@ MainWindow::OpenMediaFile ()
if (!path.isEmpty ()) {
gchar *uri = gst_filename_to_uri (path.toStdString ().c_str (), NULL);
if (uri) {
LOG_INFO("Open Source file: " + path);;
LOG_INFO("Open Source file: " + path);
m_pGraph->OpenUri (uri, NULL);
g_free (uri);

View file

@ -34,10 +34,11 @@ protected:
void createDockWindows();
public slots:
void InsertLogLine(const QString& line, int category);
void InsertLogLine(const QString& line, int category);
void AddPlugin();
void ClearGraph();
private slots:
void AddPlugin();
void OpenMediaFile();
void OpenMediaUri();
void Play();
@ -50,7 +51,6 @@ private slots:
void SaveAs();
void Open();
void ClearGraph();
void About();
private: