SystemExitException is instantiated and thrown by Base::Interpreter
whenever the python interpreter executes a sys.exit(<exitCode>) call.
However, in the current implementation, the SystemExitException
effectively swallows the <exitCode> hence under this change,
SystemExitException has been extended to save the <exitCode> passed to
the sys.exit() call when it is instantiated and provides a new
getExitCode() accessor method to retrieve the <exitCode> in a
try/catch block. MainGui.cpp was change to pass the corresponding
<exitCode> to the system exit() call so it is accessible in the shell.
We did not have document icons defined for OS X and the existing legacy
icons were low resolution. For this change, we have created a
freecad-doc.svg icon that serves as the basis for generating
platform-specific FreeCAD document icon sets for the supported
platforms. Extended the OS X bundle definition to include the
high-resolution document icon set and regenerated the existing 64x64
Gui/Icon/freecad-doc.png from the new svg variant.
+ selected Tab bar has now opaque background color
+ styles for buttons inside Task Panel that are in reality QToolButtons
+ styles for QListWidget and QTreeView items with checkboxes
+ simplified regular QCheckBox styling
+ simplified toolbar button separators
+ added hover and pressed states for toolbar buttons to improve user experience
+ partial fix for button with icons inside Task panel
+ fixed styles for fields inside a table cell
1. Enhanced TestApp.py to return the unittest TestResult object to the calling method
2. FreeCADTest.py now checks the TestResult object. If all tests pass, FreeCADTest.py exits with a 0 however if any tests fail, then it exits with 1. FreeCADTest.py calls os._exit() with the exit code instead of sys.exit() because Base::Interpreter:SystemExitException intercepts sys.exit() calls and swallows the exit code so there is no way to propogate the non-zero code from the python test cases through the interpreter to the shell in the current call stack.