Commit Graph

4876 Commits

Author SHA1 Message Date
Chris Hennes
857ddacb6e Update translations (#10613)
* Update translations
* Start: Remove Start.ts
2023-09-10 13:06:26 -05:00
wmayer
561be3f55c Gui: fix some MSVC truncation warnings
See forum: https://forum.freecad.org/viewtopic.php?t=81051
2023-09-10 18:08:06 +02:00
andrea
9fbc86daa5 Removed old code using qt<5.4 2023-09-09 17:50:51 +02:00
wmayer
378dfd96b7 Gui: fix clang-tidy warning 2023-09-08 21:45:10 +02:00
Michael Tuma
e78f74b01a Made the interval that the Python profiler runs at configurable
Added a "User parameter:BaseApp/Preferences/PythonConsole/ProfilerInterval" int
property which sets how often (in milliseconds) the Python profiler runs while
Python code is running. Setting this value to zero will totally disable it.

Also added a preference in the Python console screen which allows the user to
set the value of this property to between 0 (disabled) and 5000 (once every 5
seconds). (+1 squashed commits)

Squashed commits:

[cca88ac633] Made the Python profiler only run when the console is running code

This has two purposes. First, it prevents a performance impact from running the
profiler whenever Python code is running. Second, it prevents crashes caused by
Qt's process events function being called too frequently. When the Python code
is running in the console, it monopolizes the main thread and prevents events
from being processed. Therefore, causing events to be processed in the callback
should not force events to be processed too frequently, because the normal loop
is being prevented by the Python code. (+1 squashed commits)

Squashed commits:

[45f86917e6] Made long-running Python code not freeze the GUI without multithreading

Removed the background thread running Python code and replaced it with a custom
profiler which the Python interpreter runs frequently (at every Python opcode I
believe) on the main thread whenever Python code is running. The profiler will
make Qt process any new events every 200 ms, preventing "App not responding"
messages and making sure any Ctrl+C keypresses will be processed. This prevents
the previous issue where running anything GUI-related from Python would crash
the program (because Qt isn't thread-safe). (+1 squashed commits)

Squashed commits:

[0ef7d810b3] Made the process of getting thread IDs cross-platform compatible

Instead of using <threads.h>, now the standard <thread> header from C++
11 is used to find the thread ID, since <threads.h> is apparently not
available on Windows. (+1 squashed commits)

Squashed commits:

[74c7b867f2] # This is a combination of 2 commits.

Python from the console now runs in the background

In a nutshell, all Python code which is input from the interactive console
now runs in a seperate QThread which runs in the background, instead of
on the UI thread. This means that long operates operations will no longer
cause the app to display an "App not responding" message, because the UI
thread is now free to keep running unencumbered.

However, it is still not possible to run multiple Python statements at
the same time. If the user tries to run some Python while a previous
statement is still being processed, instead it will display an error
message in the console stating that the previous command is still
being processed.

I also added a seperate QTimer which runs once every 100ms to flush any
output from the Python code back to the console. I can't flush the output
to the console from the background thread because the relevant Qt5 code
is not thread-safe (it causes random segfaults). So I added this timer
as a work-around, since it runs in the main UI thread.

Implemented Ctrl+C keyboard interrupts in the console

This is implemented by detecting a Ctrl+C key event in the Python
console in the main Qt UI thread, and sending a keyboard interrupt
to the background thread that runs the Python code.
2023-09-08 21:45:10 +02:00
andrea
759fed90fb fix compilation warning 2023-09-08 14:13:36 +02:00
wmayer
c7bacc34d6 Gui: filter warning about dead keys
Forum thread: https://forum.freecad.org/viewtopic.php?t=80981
2023-09-08 14:12:24 +02:00
FEA-eng
b277feed7d Update MainWindow.cpp
fixed small typo in the warning about 0.22 being dev version not for production use
2023-09-05 15:40:16 -05:00
kaktus Jacek
af3cf2e9e9 Removing unnecessary strings from Crowdin + improving typos
patches for #10459 and #10426...
a few small details escaped attention need to be fixed
😉
Removing unnecessary strings from Crowdin and improving typos.
2023-09-05 15:38:58 -05:00
Rexbas
7a9fa16762 Gui: Add nullptr check in showRotationCenter 2023-09-05 08:54:11 +02:00
wmayer
49e83787ef Gui: make GroupCommand more flexible
Currently the GroupCommand by default sets the action group as non-exclusive, checkable and having a drop-down menu which isn't always the desired behaviour in sub-classes.
Thus, some new methods are added to let a sub-class in its constructor decide how it should behave.
2023-09-01 13:28:19 +02:00
PaddleStroke
b7a6558c72 Assembly: Initial implementation (#10427)
* Assembly: Initial implementation.
* Disable Assembly wb as it's WIP.
* Stub code for handling assembly import.

Co-authored-by: sliptonic <shopinthewoods@gmail.com>
Co-authored-by: Paddle <PaddleStroke@users.noreply.github.com>
2023-08-31 12:30:10 -05:00
howie-j
d5a9f78ad3 Updated Shortcuts.cfg pref pack template to newest commands and shortcuts 2023-08-30 10:00:15 -05:00
wmayer
a6f5d86d21 Gui: fix crash with the move to the new-style of class SelectionFilterPy
When setting the selection filter below and hovering over an object causes a segmentation fault:
filter = Gui.Selection.Filter('SELECT Part::Feature')
Gui.Selection.addSelectionGate(filter)
2023-08-30 15:09:08 +02:00
kaktus Jacek
0445b88d55 Cleaning code from unnecessary strings generated to Crowdin 4 (#10426)
Cleaning Crowdin of "garbage". Second approach.
https://github.com/FreeCAD/FreeCAD-translations/issues/270
2023-08-29 12:57:26 -05:00
Chris Hennes
6bfafc62dc Update translations 2023-08-29 07:38:09 -05:00
kaktus Jacek
43e247fb75 Cleaning code from unnecessary strings generated to Crowdin 2 (#10416)
Cleaning Crowdin of "garbage". Second approach.
https://github.com/FreeCAD/FreeCAD-translations/issues/270
2023-08-28 22:08:14 -05:00
wmayer
6eddb195cd Gui: do not call back() on an empty container
Calling back() on an empty container is undefined behaviour: https://en.cppreference.com/w/cpp/container/vector/back
2023-08-29 00:52:33 +02:00
wmayer
ee3a0647e0 Gui: no need to check for nullptr when using dynamic_cast
It's explicitly allowed to use dynamic_cast on a nullptr and the result will be a nullptr too.
See https://en.cppreference.com/w/cpp/language/dynamic_cast
2023-08-29 00:45:27 +02:00
Chris Hennes
932fd4638b Merge pull request #10410 from qewer33/startpage-viual-fixes-2
StartPage: Visual fixes follow-up
2023-08-28 12:18:13 -05:00
Chris Hennes
df7b2f8c4b App: Warn on OpenGL too old (#9272)
* App: Warn on OpenGL too old

Based on original code from PR #9164

* GUI: Switch to DlgCheckableMessageBox for openGL warning
2023-08-28 12:08:23 -04:00
Edoardo Morandi
93865b2495 fix: downcasting of SoNode that can cause UB (#9285)
A SoNode* is not necessarily a SoFCSelectionRoot*, and when this
assumption breaks the code causes UB (the comment related to one of the
chunks explicitly says that it is safe, but unfortunately it is not).

Instead of storing `SoFCSelectionRoot*` and blindly cast a generic
`SoNode*` to that, we can do the opposite. In this way it is obviously
necessary to use a dynamic cast when trying to reach for
`SoFCSelectionRoot` specific features, but in this way the abstraction
should be sound.

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2023-08-28 11:06:06 -05:00
PaddleStroke
22d9fb5aa7 Pref: wb: Add contextual menu to sort alphabetically. (#10363)
Co-authored-by: Paddle <PaddleStroke@users.noreply.github.com>
2023-08-28 10:39:44 -05:00
Syres916
df8a15fd75 [Gui] Change View toolbar order
as per discussion https://forum.freecad.org/viewtopic.php?p=702171#p702171
2023-08-28 10:36:10 -05:00
sliptonic
59995204e0 Merge pull request #10405 from wwmayer/fix_activeobject_of_activeview
Gui: improve accessing active object of an MDI view
2023-08-28 10:34:57 -05:00
qewer33
65a826dbfc Change default StartPage BackgroundTextColor value 2023-08-28 16:50:19 +03:00
wmayer
2d35da4519 Gui: improve accessing active object of an MDI view
* if 2nd argument of getActiveObject() is False and the requested object doesn't exist then return (None, None, "")
* remove the exact same implementations from View3DInventorPy
2023-08-28 13:34:48 +02:00
wmayer
c05e7f7670 Gui: use '%Y-%m-%d %H:%M:%S' as format string for date
For more details see: https://forum.freecad.org/viewtopic.php?p=702475#p702475
2023-08-28 08:25:52 +02:00
MisterMaker
e6c278b2e5 [Stylesheets] Replaced more static colors with the accent colors. (#10387)
* [Stylesheets] Fixed and added more accent colors.

Added accent colors to Behave dark ProDark and Dark contrast.
Used accent color 3 to the button gradients.
Added Gradient to the Modern styles, because you can disable the gradient by giving 2 accent colors the same color.

* changed to so accent color 3 is text.
2023-08-27 13:48:36 -05:00
Chris Hennes
86a44c9824 Gui: Wrap PyArg_ParseTupleAndKeywords 2023-08-25 15:34:26 -05:00
wmayer
5a153e50ff Gui: modernize C++: use default member init 2023-08-23 19:51:44 +02:00
wmayer
88784694f6 Gui: add missing precompiled header 2023-08-22 15:45:22 +02:00
Syres916
b799cef4ca [Gui] Add new Selection Filter functionality (#2)
* [Gui] Add Selection Filters

* [Gui] Add Selection Filters to Toolbar

* [Gui] Add Selection Filter Icons

* [Gui] Add 4 new Selection filter Icon Files

* [Gui] Update Context Menu

* [Gui] Add default Selection Filter icon

* [Gui] Update resource.qrc with new icon

* [Gui] Add SelectFilter dropdown toolbar

* [Gui] Update Content Menu and Toolbar

* [Gui] Icon changed to Plain SVG

* [Gui] edge-selection icon as Plain SVG

* [Gui] vertex-selection icon as Plain SVG

* [Gui] selection-filter.svg replace metadata
2023-08-21 11:07:04 -05:00
wmayer
c016f1c1fb Gui: modernize C++: use equals default 2023-08-20 18:12:43 +02:00
marioalexis
44884ecaf7 Gui: Change SoQtOffscreenRendererPy to new PyCXX extension type 2023-08-20 12:02:17 +02:00
wmayer
5f0ec490e6 Core: modernize C++: return braced init list 2023-08-19 11:35:41 +02:00
Chris Hennes
09edbbebaf Merge pull request #10258 from chennes/translations20230814
Update translations
2023-08-18 08:52:13 -05:00
Chris Hennes
661b6da0cb Merge pull request #10238 from Ondsel-Development/pref_theme_2
[Preferences] theme : Variables in stylesheet and more.
2023-08-18 08:49:34 -05:00
wmayer
8f08d8c7cd Lint: fix several issues discovered by clazy 2023-08-18 08:44:49 -05:00
wmayer
54bb9c9c62 Gui: modernize C++: return braced init list 2023-08-18 00:36:24 +02:00
Connor Worrell
2636e164f3 [GUI] QuantitySpinBox Regex Optimization #10067 Ammendum 2023-08-17 15:57:43 -05:00
marioalexis
2cfada7601 Gui: Change ExpressionBindingPy to new PyCXX extension type 2023-08-17 16:02:07 +02:00
Chris Hennes
28f396cc75 Update translations
Adds the ten units strings from Base as well.
2023-08-16 22:50:39 -05:00
Rexbas
fcbee3ad49 Gui: Improve object center rotation mode 2023-08-16 16:02:32 -05:00
Pieter Hijma
d07dd67ba1 Gui: Cleanup Python varargs
Various function existed that had no arguments but were still treated as
if they were vararg functions.  This has no been changed to
add_noargs_method declarations, cleaning up the code.
2023-08-16 15:07:09 +02:00
howie-j
8da37ae635 Update DlgSettings3DView.ui 2023-08-16 13:29:35 +02:00
Jonas Bähr
3e68d6fd50 Remove C++ escaping from *Py.xml templates
Now all escaping required for the C++ code generation is done when the
.cpp/.h files are generated. Previously, only newlines were escaped
automatically. This was a) inconsistent and b) leaked c++ details into
the xml data.
In addition, the escaping is now done in one central place, harmonizing
the three previous implementations.

Pre-existing c++ escape sequences in the XML files have been replaced by
their literal equivalent so that the resulting python doc sting remains
unchanged.
2023-08-16 13:17:25 +02:00
marioalexis
05df2da6b4 Gui: Change SelectionFilterPy to new PyCXX extension type 2023-08-16 08:39:14 +02:00
Paddle
acb63fa79d Theme: Fix the issue that the stylesheet combobox did not update when theme changed. 2023-08-16 08:14:07 +02:00
Paddle
d65495e20e Create themes for Behave-Dark, ProDark, Dark-Contrast. Rename other themes to remove 'theme' from name. 2023-08-15 14:35:39 +02:00