Make All Plugins Mono Compatible
- Dominant language
- C#
- Stars
- 76
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
shieldst[CodePlex]
Background
Since HydroDesktop is largely composed of Plugins, it makes sense to make the transition to Mono one piece at a time.
Some plugins, just by being loaded at run-time, cause problems in HydroDesktop when running on Mac. This means that we needed a way to exclude certain plugins on Mono while still including them on Windows. We handle this by creating two new folders next to
HydroDesktop.exe: quotMono Extensionsquot and quotWindows Extensionsquot. Those plugins that cause problems on Mono are set to build to Windows Extensions, and those plugins that might be Mono specific (such as a simplified HeaderControl) will be built
to Mono Extensions.
We decide which folder to look in at run-time with the following code from AppManager.cs (in DotSpatial.Controls):
public IEnumerableltstringgt GetDirectoriesNestedOneLevel()
{
// Visit each directory in Directories Property (usually set by application)
if (DotSpatial.Mono.Mono.IsRunningOnMono())
{
Directories.Add(quotMono Extensionsquot);
}
else
{
Directories.Add(quotWindows Extensionsquot);
}
The list below are all plugins that are currently set to build to the Windows Extensions folder. We will want to address these one at a time to either make them Mono-compatible and set them to build to the Application Extensions folder, OR if this is too difficult
then, then consider rewriting a new Mono-specific version of the plugin and keep them separated. (I foresee this being the case with the HeaderControl and DockManager plugins).
Windows-only Plugins
HydroModeler HydroR HydroDesktop.Docking -- (HydroDesktop has a simple alternative called HydroDesktop.Mono.DockManager that can be expanded).
HydroDesktop.HeaderControl -- (HydroDesktop.Mono.HeaderControl exists and needs to be expanded).
These plugins are now included with all version of HydroDesktop, however there are issues with both.
GraphView - See
Issue 8682 EditView - EditView uses ZedGraph as well, so suffers from the same problem described in Issue 8682.
Also see this
HydroDesktop Google Doc.
There is also a similar
Google Doc regarding DotSpatial plugins that is probably of lower priority to the list above.
Task
Convert the above plugins to Mono or create a Mono alternative. Items could be removed from list (and possibly opened in a separate, more specific workitem) as the transition is started or completed.
Related to this task is that sufficient testing of all converted plugins needs to be done on both Windows and Mono.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with AppManager.cs in DotSpatial.Controls and review how Mono Extensions and Windows Extensions are selected. Then choose one listed plugin, such as HydroDesktop.Docking or HydroDesktop.HeaderControl, and inspect its existing Mono alternative or the GraphView and EditView references. Done means the selected plugin is converted or has a Mono alternative and is tested on both Windows and Mono.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100