Commit graph

6981 commits

Author SHA1 Message Date
fieldOfView
0ad49dd412 Allow renaming groups to something other than "Group #n" 2021-04-19 22:14:14 +02:00
Kostas Karmas
7e98fb7fb0 Fix crashing while restoring a backup file with the wrong encoding
Fixes sentry issue CURA-24R
2021-04-19 14:24:42 +02:00
Remco Burema
f22e223d72
Merge branch 'master' into libArachne_rebased 2021-04-16 18:17:04 +02:00
Kostas Karmas
07594f17a7 Fix setting empty auth tokens in the keyring on startup
When Cura is starting up, it reads the authentication data from the preferences (cura.cfg). If
the auth tokens have previously been stored in the keyring, it means that their values will be null
in the cura.cfg file. Therefore, on startup, Cura reads the tokens as none from the preferences and
then sets the empty values in the keyring as tokens. This leads to the user being signed off every
time Cura restarts on Mac.

On Windows, the access token was still stored in the preferences, so on startup it was safe. The
refresh token, on the other hand, had the same issue as on Mac, which means that on startup it was
read as None from the cura.cfg and was stored in the keyring as an empty string. This meant that,
even though on startup (on windows) the user was kept signed in, the next time Cura was attempting
to refresh the access token (after 7-8 minutes), it wouldn't be able, since its refresh token was
read as "" from the keyring. Also, if the user would close Cura and reopen it after 10 minutes
(so after the access token had expired) then they would be signed off on windows too.

This commit fixes that by making sure that if the given value of the refresh and access tokens are
empty, then they will not be stored in the keyring.

CURA-8178
2021-04-16 17:05:08 +02:00
Ghostkeeper
9dba4d554f
Fix segfault when arranging without any disallowed areas
So libnest2d is giving a segfault when it's being triggered without any disallowed areas. This is because we then give a single disallowed area for the border around the build plate, and give this disallowed area 0 vertices. Because libnest2d doesn't do defensive coding here, it's going to crash, taking Cura along with it. The crash is in libnest2d's function 'libnest2d::_Item<ClipperLib::Polygon>::rightmostTopVertex()'.

This segfault started happening recently in Cura. However it only happens when there are no disallowed areas. Steps to reproduce the error are:
- Use Custom FFF Printer.
- Set the Adhesion Type setting to 'None'.
- Load any two models.

I tracked the segfault down to this commit: 74ddbaab4b . That commit by itself is slightly mysterious but looks fine to me. It did give the hint that this segfault might be caused by empty polygons though. So for that reason, I figured that filtering out the empty polygons here in the arranger might fix it; and indeed it does. Passing empty polygons as fixed/disallowed areas is useless and invalid anyway. Apparently libnest2d doesn't deal well with it, but we might as well not send those polygons over then.
2021-04-14 00:32:50 +02:00
Konstantinos Karmas
bd96978d37
Merge pull request #9538 from Ultimaker/CURA-7180_frozen_mac_keyring_fix
[CURA-7180] Explicitly give keyring-backend on Mac too.
2021-04-09 17:17:36 +02:00
Konstantinos Karmas
fe2d554ec0
Change the OS_X keyring backend module to macOS
Since the OS_X has been deprecated since keyring v22.0.0 and has been replaced by the macOS.

CURA-7180
2021-04-09 17:14:32 +02:00
Remco Burema
7f6133ca94
Merge pull request #9535 from Ultimaker/CURA-8093_Check_client_scope_when_upgrading_from_4.8
CURA-8093: Check client scope when upgrading from 4.8
2021-04-09 09:48:55 +02:00
Remco Burema
1c806199a4
Explicitly give keyring backend on Mac too.
CURA-7180
2021-04-08 14:08:35 +02:00
Ghostkeeper
b3c03b8771
Merge branch 'master' into libArachne_rebased
Conflicts:
	resources/texts/change_log.txt -> 4.9 got added while we added the Arachne change log as well. I put 4.9 below the Arachne info.
