Skip to content

Commit

Permalink
Merge pull request #5194 from dmitrio95/plugins-menu-issues
Browse files Browse the repository at this point in the history
Plugins menu issues
  • Loading branch information
dmitrio95 committed Jul 3, 2019
2 parents e7ad592 + e9dca95 commit 36688fc
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 30 deletions.
2 changes: 2 additions & 0 deletions mscore/musescore.cpp
Expand Up @@ -2053,6 +2053,7 @@ void MuseScore::updateMenus()
connect(openRecent, SIGNAL(triggered(QAction*)), SLOT(selectScore(QAction*)));
connect(menuWorkspaces, SIGNAL(aboutToShow()), SLOT(showWorkspaceMenu()));
setMenuTitles();
addPluginMenuEntries();
}

//---------------------------------------------------------
Expand Down Expand Up @@ -6643,6 +6644,7 @@ void MuseScore::showSearchDialog()

#ifndef SCRIPT_INTERFACE
void MuseScore::pluginTriggered(int) {}
void MuseScore::pluginTriggered(QString path) {}
void MuseScore::loadPlugins() {}
bool MuseScore::loadPlugin(const QString&) { return false;}
void MuseScore::unloadPlugins() {}
Expand Down
3 changes: 2 additions & 1 deletion mscore/musescore.h
Expand Up @@ -363,7 +363,6 @@ class MuseScore : public QMainWindow, public MuseScoreCore {

QTimer* autoSaveTimer;
QList<QAction*> pluginActions;
QSignalMapper* pluginMapper { 0 };

PianorollEditor* pianorollEditor { 0 };
DrumrollEditor* drumrollEditor { 0 };
Expand Down Expand Up @@ -572,6 +571,7 @@ class MuseScore : public QMainWindow, public MuseScoreCore {
void dirtyChanged(Score*);
void setPos(const Fraction& tick);
void pluginTriggered(int);
void pluginTriggered(QString path);
void handleMessage(const QString& message);
void setCurrentScoreView(ScoreView*);
void setCurrentScoreView(int);
Expand Down Expand Up @@ -654,6 +654,7 @@ class MuseScore : public QMainWindow, public MuseScoreCore {
virtual void setCurrentView(int tabIdx, int idx);
void loadPlugins();
void unloadPlugins();
void addPluginMenuEntries();

ScoreState state() const { return _sstate; }
void changeState(ScoreState);
Expand Down
39 changes: 19 additions & 20 deletions mscore/plugin/mscorePlugins.cpp
Expand Up @@ -116,9 +116,7 @@ void MuseScore::registerPlugin(PluginDescription* plugin)

QAction* a = plugin->shortcut.action();
pluginActions.append(a);
int pluginIdx = plugins.size() - 1; // plugin is already appended
connect(a, SIGNAL(triggered()), pluginMapper, SLOT(map()));
pluginMapper->setMapping(a, pluginIdx);
connect(a, &QAction::triggered, mscore, [_pluginPath]() { mscore->pluginTriggered(_pluginPath); });

delete obj;
}
Expand Down Expand Up @@ -151,9 +149,7 @@ void MuseScore::unregisterPlugin(PluginDescription* plugin)
QAction* a = plugin->shortcut.action();
pluginActions.removeAll(a);

disconnect(a, SIGNAL(triggered()), pluginMapper, SLOT(map()));
pluginMapper->removeMappings(a);

disconnect(a, 0, mscore, 0);
}

//---------------------------------------------------------
Expand All @@ -163,9 +159,6 @@ void MuseScore::unregisterPlugin(PluginDescription* plugin)

void MuseScore::createMenuEntry(PluginDescription* plugin)
{
if (!pluginMapper)
return;

QString menu = plugin->menuPath;
QStringList ml;
QString s;
Expand Down Expand Up @@ -250,12 +243,21 @@ void MuseScore::createMenuEntry(PluginDescription* plugin)
}
}

//---------------------------------------------------------
// addPluginMenuEntries
//---------------------------------------------------------

void MuseScore::removeMenuEntry(PluginDescription* plugin)
void MuseScore::addPluginMenuEntries()
{
if (!pluginMapper)
return;
for (int i = 0; i < pluginManager->pluginCount(); ++i) {
PluginDescription* d = pluginManager->getPluginDescription(i);
if (d->load)
createMenuEntry(d);
}
}

