Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Work on learning center tutorials #738

Open
wants to merge 82 commits into
base: master
Choose a base branch
from

Conversation

ThomasKroes
Copy link
Contributor

@ThomasKroes ThomasKroes commented Dec 5, 2024

Overview

This onboarding PR extends the current learning center API with tutorial functionality, see the video below.
LearningCenterTutorialsScaled
This video shows how to access the tutorials from the website ánd from within ManiVault Studio

Main contributions

  • Added a bunch of tutorials for basic interaction with ManiVault Studio and two for tSNE and HSNE hyperspectral image analysis
  • Made these tutorials accessible through the website ánd from within ManiVault Studio
  • Added a coupling between website tutorials and the tutorials shown in the application (uses the learning-center.json API from the website)
  • Added core system Tutorial plugin located in: /ManiVault/src/plugins/TutorialPlugin which uses the learning-center.json API from the website to display the tutorial in an embedded browser
  • Plugin-specific tutorials are now available in the plugin learning center
  • Added help menu entries for learning center videos
  • Added help menu entries for learning center tutorials
  • Added tutorials to the learning center page
  • Added tutorials to the start page (when launched, a project is downloaded and started, see video)
  • Extended the functionality of the mv::FileDownloader class with more monitoring member functions and automatic (modal) progress indication
  • Added mv::AbstractProjectManager::openProject(QUrl url,....) to download and open a project (with progress reporting etc.)
  • Allow toggling tutorials section on start page

Added classes and refactors

  • Added mv::LearningCenterTutorialsModel class which contains tutorials from the website and user-added tutorials
  • Added mv::LearningCenterTutorialsFilterModel class which filters an mv::LearningCenterTutorialsModel instance
  • Added mv:::util::LearningCenterTutorial class which contains tutorial properties (can be populated from the website or by the user)
  • Renamed util::Video class to mv::util::LearningCenterVideo to harmonize with the above naming scheme and to be more exact and descriptive
  • Moved classes from the Pages/StartPage to the Pages/Common source group because, from now on, they are also used by the learning center page
  • Added member functions to mv::AbstractHelpManager for adding and retrieving tutorials
  • Added mv::gui::WatchVideoAction which encapsulate video launching behaviour (we might support various types of videos in the future)

Tutorials for built-in plugins

Note: the documentation is available on the website ánd in ManiVault Studio

  • Data hierarchy plugin
  • Data properties plugin
  • Logging plugin, available from within ManiVault Studio (with the tags filter) and not from the website
  • Sample scope plugin, available from within ManiVault Studio (with the tags filter) and not from the website
  • Shared parameters plugin, available from within ManiVault Studio (with the tags filter) and not from the website
  • Tasks plugin, available from within ManiVault Studio (with the tags filter) and not from the website

Bug fixes

Miscellaneous

  • Disables start page project from workspace section (for now)
  • Added Resharper team settings for unified code style conventions
  • Compiles also with MV_PRECOMPILED_HEADERS off
  • Code style improvements where necessary
  • Small refactors
  • Marked some plugin learning center functions deprecated for now (markdown descriptions etc. will perhaps be removed or changed in the future)

Add data hierarchy plugin example GIF's
Add utility functions to embed GIF images in HTML from Qt resources
…data hierarchy documentation is nearing completion
Add data hierarchy plugin example GIF's
Add utility functions to embed GIF images in HTML from Qt resources
…data hierarchy documentation is nearing completion
@ThomasKroes ThomasKroes added the enhancement New feature or request label Dec 5, 2024
@ThomasKroes ThomasKroes self-assigned this Dec 5, 2024
@ThomasKroes ThomasKroes requested a review from alxvth December 18, 2024 09:15
@@ -117,6 +117,7 @@ class CORE_EXPORT PluginFactory : public QObject
* Get the read me markdown file URL
* @return URL of the read me markdown file
*/
[[deprecated("This function is under development and has no effect (yet).")]]
virtual QUrl getReadmeMarkdownUrl() const;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These functions are actually used now, right? Do they still need the deprecated attribute? They cause a bunch of warning during build

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They have largely been superseded by the tutorials, so I am not sure yet what role they will play in the future. I could remove the deprecation warning or remove these functions entirely, what do you think?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the function to just show the Readme of a plugin without an extra tutorial is still very nice. It can server different purposes as well, like mentioning authors and references in the readme vs detailed usage instructions in the tutorial.
I'd be in favor of keeping it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds reasonable. I will turn off the deprecation warnings then!

@alxvth
Copy link
Contributor

alxvth commented Dec 20, 2024

auto readmeMarkdownUrl = QUrl(QString("https://raw.githubusercontent.com%1/master/README.md").arg(githubRepositoryUrl.path()));

PluginFactory::getReadmeMarkdownUrl::L283

It would be good to be able to specify the branch in PluginFactory::getReadmeMarkdownUrl with a similar function like getRepositoryUrl(), e.g. getDefaultBranch(). We have several plugins that are using main instead of master (like the jupyterplugin, PointDataConversionPlugin or UMAP-Plugin.

@ThomasKroes
Copy link
Contributor Author

auto readmeMarkdownUrl = QUrl(QString("https://raw.githubusercontent.com%1/master/README.md").arg(githubRepositoryUrl.path()));

PluginFactory::getReadmeMarkdownUrl::L283

It would be good to be able to specify the branch in PluginFactory::getReadmeMarkdownUrl with a similar function like getRepositoryUrl(), e.g. getDefaultBranch(). We have several plugins that are using main instead of master (like the jupyterplugin, PointDataConversionPlugin or UMAP-Plugin.

Good suggestion, this is implemented now...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
2 participants