Introducing New To-Do List and Navigation Plugins

• Aug 28, 2022 - 10:24

Hi all, I've been lurking around these waters for a while and finally decided to write some plugins. These are mainly things inspired from IDE features/extensions for ease of life.

There are currently two projects:

  • MuseScore To-Do List: This finds and lists TODO and FIXME text elements in the current score, and provides a jump button to navigate to the element. Usually when I listen through a score I composed, I might notice several problems and list them in a text file to follow up later. This plugin embeds this idea into MS.
  • MuseScore Navigation: This provides mostly action plugins (no dialog/dock) for navigating to saved (bookmarked) measures and navigating back into the cursor's history. Handy for large scores and when jumping back & forth a lot. (Maybe better to be built-into core functionality itself? Perhaps in MS4?)

I'm planning to make some other plugins as well, so any feedback here would help me improve future plugins too!

Happy Musing!


Comments

Beautiful logic in your bookmark plugin, codes are so clean. The other day I was digging api doc for custom data layer like DOM dataset, your invisible staff text method is nice. Mr. Sabatella do you know whether musescore3 has any custom data layer writable thru api and savable to mscz?

In reply to by msfp

Oo thanks for your comment. Persisting/transferring data across plugins was one of more annoying issues I faced. I used QML Settings to store user-configurable properties (e.g. to-do list regex/case sensitivity) or in general, data which persists across sessions.

However, this was insufficient for transferring data across plugins because of sync issues. (By transferring data, I mean: suppose I have a dock plugin, then I run an action/non-UI-based plugin and need to send something to first plugin.) So instead I (ab)used score properties and it ended up working. :P

In reply to by TrebledJ

Thanks for the QML Settings tips, I'm gonna try it out later.
For data sharing across plugins, @dmitrio95 released some code involving singleton last year. Crawled the web, cannot figure out how to use it. How do you install them? Do you know any plugins use similar singleton code?
I saw a plugin use timer to do something similar to sharing, but I'm put off, fear such logic would cause bug later on.

In reply to by msfp

I use the QML.labs.Settings object only for plugin-related settings; anything score-related goes into the score metadata. Feel free to look at any of my exporter plugins or the DailyLog one (or the older reset dialogpositions one) to see possible usages of it.

Do you still have an unanswered question? Please log in first to post your question.