GSoC 2023 - Text Style Popup

Posted 6 months ago

During my participation in the Google Summer of Code (GSoC) program, I had the privilege of collaborating with the MuseScore team on an exciting project known as the Text Style Popup. This project aimed to enhance the text editing experience in MuseScore by adding most of the text properties to a popup that hovers over the text, providing a seamless and intuitive editing process.
See my proposal for further details

Code Changes

My contributions to the project can be seen in the following pull request:

Pull Request (ocotopol/textStyleWidget)

This pull request includes several commits tha represent the incremental progress made during the development of the Text Style Popup.

Commits Overview

  • c0f3db8 - Added new files
  • afcddfb - Added subclass
  • 683b631 - Added constructor TextStylePopupModel(QObject* parent)
  • f75e5fd - Added updatePosition function in TextStylePopup
  • 133cad9 - Implemented TextStylePopup's Interface
    • Added TextStylePopupModel to the notation module.
    • Completed the basic interface for TextStylePopup.
  • 0f53c28 - Update TextStylePopup.qml
  • f006f36 - Added inserting symbols through the popup
    • Added inserting symbols through the popup.
    • Fixed the width of the `Add symbols`, `Text style` and `Frame` Button.
    • Added a new QML for the text style popup.
  • e445252 - Updated the updatePosition function in response to PR #18738.
    • Updated the popup's position function to work as intended.
  • 5f83b3a - Moved Popup System to Inspector module
    • Shifted popup system to Inspector Module, added an interface for improved modularity and organization.
  • 4e34238 - Added TextSettingsModel as Member of TextStylePopupModel
  • 2ac9bd3 - Added Functionality to the popup
    • Added functionality to the popup
    • Moved `ElementPopupLoader` back to the root folder of `Inspector` module
    • Removed unnecessary lines of code
  • 2ac9bd3 - Added keyboard navigation to the main Popup
    • Added keyboard navigation to the main popup.
    • Fixes
  • 556e763 - Added Keyboard Navigation to Popups
    • This commit adds keyboard navigation support to the `FrameSubPopup.qml` and `TextStyleSubPopup.qml`, improving
      user accessibility and interaction.This commit adds keyboard navigation support to the `FrameSubPopup.qml` and `TextStyleSubPopup.qml`,
      improving user accessibility and interaction.
  • Project Progress

    Throughout the summer, I took on the ambitious task of implementing the Text Style Popup feature. Today, I'm thrilled to present the result of my hard work! This project turned out to be more intricate than we initially expected, necessitating an extension that turned it into an 18-week project.

    Here is the final product.

    Text Style Popup

    Main popup

    Text Style Subopup

    Text Style Subpopup

    Frame Subpop

    Frame Subpop

    Evaluation

    The project faced challenges in fulfilling all aspects outlined in the proposal due to the realization that the main project was considerably more complex than initially anticipated. Despite this, the project successfully completed the primary objective, which was the development of the main text style popup.

    Future Work

    The ongoing work will prioritize addressing an intermittent issue where the main popup fails to launch consistently. Additionally, there are other essential tasks to be undertaken:
    1. Synchronizing secondary popups with the main popup's movement to enhance user experience.
    2. Ensuring that clicks on the dropshadow area of the popup register with elements behind it, improving overall interactivity and usability.

    Connect with Me

    If you'd like to connect with me or explore more
    of my work, you can find me on:


    As I wrap up this project, I want to express my genuine appreciation for the opportunity to work on it for MuseScore. I am immensely thankful to my mentor, Casper, for their unwavering support throughout this endeavor, as well as to all those who contributed to the project's success.