Commit Graph

58 Commits

Author SHA1 Message Date
forbes
1762bd23d1 fix: preserve caller globals in exec() for module Init.py/InitGui.py loading
Some checks failed
Build and Test / build (pull_request) Has been cancelled
The previous fix (e10841a6c8) passed {"__file__": ...} as the globals
argument to exec(), which replaced the caller's globals dict entirely.
This stripped FreeCAD, FreeCADGui, Workbench, and other names that
modules expect to be available, causing NameError failures across
Material, Tux, Mesh, ReverseEngineering, OpenSCAD, Inspection, Robot,
AddonManager, MeshPart, and others.

Fix by merging __file__ into the caller's globals with
{**globals(), "__file__": str(init_py)} so both __file__ and all
existing names remain available in the executed code.
2026-02-15 04:21:26 -06:00
forbes
e10841a6c8 fix: pass __file__ to exec() in addon Init.py/InitGui.py loading
Some checks failed
Build and Test / build (pull_request) Has been cancelled
DirMod.run_init() and DirModGui.run_init_gui() use exec(code) to run
addon Init.py and InitGui.py files, but don't pass __file__ in the
globals dict. Addons that reference __file__ (e.g. Silo) crash with
NameError: name '__file__' is not defined.

Pass {"__file__": str(init_py)} as the globals argument so __file__
is available in the executed code, matching the behavior of normal
Python module loading.
2026-02-14 21:27:25 -06:00
forbes
54031edede cherry-pick: ab71902a4c 2026-02-13 14:09:53 -06:00
Frank David Martínez M
a70ec178b8 Gui: Fix 25974 freecad.gui alias regression (#25975) 2025-12-05 19:03:40 +00:00
Frank David Martínez M
d7a7416398 [Core] FreeCADInit and FreeCADGuiInit refactoring (#23413) 2025-12-04 11:10:53 -06:00
pre-commit-ci[bot]
25c3ba7338 All: Reformat according to new standard 2025-11-11 13:49:01 +01:00
Chris Hennes
423ea14ff2 Core: Record module failure information during startup 2025-09-01 18:10:04 +02:00
Max Wilfinger
ecf02b7878 Gui: Update UI strings for consistency
Closes: #22135
2025-08-04 20:14:45 +02:00
Kacper Donat
9baeb6e9e6 Gui: Add support for hints in status bar 2025-05-21 17:42:45 +02:00
Pieter Hijma
381cb92f0a [Core] Add visibility toggling to ViewProvider
With this extension of the API, view providers can indicate whether
document objects should be able to be toggled for visibility.  There is
both a C++ and Python interface, idiomatic for FreeCAD code.
2025-04-05 15:57:09 +02:00
Benjamin Nauck
8945260a7e Add two options to disable addons
Addons can be disabled in two ways:
 * by adding a command line argument `--disable-addon <addon>`
 * and by creating a `ALL_ADDONS_DISABLED` file in the mod root of the addons to disable
2024-11-25 12:16:43 -05:00
Benjamin Bræstrup Sayoc
d4173be130 [Gui] Fix isBad asserts, by removing old monkey patch
Multiple places in code, asserts for bad types would trigger SIGABRT. This is not just limited to #16316 with SoZoomTranslation, but multiple more places, not described in issue, but I experienced myself. Fixes #16316
2024-10-14 18:16:23 +02:00
Victor Predko
f76f842302 File formats: Uppercase file types when importing a file. (#10977)
* Added uppercase extensions for supported formats

In the file App\Application.cpp

* Added file types in upper case

* Adds uppercase file types to the file import filter.

Fixes #10879

* Added filter for *.fcmacro *.fcscript
2023-10-16 14:40:46 -03:00
Paddle
4293c4a65b Core: Selection : Add possibility to set the style of selection between normal and greedy 2023-09-19 00:08:39 +02:00
bdieterm
e33c5754d4 Core, Gui: allow breakpoints in Init.py and InitGui.py of mods 2023-09-18 10:27:51 +02:00
wmayer
01da66f2df [skip ci] Gui: PrintWarning has been moved to Console module 2023-05-15 15:58:48 +02:00
wmayer
5c3f361077 Core: make the init scripts more robust against invalid package.xml files
See also: https://forum.freecad.org/viewtopic.php?t=77170
2023-03-28 10:49:21 +02:00
mosfet80
3137dea940 remove Python2 code 2023-03-04 17:51:43 -06:00
Uwe
0bfa983a89 [Gui] FreeCADGuiInit.py: address some GH action reports
- superfluous parens and loo long lines
2023-01-30 18:14:27 -07:00
luzpaz
8d861e6abd Gui: fix trailing whitespace 2023-01-25 15:23:47 +01:00
wmayer
d0485c6bef Gui: add enum class to Selection Python API 2022-04-09 18:03:45 +02:00
wmayer
cf7fd5d2ac lgtm: removes unused imports in Python scripts 2022-03-20 23:00:55 +01:00
Chris Hennes
f122061424 Core: Support disabling Addon by FreeCAD version
If package.xml metadata file exists, it is scanned for FreeCAD version
compatibility before the Addon is loaded. If the Addon specifies that it is
explicitly not compatible with the current version of FreeCAD, the Addon is
not loaded.
2022-03-08 23:19:04 -06:00
Chris Hennes
02cfa11c8e Core: Add mechanism to disable addon 2022-02-20 22:09:57 -06:00
Chris Hennes
57e2d8b31d Gui: Clean up mod init error messages 2022-02-18 17:40:05 -06:00
wmayer
0bbc253dde Gui: add method to reload active workbench 2022-02-16 17:33:29 +01:00
Chris Hennes
a9cf722d04 Addon Manager: Convert dev startup warning to log 2021-12-30 20:13:24 -06:00
Chris Hennes
c600fda0d9 GUI: Tweak verbosity of InitGui startup sequence 2021-12-18 20:29:42 -06:00
Chris Hennes
5c1655d125 Core: Fix installation conflict with pkgutils 2021-12-18 20:29:42 -06:00
Chris Hennes
2bfcf6af09 GUI: Handle packaged Workbenches and their icons 2021-12-18 20:29:42 -06:00
luz paz
298c677873 Gui: Fix header uniformity, whitespace, and doxygen fixes 2020-11-26 10:14:56 +01:00
wmayer
de07c92361 Py2: do not open Init[Gui].py files with utf-8 encoding 2020-11-26 00:48:28 +01:00
wmayer
27ee19c1f7 Init: [skip ci] do explicitly open Init[Gui].py files with utf-8 encoding 2020-11-24 14:15:26 +01:00
wmayer
393da0d6d9 Gui: [skip ci] add an alias for Gui.isCommandActive 2020-10-01 16:03:08 +02:00
wmayer
623d6b7134 Gui: [skip ci] add x3d and xhtml format to export dialog 2020-09-07 16:27:21 +02:00
wmayer
76e7429489 Gui: [skip ci] set Gui.listCommands to keep old code working 2020-08-03 18:58:00 +02:00
wmayer
8663e724f5 Gui: move functions to list menus and toolbars from sub-class to base Workbench class
implement new function to list all toolbars and their used commands
2020-04-04 11:46:45 +02:00
wmayer
475f518510 Gui: [skip ci] replace tabs with spaces in GUI init script 2020-04-04 09:42:30 +02:00
luz.paz
f11783a498 src/Gui: [skip ci] fix header uniformity
This PR fixes header uniformity across all `src/Gui` files
2019-12-25 11:39:17 +01:00
Zheng, Lei
d833e19e01 App/Gui: Changes to application Python init script
* Better module import error handling

* Allow co-installation of Python2 and Python3 version of FreeCAD

* Add FreeCAD.Logger class for convenient logging in Python. See class
  document for more details.
2019-08-17 15:08:34 +02:00
Zheng, Lei
c8891be856 Gui: add coinRemoveAllChildren to work around Coin3D bug
See bug description:
https://bitbucket.org/Coin3D/coin/pull-requests/119/fix-sochildlist-auditing/diff

Because of path based rendering (SoFCPathAnnotation) in mouse over
highlight, this bug causes crash more frequently here comparing to
upstream.

All C++ calling of SoGroup::removeAllChildren() is replaced by
Gui::coinRemoveAllChildren(), and python code is fixed by monkey
patching SoGroup.removeAllChildren() in FreeCADGuiInit.py.
2019-08-17 14:52:11 +02:00
looooo
599e59059b reduce line-length to 80 characters 2018-09-05 11:06:26 +02:00
looooo
b20d1bc09c new style modules: print traceback as error and as log. 2018-09-05 11:06:12 +02:00
wmayer
1cfae464b4 issue #0002973: Path to FreeCAD.app can't contain unicode 2017-12-02 19:37:05 +01:00
wmayer
00d6df17e3 don't exit FreeCAD when Ext directory doesn't exist 2017-09-22 10:37:11 +02:00
looooo
2ff47374f2 new-style-modules: adding the possebility to import from "freecad"
(this mostly aims at new modules and extension modules which want to use pip)
- any module having problems with nameclashes can use this syntax (from freecad import module)
- current imports still work (backward cobatibility)
- python extension moduels can be installed (pip) to python std path (eg.: site-packages)

- adding app, gui to the new freecad package:
```
from freecad import app
from freecad import gui
```

- syntax for importing c++ extension will not change
```
import FreeCAD as App
import FreeCADGui as Gui
```
2017-09-20 23:25:12 +02:00
Yorik van Havre
aa3f9288d6 py3: Gui: files A-P ported to python3 2017-05-06 17:23:27 +02:00
looooo
bcfac0e9b7 use __ModDirs__ for module directories and set the search path of FreeCAD to the base directories, which contain all the modules 2017-03-18 18:20:59 +01:00
looooo
c2cdc9eded py3: Gui: FreeCADGuiInit.py 2017-03-18 18:20:59 +01:00
wmayer
e9e9a38865 + improve exception handling in initialization scripts 2015-12-29 23:42:29 +01:00