Commit Graph

965 Commits

Author SHA1 Message Date
robnee
745a12c3c4 permit construction geometry toggle while drawing 2021-02-23 10:13:29 -05:00
ruevs
47c3209b48 Win32: If the main or text window is off-screen make it visible...
...by 1/40th of the scrreen width so that the user can notice it.

This can happen if the window was on a second monitor, which is
disconnected, or if the user knows about `Alt-Space | Move` and then
moving the window with the arrow keys.

Before this, if for example the left edge was off-screen it was moved
to 1920, which is just off-screen, so the window remained invisible.

Fixes: #938
2021-02-18 09:52:25 -05:00
robnee
04e872a61f remember auto-removed constraints for undo 2021-02-16 11:49:32 -05:00
robnee
7795b0bc19 mark group dirty when toggling reference dimension 2021-02-07 18:18:50 -05:00
ruevs
1c5c4c048c Fix a crash when opening an empty file.
Fixes: https://github.com/solvespace/solvespace/issues/918

The problem was that here:
11a8a0abd5/src/file.cpp (L480)
we cleared all groups. Then we tried to read an empty file and therefore this `while` exited immediately:
11a8a0abd5/src/file.cpp (L487)
and we came to here:
11a8a0abd5/src/file.cpp (L548)
where there was no `fileLoadError` and thus we were left with no groups, and so this assert failed:
11a8a0abd5/src/graphicswin.cpp (L394)
since is is not allowed to have no groups :-)
2021-02-03 18:14:29 -05:00
robnee
11a8a0abd5 do not Invalidate() when dragging new points to prevent refresh bugs on Windows 2021-01-30 21:36:54 -05:00
phkahler
ebb194eda6 Add version command to solvespace-cli 2021-01-26 16:57:48 -05:00
Ryan Pavlik
0404cd46ef Standardize how we refer to the other javascript files we include, too. 2021-01-23 11:38:36 -05:00
Ryan Pavlik
d16e33ac48 Update to THREE.js revision 111 as found in Debian Testing
Required some small JavaScript changes to replace deprecated usage.
2021-01-23 11:38:36 -05:00
phkahler
d3951afb12 GTK: Fix a warning for file->open dialogs.
SetCurrentName only applies to save dialogs, so call it conditionally.
2021-01-17 18:07:52 -05:00
ruevs
0adb13c5e8 Change "Dim Solid for Sketch Groups" to "Darken Inactive Solids"
Discussion here:
https://github.com/solvespace/solvespace/issues/890
2021-01-17 13:47:14 -05:00
Jonathan Westhues
76589a8a87 Fix SpaceNavigator type 6DOF controllers on Windows.
We were creating the event but never dispatching it.
2021-01-15 16:50:38 -08:00
phkahler
41c81a71c1 Override minimum displayed digits as needed to avoid showing zero. 2021-01-13 19:56:06 -05:00
ruevs
bd41485ebe
Correct toolbar height calculation (#885)
The toolbar height is

`int fudge = 8;`
`int h = 32*18 + 3*16 + fudge;`

It means 18 icons 32 pixels each and 3 separators 16 pixels each.

`32*18 + 3*16 + 8 = 632`
`36*16 + 3*16 + 8 = 632`

See these correct increases of the toolbar height:
bf4de993cb/toolbar.cpp (L97)
fe2ea5d5e1/toolbar.cpp (L103)
ef5db2132e/src/toolbar.cpp (L112)
ca2aad7fea/src/toolbar.cpp (L145)

And then these incorrect ones:
3e3ccdca8d/src/toolbar.cpp (L156)
https://github.com/ruevs/solvespace/blame/master/src/toolbar.cpp#L160

In addition
https://github.com/ruevs/solvespace/blob/master/src/drawentity.cpp#L618
the point at which the XYZ axis are shifted right so that they do not
overlap with the toolbar is corrected.

The original discussion is here: d45e2c4c2e
2021-01-10 10:33:26 -05:00
ruevs
758095adb3
Win32: Avoid the "Default Beep" sound in "Еrror" and "Message" dialogs (#881)
On Windows SolveSpace 2.3 uses a plain dialog for `SolveSpace::Error` and
`SolveSpace::Message` with no icon and no system beep. After the GUI
abstraction was reworked this changed to the default system message boxes
(using MessageBoxIndirectW) that play the "Default Beep" sound and show
red "X" and blue "i" icons respectively.

The beep is annoying since the error and message dialogs are used often to
show required conditions for constraints, new groups and other behaviors.

This disables the beep and uses the SolveSpace icon.

Fixes: 719
2021-01-09 17:31:25 -05:00
ruevs
82698b19a3 Update the year in the About dialog 2021-01-09 23:37:31 +02:00
phkahler
d45e2c4c2e
Add toolbar icons for Revolve and Helix created by jkrei0 in issue #857. (#878) 2021-01-09 12:27:27 -05:00
ruevs
3e3ccdca8d Revert "Clean up paste transformed and constrain operations a bit."
This reverts commit 14e837a45f.

Fixes a regression described here:
https://github.com/solvespace/solvespace/issues/875
2021-01-08 21:40:34 +02:00
Koen Schmeets
222c80e4c1
Add OpenMP debug information to conf screen (#869)
* Add OpenMP debug information to conf screen

* Revert casing and whitespace in CMakeLists.txt

* Remove unnecessary comment src/CMakeLists.txt
2020-12-29 14:09:10 -05:00
phkahler
440ea554c9 Add menu checkbox Dim Solid for Sketch Groups.
Makes shadowing the solid optional for sketch in 2d/3d groups. Handy for making dimensioned drawings by putting dims in their own group. #834
2020-12-29 14:08:45 -05:00
ruevs
14e837a45f Clean up paste transformed and constrain operations a bit. 2020-12-22 20:40:50 +02:00
Koen Schmeets
96958f4663
Fix paste transformed not correcting tangent arcs when mirrored (#833) 2020-12-22 14:09:31 +01:00
Koen Schmeets
679e2b9202 Fix an off-by-one error that missed the last point when generating screen bounding boxes 2020-12-21 23:00:51 +02:00
Koen Schmeets
0e5a246a70 Fix normal selection with marquee 2020-12-21 23:00:51 +02:00
Koen Schmeets
f343bbc4f4 Fix marquee selection when the view is rotated away from the working plane 2020-12-21 23:00:51 +02:00
Koen Schmeets
4275fb1202 Fix snap to grid not working in some situations 2020-12-20 13:34:28 -05:00
Koen Schmeets
2939abf5f8 Improve zooming with trackpad and scrollwheel
On macOS actual scroll delta is used for the zoom amount.
On Windows WHEEL_DELTA is used to allow smooth scrolling if supported.
Shift+Scroll is added for 10x finer zooming.
2020-12-11 07:26:02 -05:00
phkahler
640a1b913a Use good default filenames on Linux/GTK 2020-12-10 05:15:18 -05:00
наб
e59186a413 Suggest sensible defaults in file dialogs
Went through first the diff of the referenced commit,
then all instances of "Create(Open|Save)FileDialog";
added SuggestFilename() calls where a default exists

This has been previously removed in
6b5db58971
Closes #538
2020-12-09 20:42:13 -05:00
наб
a8b8a347c1 Make Path::SetExtension("") not include a dot 2020-12-09 20:42:13 -05:00
Koen Schmeets
f5086b62cc Analyze | Stop Tracing (Ctrl+Shift+S) saves CSV only if a point is being traced
This avoids confusion with "Ctrl+Shift+S" being used as "Save As..." shortcut
on some platforms.
2020-12-09 18:57:31 +02:00
Koen Schmeets
b316a8863b Use EXACT for checking theta 2020-11-30 08:50:06 -05:00
Koen Schmeets
6b91ab5778 Better rotating 2020-11-30 08:50:06 -05:00
Koen Schmeets
aa78043fa2 Swap vertical and horizontal constraints when rotating 90/270 degrees 2020-11-30 08:50:06 -05:00
ruevs
9390ab02d5 Set the default font for text objects correctly.
The default font is BitstreamVeraSans-Roman-builtin.ttf since 94b26ddfac,
but on Win32 it needs to be `res://fonts/...` URI to work.

Fixes: https://github.com/solvespace/solvespace/issues/821
2020-11-27 18:24:49 +02:00
ruevs
a2b5d0d45c Win32: Remove sscheck on IsWindowVisible and ShowWindow
The return value of these functions is not an error code and according to
the Win32 API documentation they can not affect `GetLastError`.

Calling sscheck on them normally does not fail since it does
SetLastError(0) before running the checked expression and only then
GetLastError(). However in issue 817 a user discovered that when running
"DisplayFusion" software GetLastError does return an error and SolveSpace
closes.

So while not a strict bug-fix this is a "correctness improvement" for
SolveSpace and works around a possible bug in DisplayFusion.

Similarly the return value of Reg*** functions is now compared to
ERROR_SUCCESS which is zero. Before the sschecks were strictly wrong but
did not cause problems for the same reason as above.
2020-11-25 16:43:39 -05:00
phkahler
22dea59077 "Edit newly added dimensions" is now turned on by default. issue826 2020-11-25 11:55:08 +02:00
ruevs
5d173694e7 Win32: Remove sscheck on SetScrollInfo - it returns the scrollbar position
...which can be zero.

Fixes: https://github.com/solvespace/solvespace/issues/817
2020-11-24 18:18:48 -05:00
ruevs
bb5994ed70 UI: Display "err" in the property browser only if "check sketch for closed contour"
... is enabled.
"err" was first introduced in c2c26e95ad to indicate sketches that may cause
problems in the subsequent 3D groups. But is makes sense not to display the
error if the "check sketch for closed contour" option is turned off. The user
obviously does not want to be warned.

Based on a suggestion in https://github.com/solvespace/solvespace/issues/819
2020-11-24 18:18:11 -05:00
Koen Schmeets
f2850246fa Move z-index of construction segments behind normal segments 2020-11-23 18:32:59 -05:00
phkahler
08f37deadd Make better choices of SI units by considering order. 2020-11-22 18:33:36 -05:00
ruevs
5137da295a Win32: Mouse wheel zooming always remains properly centered
On scroll wheel events convert the mouse coordinates from screen to client
area so that scroll wheel zooming remains centered irrespective of the
window position.

Fixes https://github.com/solvespace/solvespace/issues/806
2020-11-22 18:32:14 -05:00
ruevs
bdd2be6041 Translations: Add solvespace.cpp to the translations...
...since it currently contains many relevant strings.
2020-11-22 17:34:14 -05:00
ruevs
942bf3f354 Remove Q3DO export.
It was added in 3a3a2755b as a potential way to export colorful meshes
to Horizon EDA but ended up being supported only by SolveSpace. Since no
software can consume the exported q3do files the feature is superfluous.

See https://github.com/solvespace/solvespace/issues/795 for details.
2020-11-21 13:02:39 -05:00
ruevs
bcb8cd2c03 Fix unsequenced modification and access warnings.
Found by clang 11. They are a potential problem.

[ 21%] Building CXX object src/CMakeFiles/solvespace-core.dir/exportstep.cpp.obj
.\src\exportstep.cpp:293:61: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=FILL_AREA_STYLE_COLOUR('',#%d);\n", ++id, id - 1);
                                                            ^     ~~
.\src\exportstep.cpp:294:56: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=FILL_AREA_STYLE('',(#%d));\n", ++id, id - 1);
                                                       ^     ~~
.\src\exportstep.cpp:295:59: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=SURFACE_STYLE_FILL_AREA(#%d);\n", ++id, id - 1);
                                                          ^     ~~
.\src\exportstep.cpp:297:98: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#%d,(#%d));\n", ++id, id - 5, id - 1);
                                                                                                 ^     ~~
.\src\exportstep.cpp:298:64: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=SURFACE_SIDE_STYLE('',(#%d, #%d));\n", ++id, id - 3, id - 1);
                                                               ^     ~~
.\src\exportstep.cpp:300:62: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=SURFACE_STYLE_USAGE(.BOTH.,#%d);\n", ++id, id - 1);
                                                             ^     ~~
.\src\exportstep.cpp:301:67: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=PRESENTATION_STYLE_ASSIGNMENT((#%d));\n", ++id, id - 1);
                                                                  ^     ~~
.\src\exportstep.cpp:302:56: warning: unsequenced modification and access to 'id'      [-Wunsequenced]
        fprintf(f, "#%d=STYLED_ITEM('',(#%d),#%d);\n", ++id, id - 1, advFaceId);
                                                       ^     ~~
8 warnings generated.
2020-11-18 17:07:56 +02:00
phkahler
142252ddf8 Add z distance checking to entity picking. Fixes issue 521 2020-11-17 18:58:18 -05:00
phkahler
5945d556a6 Add end marker to text window and increase max rows. 2020-11-07 21:57:15 +01:00
phkahler
6ff8db93e8 Use zOrder for selections within the same group 2020-10-31 11:58:14 -04:00
phkahler
8a3e5b4d56 Don't do numeric surface intersections if an exact curve has been copied. We don't want 2 overlapping but different sets of PWLs. 2020-10-29 14:02:57 -04:00
phkahler
eadeac44f0 use VERY_NEGATIVE and VERY_POSITIVE instead of numeric values which is some cases were 1e-10 instead of -1e10 2020-10-28 13:37:54 -04:00