2021-04-08 13:49:52 +02:00
Kostas Karmas
72080a3cca Delete the auth data on upgrade from 4.8 if the scope doesn't match
If the user account scope is outdated, delete it when upgrading from 4.8 to 4.9. This means that
the user will have to log in again, to make sure they get the correct account scope.

CURA-8093
2021-04-08 12:46:52 +02:00
Jaime van Kessel
82ffdccac2
Added type ignore since it does accept it 2021-04-07 17:15:22 +02:00
Jaime van Kessel
8cc091fd0a
Merge branch 'typing_keyattribute' of github.com:Ultimaker/Cura into fix_tests_python_upgrade 2021-04-07 15:43:03 +02:00
Jaime van Kessel
d49a90029f
Fix final set of typing issues 2021-04-07 14:03:35 +02:00
Jaime van Kessel
3432720f7c
Fix mypy issues caused by numpy upgrade 2021-04-07 11:47:52 +02:00
Jaime van Kessel
17d8751ec1
Fix incorrect typing in keyring attribute
It didn't need Type["basemodel"] but a direct base model
2021-04-07 11:39:28 +02:00
Jaime van Kessel
0d38035944
Add constructor for keyring attribute
_store_secure was used, so it should be created on construction
2021-04-07 11:30:08 +02:00
jelle Spijker
4b1087a138
Put BaseModel in quotes
Contributes to CURA-7180
2021-04-07 11:25:39 +02:00
jelle Spijker
33a812d696
Added typing fof KeyringAttributes
This should hopefully shut mypy up.

Contributes to CURA-7180
2021-04-07 11:06:06 +02:00
Ghostkeeper
08be77adad
Increment SDK version to 7.5.0
The Cura 4.9 release will have expanded functionality. If you have a plug-in that uses this functionality, marking it as using SDK 7.5.0 will notify older Cura releases that they can't use that plug-in.
2021-04-06 13:28:08 +02:00
Remco Burema
40fb430277
Merge pull request #9501 from Ultimaker/CURA-7180_keyring_none_value
Handle storing None values in keyring
2021-04-06 12:31:45 +02:00
jelle Spijker
23ba1745a4
Handle storing None values in keyring
Write an empty string as value to the keyring if None is parsed and
return a None value if an empty string was parsed from the keyring.

CURA-7180_keyring_none_value
2021-04-04 12:27:43 +02:00
jelle Spijker
72478994ec
Bumped up the Preference version to 7
reverted the SettingVersion to 16

