songchao's blog

GSoC 2019: Plugin Manager - Work Product

4 years ago • 1 comment

Hi! This post is a summary of my Google Summer of Code project, and it also serves as an introductory material linked in The GSoC project page.

The project is devoted to improving the plugin facility of MuseScore, and more specifically, automating the process of downloading and installing MuseScore plugins. The above project page already gives a good explanation for its purpose.

Demo

This is a video demo demonstrating all major features the project covers.

youtube_video

I began by opening

Read more

GSoC 2019: Plugin Manager (Week 12)

4 years ago • 1 comment

This week I still managed to add more comments and do more code cleaning. I must admit these were not done completely in previous days, partially because some functions are being added and renamed.

I did some fixes, too. One small but interesting one among them is, the space between the following QLabel and QTextEdit, was not constant when we switched between plugin items and package items. I fixed this by setting a minimum width value to the QLabel on

Read more

GSoC 2019: Plugin Manager (Week 11)

4 years ago • 0 comments

We are going into the final week.

What I've done

  • A small improvement in download link analysis.
    One more aspect of compatibility hint is added and checked, which makes the fetching procedure more stable.

  • Remove the __MACOSX folder in some downloaded archives when installing plugins.
    The folder exists in some archives generated by Mac computers, and is unwanted in Windows, (and I guess, unwanted in Mac, too...), and causes an incorrect item displayed in Plugin Manager's tree widget.

Also, I

Read more

GSoC 2019: Plugin Manager (Week 10)

4 years ago • 9 comments

In this week, a few improvements are added:

  • Disable the "Uninstall" button when updating plugins, because the operation may cause crashes.

  • Add "OK" and "Cancel" buttons. So the plugin manager tab's UI is completely the same as the old (and removed) one now. Those buttons are placed only in the plugin manager tab at the right bottom. As before, the "Cancel" button, the close button abandon current changes in Plugin Manager, and the "OK" button accepts them.

    [inline:newUI.png]

What to

Read more

GSoC 2019: Plugin Manager (Week 9)

4 years ago • 0 comments

This week's work involves a lot of bug fixing, refining and code cleaning. Some notable work includes:

  1. I made DownloadUtils cancellable by adding a slot function cancel() that can abort the download process. This is useful when for example, we're closing Resource Manager and the threads that are loading metadata haven't finished, especially when the Internet is slow and we don't want that thread to keep occupied in the thread pool.
    Here it's important to distinguish threads for different purposes

Read more

GSoC 2019: Plugin Manager (Week 8)

4 years ago • 0 comments

Hi!

I have smoothly finished what I planned to do last week:

  1. Background fetching metadata about plugins, extensions and languages. The resource manager launches much faster now, and the user is now able to operate on installed plugins no matter whether the plugin store, languages or extensions finish loading.
    [inline:loading2.gif]

  2. Displaying plugin package descriptions. The descriptions are fetched from each plugin's detail page. And only the specific HTML div section is fetched.
    [inline:description.gif]

Besides, I had to deal with several

Read more

GSoC 2019: Plugin Manager (Week 7)

4 years ago • 0 comments

The past week was probably not so productive, since I have been busy with moving into my new college dorm… So no new features were added, and I mainly worked on bug fixes and code cleaning.

What I've done

  • Code cleaning. The unused old plugin manager is completely removed. And most plugin related codes in resource manager also got moved into the new plugin manager. The resource manager now only handles displaying of plugins from repo, refreshing buttons' status, and

Read more

GSoC 2019: Plugin Manager (Week 6)

4 years ago • 0 comments

During the last week, I have been working on local plugin management. Though it essentially means moving the original plugin manager inside the resource manager, it took me more time than expected, since lots of code refactoring is needed. So now the complete workflow of installing and enabling a plugin can be achieved in the resource manager, and later we could make this even simpler by automagically enabling the plugin after getting installed.

A demo

the gif is a bit

Read more

GSoC 2019: Plugin Manager (Week 5)

4 years ago • 2 comments

What I've done

This week I focused on the multi-thread facility and relevant features. Now, multiple downloading, installing and checking for update processes can run simultaneously. This greatly improves the speed, as shown in the demo below:

A demo

[inline:parallel.gif]

The implementation uses a thread pool that Qt provides, and allows a certain number of threads working for each plugin. The number of threads depends on your CPU's thread count.

There're also some other small feautres I've added:

  • Abort install

Read more

GSoC 2019: Plugin Manager (Week 4)

4 years ago • 2 comments

Hi!

What I've done

Good news comes first: I'm pleased to say: after many manual tests, our auto-updater is now able to correctly fetch almost all 3.x-compatible plugins in the repository. However, 3 plugins still fail to be download and I believe it's the incorrect format of those plugins rather than the auto-updater's fault that causes the failure.

In addition to testing, I also did some pre-research on the multi-threading facilities in Qt.

Currently, analyzing, downloading plugins and checking for

Read more