CUAHSI / HydroDesktop

HydroDesktop is a free and open source GIS enabled desktop application that helps you search for, download, visualize, and analyze hydrologic and climate data registered with the CUAHSI Hydrologic Information System. HydroDesktop is part of the legacy CUAHSI toolkit and is not under active development. Click the "releases" link below to download the latest installer for Microsoft Windows.
73 stars 20 forks source link

Make All Plugins Mono Compatible #104

Open xhqiao89 opened 6 years ago

xhqiao89 commented 6 years ago

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.

xhqiao89 commented 6 years ago

cuylerfris[CodePlex]
marking as active