void MuseScore::removeMenuEntry(PluginDescription* plugin)
{
QString menu = plugin->menuPath;
QStringList ml;
QString s;
Expand Down Expand Up @@ -340,8 +342,6 @@ int MuseScore::pluginIdxFromPath(QString _pluginPath) {

void MuseScore::loadPlugins()
{
pluginMapper = new QSignalMapper(this);
connect(pluginMapper, SIGNAL(mapped(int)), SLOT(pluginTriggered(int)));
for (int i = 0; i < pluginManager->pluginCount(); ++i) {
PluginDescription* d = pluginManager->getPluginDescription(i);
if (d->load)
Expand All @@ -368,11 +368,6 @@ bool MuseScore::loadPlugin(const QString& filename)
{
bool result = false;

if (!pluginMapper) {
pluginMapper = new QSignalMapper(this);
connect(pluginMapper, SIGNAL(mapped(int)), SLOT(pluginTriggered(int)));
}

QDir pluginDir(mscoreGlobalShare + "plugins");
if (MScore::debugMode)
qDebug("Plugin Path <%s>", qPrintable(mscoreGlobalShare + "plugins"));
Expand Down Expand Up @@ -400,8 +395,12 @@ bool MuseScore::loadPlugin(const QString& filename)

void MuseScore::pluginTriggered(int idx)
{
QString pp = plugins[idx];
if (plugins.size() > idx)
pluginTriggered(plugins[idx]);
}

void MuseScore::pluginTriggered(QString pp)
{
QQmlEngine* engine = getPluginEngine();

QQmlComponent component(engine);
Expand Down
39 changes: 30 additions & 9 deletions mscore/workspace.cpp
Expand Up @@ -501,12 +501,18 @@ void Workspace::writeMenuBar(XmlWriter& xml, QMenuBar* mb)
if (action->isSeparator())
xml.tag("action", "");
else if (action->menu()) {
xml.stag("Menu name=\"" + findStringFromMenu(action->menu()) + "\"");
writeMenu(xml, action->menu());
xml.etag();
const QString menuString = findStringFromMenu(action->menu());
if (!menuString.isEmpty()) {
xml.stag("Menu name=\"" + menuString + "\"");
writeMenu(xml, action->menu());
xml.etag();
}
}
else {
const QString actionString = findStringFromAction(action);
if (!actionString.isEmpty())
xml.tag("action", actionString);
}
else
xml.tag("action", findStringFromAction(action));

}
xml.etag();
Expand All @@ -523,12 +529,17 @@ void Workspace::writeMenu(XmlWriter& xml, QMenu* menu)
if (action->isSeparator())
xml.tag("action", "");
else if (action->menu()) {
xml.stag("Menu name=\"" + findStringFromMenu(action->menu()) + "\"");
writeMenu(xml, action->menu());
xml.etag();
const QString menuString = findStringFromMenu(action->menu());
if (!menuString.isEmpty()) {
xml.stag("Menu name=\"" + menuString + "\"");
writeMenu(xml, action->menu());
xml.etag();
}
}
else {
xml.tag("action", findStringFromAction(action));
const QString actionString = findStringFromAction(action);
if (!actionString.isEmpty())
xml.tag("action", actionString);
}
}
}
Expand Down Expand Up @@ -693,6 +704,11 @@ void Workspace::read(XmlReader& e)
else if (tag == "MenuBar") {
saveMenuBar = true;
QMenuBar* mb = mscore->menuBar();
const QObjectList menus(mb->children()); // need a copy
for (QObject* m : menus) {
if (qobject_cast<QMenu*>(m))
delete m;
}
mb->clear();
menuToStringList.clear();
while (e.readNextStartElement()) {
Expand Down Expand Up @@ -791,6 +807,11 @@ void Workspace::readGlobalMenuBar()
while (e.readNextStartElement()) {
if (e.name() == "MenuBar") {
QMenuBar* mb = mscore->menuBar();
const QObjectList menus(mb->children()); // need a copy
for (QObject* m : menus) {
if (qobject_cast<QMenu*>(m))
delete m;
}
mb->clear();
menuToStringList.clear();
while (e.readNextStartElement()) {
Expand Down

0 comments on commit 36688fc

Please sign in to comment.