CURA-8110_upgrader
2021-04-02 14:41:52 +02:00
jelle Spijker
77ea5e5e89
Allow setting visibilities to be upgraded
CURA-8810_version_upgrade
2021-04-01 16:15:47 +02:00
jelle Spijker
da4db51b0a
Bump setting_version to 17
CURA-8810_version_upgrade
2021-03-31 15:13:06 +02:00
Remco Burema
e1490a68df
Also need to import this.
CURA-7180
2021-03-30 21:46:19 +02:00
Remco Burema
72248d47e1
Windows workaround for keyring issue.
So there is an issue with keyring w.r.t. frozen installs (maybe also local). If you have pywin32 installed, it works fine locally. Take a note here, that a variant of this package, pywin32-ctypes, a rudimentary version of that package that works wholly within python, is already installed as its a dependency for keyring on windows. Due to an unknown reason, when running it fails to detect this, so some workaround is needed, _or_ the 'normal' pywin32 package should be installed. However, problems occurred when attempts where made to install pywin32 via cx_freeze. Then the actual workaround was encountered (https://github.com/jaraco/keyring/issues/468), which _should_ hopefully let use use the keyring on windows without needing the 'full' version of pywin32.

CURA-7180
2021-03-30 20:40:33 +02:00
Remco Burema
bde88d7875
Don't store cerain keys ever.
CURA-7180
2021-03-30 17:24:25 +02:00
Remco Burema
315898864c
Merge branch 'CURA-7180_keyring_storage' into big_merge_v49 2021-03-30 17:21:17 +02:00
Ghostkeeper
9462366158
Merge branch 'master' into libArachne_rebased 2021-03-30 16:50:56 +02:00
Remco Burema
e8defcff7c
Merge branch 'CURA-7180_keyring_storage' into big_merge_v49 2021-03-30 14:56:39 +02:00
Kostas Karmas
fb5d59db32 Fix comment
The Windows Credential Manager actually fails if the password is more than 1024 bits long.

CURA-7180
2021-03-29 17:03:09 +02:00
Kostas Karmas
dbb15b7c71 Account for exception occured when storing long tokens on Windows
The Windows Credential Manager allows for up to 256bits passwords. If a password longer than that
is attempted to be written, it will throw a BaseException.

CURA-7180
2021-03-29 16:33:59 +02:00
Jelle Spijker
c798c7b99e
Merge remote-tracking branch 'origin/master' into CURA-7813_fix_crash_globalstack 2021-03-29 10:17:31 +02:00
Kostas Karmas
179d77ef5c Transfer the "What's new" and "Changelog" pages at the end of wizard
To match the requirements specified in the ticket.

CURA-8014
2021-03-25 13:29:17 +01:00
Kostas Karmas
55cb7f88a7 Change bottom left button text to "Skip"
Or else the page shows two buttons "Next" buttons.

CURA-8014
2021-03-25 12:47:07 +01:00
Remco Burema
f1cbe1a958
... and fix typing as a result of the last commit.
CURA-8014
2021-03-24 16:29:38 +01:00
Remco Burema
f95c09db37
Type-checks, not just type comments, and static- over class-method.
CURA-8014
2021-03-24 16:18:56 +01:00
Remco Burema
5083db8d44
On new install or update, have highlights not just changelog.
Place images in resources/images/whats_new/N.format and texts in resources/texts/whats_new/N.format where N is the ordinal and format the respective allowed formats.

CURA-8014
2021-03-24 12:00:05 +01:00
fieldOfView
6367e07631 Add preference to enable loading multiple objects into a single instance 2021-03-23 22:27:10 +01:00
Ghostkeeper
93a3f15b4f
Workaround: Before closing the window, remove the global stack
There's an extensive explanation in the documentation. But truth be told, I don't know why the conversion of global stack to QObject fails after the main window is closed. This may be something in PyQt as it doesn't seem to happen for Nallath who is still on PyQt5.11, but did update Qt to 5.14. So this should be considered a workaround.

This is currently just ONE of the reasons why the application crashes on exit in PyQt5.14+. There is another, much more mysterious issue that is causing the application to segfault on exit, which is still happening. But if it didn't happen it would otherwise still crash on this, so this needs to be solved anyway.

Contributes to issue CURA-7813.
2021-03-22 15:55:37 +01:00
Jelle Spijker
387fc36dc6
Small aesthetic code changes
CURA-7180 keyring storage
2021-03-17 09:30:31 +01:00
Jelle Spijker
c462b62edc
Handle raised error when there is no keyring backend present
CURA-7180 keyring storage
2021-03-17 09:22:24 +01:00
Jelle Spijker
3fd3fd7c7d
Obfuscate sensitive preference data from the back-up
CURA-7180 keyring storage
2021-03-17 08:54:16 +01:00
Jelle Spijker
b6b9dd1864
Fixed wrong typing
CURA-7180 keyring storage
2021-03-17 07:34:28 +01:00
Jelle Spijker
f51c466155
Use a descriptor to optionally store to Keyring
CURA-7180 keyring storage
2021-03-17 06:16:01 +01:00
Jelle Spijker
d06a25595a
Use a descriptor to optionally store to Keyring
CURA-7180 keyring storage
2021-03-16 19:28:56 +01:00
Ghostkeeper
58369822fc
Clean up invalid quality changes robust to asynchronous changes
It's possible that a profile is no longer in the registry by the time it gets to that point in the list if this clean-up is triggered by the very action of deleting a profile.

Fixes Sentry issue CURA-1T5.
2021-03-16 16:36:01 +01:00
Jelle Spijker
6372fbed54
Added copyright notice
CURA-7180 keyring storage
2021-03-16 11:57:58 +01:00
Jelle Spijker
96e39810f2
Sync after log in works again
Needed to restore the access token after the
auth data was written to the preference file.

CURA-7180 keyring storage
2021-03-15 14:35:00 +01:00