Commit Graph

220 Commits

Author SHA1 Message Date
verylowfreq
1603402df2 Web: Improve file dialog. 2022-11-05 19:26:01 +02:00
verylowfreq
4981570844 Web: Improve touch support and layout. 2022-11-05 19:26:01 +02:00
verylowfreq
b5cde57bb6 Web: Some fix for critical runtime error and cleanups. 2022-11-05 19:26:01 +02:00
verylowfreq
cf597277fa Web: Initial support for touch devices. 2022-11-05 19:26:01 +02:00
verylowfreq
64948c4526 Web: Add opening/saving file support.
- Opening file is implemented as uploading.
- Saving file is implemented as downloading.
  - The filename is suffixed with current date and time.
2022-11-05 19:25:54 +02:00
verylowfreq
f7415048a5 Web: Emscripten port updated to current tools. Add saving of options in local storage. 2022-08-21 14:13:22 +03:00
whitequark
5ca6d04e02 Add a very experimental Emscripten port.
Web: Emscripten port updated to current tools. Add saving of options in local storage.

U  Web: Emscripten port updated to current tools. Add saving of options in local storage.
2022-08-21 13:36:50 +03:00
Adam Strzelecki
cf4defcd47
mac: Distinguish trackpad from Magic Mouse scroll (#1274)
This is the second attempt to distinguish trackpad scrolling that when used
should yield panning from Magic Mouse scrolling that should control zoom.

Since trackpad will begin with a touch prior to the scroll event, but Magic
Mouse not, we can use it to make sure we trigger panning only on a trackpad.

Previous "mac: Don't interpret single-touch scroll events as pan gestures"
that was flawed was reverted which ultimately lead to being unable to zoom using
Magic Mouse.
2022-08-18 00:15:14 +02:00
Koen Schmeets
b429141c28 Revert "mac: Don't interpret single-touch scroll events as pan gestures"
This reverts commit 91db627a81.
2022-02-28 09:45:49 -05:00
Ryan Pavlik
a1e18b83cb Normalize namespaces: includes all at global/root namespace.
Should improve the quality of suggestions, etc. we get from tooling.
2021-12-24 11:29:57 -05:00
Tom Sutcliffe
91db627a81 mac: Don't interpret single-touch scroll events as pan gestures
To handle the Magic Mouse, whose single-finger touch gestures should be
interpreted as scrollwheel events rather than pan gestures.
2021-12-10 10:25:13 -05:00
Simon Wells
2a722c16b8 add gdk.h for GDK_WINDOWING_ defines 2021-10-23 20:59:52 -04:00
Simon Wells
267c002975 modify the spaceware code to also work on wayland
use the recommended compile-time and run-time checks for x11 and wayland
2021-10-23 20:59:52 -04:00
tomsci
8cfe1d4bd7
mac: Remove spurious view menu items (#1101)
Which are either not applicable for SolveSpace (the tabs ones) or are
already handled in the platform-independent code (the fullscreen item).
2021-08-28 22:09:48 +02:00
tomsci
e1b0784b31
mac: Support for pan, zoom and rotate trackpad gestures (#1093)
* mac: Support for pan, zoom and rotate trackpad gestures

Currently SolveSpace is nearly unusable on a mac if you only have a
buttonless trackpad and not a mouse, because there's no way to pan
(ie right-click-drag) or rotate (ie middle-click-drag). You can zoom,
but only by using two-finger-drag up and down, which ends up getting
interpreted as a scrollwheel event.

This change makes the app behave much more like any other mac app, by
adding 2-finger-drag pan gesture support and pinch-gesture zooming, and
3D rotate using shift-2-finger-drag.

I've also added support for the rotate two-finger trackpad gesture,
which rotates directly around the screen Z axis (rather than in all 3
dimensions) which is actually something I've found myself wanting to do
with the mouse but afaik there's no equivalent way of achieving that.

While I was there, I fixed a bugette in convertMouseEvent which was
incorrectly translating the NSEvent coordinates, and then fixing up the
fact that the sign of the y-coordinate was wrong as a result. Using the
convertPoint API correctly means that fixup is not required because
convertPoint handles it for you.

* Don't do trackpad gestures on anything except the toplevel window

* mac: Fix non-functional scrollbar on text window

Which has not worked quite right since the last major refactor.

* Don't pass right-button drags to the toolbar

This improves the behaviour of trackpad pan/rotate on mac which uses
simulated right-button events.

* Don't pass cmd/ctrl modifier through on trackpad pan/rotate MouseEvents
2021-08-27 01:58:33 +02:00
tomsci
31a709e2c8
mac: Support external quit requests (#1099)
By no longer always returning NSTerminateCancel in
applicationShouldTerminate.

And implement applicationWillTerminate to ensure the cleanup code in
SolveSpaceUI::Exit() is always called.
2021-08-26 14:03:28 +02:00
Tom Sutcliffe
b65a0be3d6 Fix/silence mac build warnings
As per Xcode 12.4 you can at least do a warning-free incremental build
with these changes. There are still plenty of warnings in a full build
(mostly from thirdparty components) but with these changes you can at
least develop on mac and see if/when you've added any new warnings when
doing incremental builds.
2021-08-14 20:34:26 -04:00
phkahler
f6bb0a2d35 Add an ALL filter for linking files that includes slvs, emn, and stl 2021-07-28 21:15:33 -04:00
phkahler
2afd6103d9 Add STL linking with bounding box and edge verticies. Experimental. 2021-07-28 20:36:20 -04:00
luz paz
37da0f3341 Fix various typos
Found via `codespell -q 3 -S ./res/locales,./extlib -L asign,ba,hsi,mata,tothe`
2021-07-06 10:37:58 -04:00
phkahler
e74e202465 fix a compiler warning on GTK builds 2021-05-12 20:02:21 -04:00
Ryan Pavlik
8a4d84e85e Add comment about asan warnings. 2021-04-21 12:13:26 -04:00
dustinhartlyn
6b94af0765
minor fix open/save dialogue on windows (#983)
* minor fix open/save dialogue on windows 

On windows 10 the open/save dialogue box has an minor error, and I believe I fixed it. 

When "Open" is selected from the menu, the title of the dialogue box says "SolveSpace - Save File" and the entered file name is "united". My fix correctly titles the dialoged box, and leaves the address bar blank when a file is being opened because "united" is only needed as a default name when a file being saved. 

I found that class FileDialogImplWin32 from guiwin.cpp contains two if statements for "isSaveDialog". This is redundant. I removed the first where the title was originally set, but not working. I then set the title in the second if statement and moved the 'if isEmpty'' to this section.

* Update guiwin.cpp

replaced tabs with spaces
2021-04-01 09:24:04 -04:00
Přemysl Eric Janouch
5c3ce9bfc2 GTK: make spacenavd work through its socket, too
E.g. for when you have more than one user logged in, in which case
spacenavd works only for the first of those X11 displays.

We try to do it the old way first, so there should be no regressions.

Also fixes storing non-booleans in bool variables.
2021-03-30 10:22:05 -04:00
robnee
979a9f084e Hide editor window when user hits Esc 2021-03-10 19:44:54 -05:00
robnee
bef6bc3b77 Use better pointer cursor for link text in GTK
Gdk::Cursor::create(Gdk::HAND1) yields a hand cursor more appropriate
for "grabbing" vs. pointing.  Use the recommended create by name API
to get a "pointing hand" cursor.
2021-03-07 10:11:17 -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
phkahler
ebb194eda6 Add version command to solvespace-cli 2021-01-26 16:57:48 -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
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
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
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
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
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
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
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
Koen Schmeets
3af8127e8f macOS: add NSOpenGLPFADoubleBuffer to NSOpenGLPixelFormatAttribute 2020-10-20 10:59:58 -04:00
ruevs
3ea8ebfaf5 Win32: Fix "File|Open...", "Save" and "Save As" when a command line argument is used.
`GetSaveFileNameA` `OPENFILENAMEA` does not like UNC ( "\\\\?\\C:\\..." ) file prefixes in `lpstrFile`.
Work around it by not `Expand`-ing parameters passed on the command line too early.

The only user visible change is that "File|Open Recent" will show items as they
were passed instead of expanded to full path for example:
"..\..\NURBSTests\Intersection2.slvs"

Fixes: https://github.com/solvespace/solvespace/issues/622
2020-10-16 17:44:27 -04:00
julien581
c514ddad54 Fix for https://github.com/solvespace/solvespace/issues/248 2020-10-03 15:27:14 -04:00
phkahler
c021df33c0 Fix issue 684 as whitequark suggested via WM_KEYDOWN->WMCHAR change. 2020-10-01 13:55:40 -04:00
phkahler
8cf9d68ecf IDF file Linking.
Can read PCB outlines and cutouts, as well as Pin and Mounting holes. A simple PPCB model sans components is added to the assembly.
2020-09-30 14:20:35 -04:00
phkahler
704bb4a3be Fix view centering and directions or cli thumbnail function. 2020-09-19 15:03:01 -04:00
Christoph Dittmann
34328c9756 solvespace-cli: Fix --view
This fixes issues #499. The --view option changes projUp and
projRight. For --view to affect the camera, the camera needs to be
initialized using these values.
2020-09-18 21:15:53 -04:00
nabijaczleweli
028b613f10 Add ExportBackgroundColor config to GUI and CLI 2020-09-05 20:58:07 -04:00
whitequark
d8b76ef7f1 Drop backtrace generation.
This has been completely broken since 2018 (commit a93283df), and no
one noticed, so it probably wasn't useful. Instead of fixing it, just
drop the feature and a bunch of odd nonportable code.
2020-07-28 14:56:55 +00:00
whitequark
b0fc1912ea Create mimalloc heaps only when necessary.
The mimalloc temporary heap is a thread-local object that uses RAII
to manage heap lifetimes even in threads that are created implicitly,
e.g. by OpenMP. However, not all threads are necessarily created by
the application; graphics drivers may create their own threads, and
this can lead to deadlocks when combined with library unloading.

Fixes #657.
2020-07-22 11:05:01 +00:00