LSLEditor / LSLEditorCE

Alphons van der Heijden, author of LSLEditor, the great off-line editor and debugging tool for scripting in Second Life, has donated his opus magnum to the free and open source community where it can grow and keep pace with the SL platform!
7 stars 6 forks source link

LSLEditorCE v3 porting TODO list #13

Open jojorne opened 6 years ago

jojorne commented 6 years ago

LSLEditorCE v3 porting TODO list

The aim of this overhaul of the code-base is to make it multi-platform friendly and gain a better insight into the workings of all areas of the code. Hopefully this will lead to removal of any cruft and a leaner code-base.

PS.: Updating the list as we go.

jojorne commented 6 years ago

Multi-platform friendly... Do you have any platform specific in mind?

niel commented 6 years ago

Linux/Mac I haven't used Windows in years, hence the lack of development.

jojorne commented 6 years ago

OK, the app runs on Linux by using Mono but it crashes with Kernel32 and User32 from DllImport. Also, to move to GTK+ (aka GTK# or GTK Core) we need to decouple the logic from the UI.

PS.: Something like this might work to load native libraries.

niel commented 6 years ago

Yeah, currently the app uses a bunch of PInvokes for mouse and similar access from the system libraries. AFAIK Linux has no direct equivalent, but I think I saw that GTK has something we can use for cross-platform.

jojorne commented 6 years ago

OK, MonoDevelop complains about the path to the files in the resources. It just happens to be case sensitive... Also appears that there is no "v7.0A\bin\RC.exe" in linux... does it? What "RC.exe" does anyway?

niel commented 6 years ago

Is that path relative to the repository?

All path and filenames are case sensitive in Linux (and Mac, I believe), whereas Windows is case-insensitive and defaults to Upper-Case. Causes a lot of issues porting windows stuff to Linux, or sharing via SMB :-)

jojorne commented 6 years ago

PR sent to fix the case stuff for linux. ...and a missing button image.

jojorne commented 6 years ago

That is a build event stuff:

lsleditor.csproj

  <PropertyGroup>
    <PreBuildEvent>"$(FrameworkSDKDir)..\v7.0A\Bin\x64\Rc.exe" /r "$(ProjectDir)$(TargetName).rc"</PreBuildEvent>
    <PostBuildEvent>"$(SolutionDir)..\build\AssemblyRevisionIncrementer.exe" /t="$(SolutionDir)Properties\AssemblyInfo.cs"</PostBuildEvent>
  </PropertyGroup>

On Windows "v7.0A\Bin\x64\Rc.exe" was moved.

BTW, "AssemblyRevisionIncrementer.exe" does not support space in path, so I can't save the solution in a directory with space. I could call DOS to fix the path to something like "D:\MyProj\~1\MySolut\~1..." but on Linux...

I'm just doing this for now:

lsleditor.csproj

  <PropertyGroup>
    <PreBuildEvent># "$(FrameworkSDKDir)..\v7.0A\Bin\x64\Rc.exe" /r "$(ProjectDir)$(TargetName).rc"</PreBuildEvent>
    <PostBuildEvent># "$(SolutionDir)..\build\AssemblyRevisionIncrementer.exe" /t="$(SolutionDir)Properties\AssemblyInfo.cs"</PostBuildEvent>
  </PropertyGroup>

Current state on Linux: Compiles: Yes Executes: Crash on windows native methods

niel commented 6 years ago

OK. Remove the RC.exe as I'm pretty certain it is a windows only thing and we'll have to update the build process accordingly. "AssemblyRevisionIncrementer.exe" will probably need to be replaced any way for multi-platform.