Move some code from header to source. The header has not been removed
entirely so that Qt MOC files can use it.
- Rename GLWidget as SSView and QtGLMainWindow as SSMainWindow.
Passing a local argc variable to QApplication causes the crash and this
was exposed by removing the stylesheet code.
Provide main() for Qt to avoid the constraints with the
InitGui/RunGui/ClearGui interface and ensure that the argc passed to the
QApplication constructor exists for the life of the object.
This will fix https://github.com/solvespace/solvespace/issues/1067 by setting
GTK_USE_PORTAL=0 in the Snap package. This will use a file chooser from the
point of view of the application to open and save files, instead of using the
"desktop portal" where the chooser runs outside the snap and the file is
exposed dynamically into the snap at an automatically generated path.
This will allow files used in assemblies to be seen by SolveSpace as being at
their real paths, so the references to them will be saved as proper
relative-path references based on where the files actually are, instead of as
references to where the portal has exposed them.
The downside is that without the portal you can't point the application at
files that *aren't* exposed to the Snap.
Web version crashes when you try to make a constraint. After debugging,
addressed the issue with this PR. Emscripten does some optimization
stuff and ends up dropping certain functions, including the alloacte
function called in solvespace's C++ Unwrap method.
To reproduce/test bug:
- Open the web version
- Create a rectangle
- Create a length constraint on one the rectangle edges
Fix a bug in the `Split` function that would drop a single character
directory name at the end of the path.
Because of the above bug when a directory containing an assembly file had
a name with only one character, the assembly file was saved incorrectly and
the path to the linked files was invalid.
For example if `assembly.slvs` was located in a directory called `a` and
links `subpart.slvs` in the same directory this would result in:
Group.impFileRel=a\subpart.slvs
Which resulted in the linked part not being found when opening next time.
Fixes: #1347
The `Join` method that merges paths used to return an empty path when
either of the paths was empty. This caused problems when opening files
with linked/assembled groups when the current path was relative - for
example when SolveSpace was ran from the command line with a drawing
files (in the same directory) as a parameter e.g. `solvespace assemby.slvs`.
See https://github.com/solvespace/solvespace/pull/1194 for detailed
discussion.
Fixes: #1292
To avoid unnecessary/annoying copies of images added in 2d sketches if they
are marked "construction" they will not be copied when creating solids.
Fixes: #1418
Before marquee selection worked by checking whether the Axis Aligned
Bounding Box of an entity and the selection marquee overlap. This selects
(slanted) line segments even though the marquee did not "touch" them.
To fix this for line segments actually check that the selection marque
intersects the line segment.
...by fixing the logic in KeepRegion() to properly keep/discard
regions where two surfaces coincide.
Now difference works as well as intersection in this respect.
Change inSame to coincSame for clarity.
macOS SolveSpace has the Help menu but it lacks the About menu item in it and instead the way to find the SolveSpace version is to go to SolveSpace > About SolveSpace. This PR updates the issue template to show that.
I have also replaced the `...` with an ellipsis (`…`) as it IMO looks better (can revert this if it doesn't match the menu item on Windows/Linux) and updated the example version to the current SolveSpace version.