The Credits tab is now generated from a CONTRIBUTORS file. The file is
expected to list one contributor per line, with individuals first,
followed by a line with the word "Firms" on it, followed by firms (again
one per line). The formatting is currently a simple <ul> for each set of
names. No sorting, etc. is performed.
* set range of Occurrences property to spin box
* connect signals after initializing widgets to avoid superfluous recomputes and possible inconsistencies
* set range of Occurrences property to spin box
* connect signals after initializing widgets to avoid superfluous recomputes and possible inconsistencies
The original License tab used a hard-coded HTML element created in Qt
Designer, which adds style tags to all HTML elements. This commit
replaces that tab with a dynamically-created tab which loads an included
LICENSE.html file at runtime. That file contains no style information,
so obeys the style information provided by the current stylesheet. If
that resource file is not available at runtime, the old license tab is
retained and displayed.
The UrlLabel in the About FreeCAD box was not styleable because its
rich-text contents overrode any styling applied to it. This commit
converts it to a plain text label that can then be styled in a
stylesheet using the Gui--UrlLabel selector. If no stylesheet is
applied, the UrlLabel styles itself using the old-school blue text with
an underline, but any applied stylesheet completely overrides this
default.
This does not affect the "clickability" of a UrlLabel widget, which is
handled independently of the label's content (including its textual
hyperlink, which was and still is ignored).
LGTM identified a few minor issues in the Dice3DS code -- none of them
appear to be real errors, so the changes here should not affect the
behavior of the code.
LGTM identified an instance where a function was defined twice: in this
case, one version was intended to take a list of items and the second
version just a single item. Because they share the same name and number
of arguments, the second definition overrode the first. This causes no
problems in the current code because the version that takes a list is
never used. However, for consistency with the analogous
"globalize_vectors" and "globalize_vector" functions, the "localize*"
versions are changed to match that pattern. All calls in are
converted to the singular use.
When creating arrays of colors, the color information is often created
to be the same length as some array of objects. In three instances this
was achieved with a loop over that list of objects, even though the
objects themselves are never used. This commit eliminates those loops
and creates the required number of color instances directly.
Identified by LGTM.
The OpenSCAD module did not have any unit tests. This commit adds the
basic framework (and two very simple tests). The framework is modeled
after the unit tests in the FEM module.
- fixes bug 4581
See the first issue reported here:
https://forum.freecadweb.org/viewtopic.php?f=3&t=56093#p482553
- also fix issue that one could set 1 occurrence for polar patterns despite 2 are required at least
- also fix potential dereferencing null pointer (reported by MSVC)
LGTM complains about the unused variable in a loop that is really only
using the variable to iterate a set number of times. This replaces that
loop with a multiplication by the length of the array, eliminating the
unused iteration variable and clarifying the intent of the code.
LGTM is concerned about the unused loop variable in this algorithm.
While there was nothing wrong here, to eliminate the alarm the loop was
removed entirely, since Python allows the use of the multiplication
operator here to achieve the same effect.
LGTM objected to the re-use of the loop variable a in the algorithm.
Upon closer inspection, the algorithm in this function could be modified
to match the algorithm in sync_snap_statusbar_button (which does the
same thing to the statusbar that this does to the toolbar). This
eliminates the double-use. This change does not affect the functionality
of the routine.
bug 7: the update view checkbox should be enabled/disabled based on Model thread.
the checked state should not change
bug 8: the Thread depth options should be disabled when Model thread is unchecked.
because they don't do anything in the model it is confusing if they are enabled.
- Thread runout according to DIN 76-1
- Through all length updated to be calculated based on bounding box
- New properties: ModelThread, ThreadDepthType, ThreadDepth,
UseCustomThreadClearance, CustomThreadClearance
- Rename Old but unused parameters related to thread modeling.
- Functionality exposed in UI
LGTM identified a number of minor issues (mostly unused imports) in the
offline docs code. This commit addresses those, plus tweaks some output
formatting to include missing spaces, makes a regex more rigorously safe
by escaping some periods, and updates the use of a get() function which
appears to have changed since it was first written.
This commit addresses issues identified by LGTM for the various
independent (and mostly-independent) files in the Tools subdirectory.
The vast majority of the issues are trivial, and are things like unused
imports or catching BaseException. There was one true bug identified, a
global variable being changed in a function where it was not marked
global, but it only affected output quantity (the variable is named
"VERBOSE"). A couple of other issues identified variables that appear to
represent no-longer-existing options in the code. The options were left,
but a deprecation printout replaces the variable in the event the option
is provided.
Crowdin has depreciated their old api and will shut it down completely
in december 2021.
What's new:
* rewritten in Python 3 (drops support for discontinued Python 2)
* uses Crowdin's api v2
* runs on vanilla Python 3, (no external modules)
* automatically adds new translation from the src directory
* supports api token to be specified in an environment variable
(Makes GitHub integration easier in the future)
* requires project id to be explicitly set with an environment variable
(Makes testing safer)
The api token can be set either in ~/.crowdin-freecad-token similar to
how the old api key was set, or by specifying it in an environment
variable. The later has been added to make it easier with GitHub-Crowdin
integration in the future.
The requirement to explicitly set CROWDIN_PROJECT_ID has been introduced
to avoid accidentally using the main Crowdin project while testing the
script.
The script has been tested on Python versions 3.7, 3.8 and 3.9.
Co-authored-by: Mattias Pierre <github@mattiaspierre.com>
Static analysis showed some unused variables and imports, and running
the code in Python 3.9 revealed a few invalid escapes (previous versions
of Python silently "fixed" these, so the code change here will not
affect the results).