Index | Thread | Search

From:
George Koehler <kernigh@gmail.com>
Subject:
update cad/qcad 3.32.4.0
To:
ports@openbsd.org
Date:
Sun, 16 Nov 2025 16:05:43 -0500

Download raw body.

Thread
Hello ports!  This diff updates qcad to 3.32.4.0 and adds and removes
some patches, ok?

I don't use qcad, but I need to touch this port because its PLIST had
lines like

@lib share/qcad/plugins/script/libqtscript_core.so.1.0

This breaks a rule: every @lib must be in SHARED_LIBS and have a
version like ${LIBqtscript_core_VERSION}.  An incoming diff to
pkg_create(1) will enforce this rule (thread "pkg_create: @lib
without LIBname_VERSION"), so we must patch qcad.

After I updated the port, I patched qtbindingsbase.pri to build
libqtscript_*.so with "CONFIG += plugin".  This chops off the ".1.0"
and changes each @lib to a @so, which avoids the @lib rule.

After the update, the patch in ecmaapi.pro broke the build by turning
off precompiled_header; I turned it back on.  I had errors about
unknown types like QScriptEngine.  The pch from "stable.h" includes
some QScript headers and fixes the errors.  The pch works for me with
base-clang 19.1.7 on amd64.

"readelf -d /usr/local/bin/qcad" was missing some library version
numbers; I fixed it by adding some patches to comment out "CONFIG +=
plugin" for each library linked with -l in shared_app.pri.

I dropped the patch for run/main.cpp to get rid of a warning on my
terminal from a Qt Designer plugin.  Without the patch, run/main.cpp
stops loading such plugins.  I dropped a few other obsolete patches.

I dropped the dependency on x11/qt5/qtwebengine, because I can't see
where it is used.  (shared.pri says, "QCAD does not depend on WebKit /
WebEngine anymore and uses QTextBrowser instead:")

My last experience with any CAD was more than 20 years ago, but I am
able to start qcad 3.32.4.0 on amd64 and draw a silly diagram.
--gkoehler

Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/qcad/Makefile,v
diff -u -p -r1.47 Makefile
--- Makefile	2 Jan 2024 10:15:24 -0000	1.47
+++ Makefile	16 Nov 2025 19:01:45 -0000
@@ -2,9 +2,9 @@ COMMENT =	Qt-based 2D CAD system
 
 GH_ACCOUNT =	qcad
 GH_PROJECT =	qcad
-GH_TAGNAME =	v3.28.2.2
+GH_TAGNAME =	v3.32.4.0
 
-SO_VERSION =	2.0
+SO_VERSION =	3.0
 QCAD_LIBS =	qcadcore \
 		qcadecmaapi \
 		qcadentity \
@@ -31,7 +31,8 @@ PERMIT_PACKAGE =Yes
 WANTLIB += ${COMPILER_LIBCXX} GL Qt5Concurrent Qt5Core Qt5Designer
 WANTLIB += Qt5Gui Qt5Help Qt5Network Qt5OpenGL Qt5PrintSupport
 WANTLIB += Qt5Script Qt5ScriptTools Qt5Sql Qt5Svg Qt5Widgets Qt5Xml
-WANTLIB += Qt5XmlPatterns c cups jpeg m sqlite3 stemmer tiff z
+WANTLIB += Qt5XmlPatterns c cups execinfo jpeg m sqlite3 stemmer
+WANTLIB += tiff z
 
 MODULES =	devel/qmake \
 		x11/qt5
@@ -39,8 +40,7 @@ MODULES =	devel/qmake \
 BUILD_DEPENDS =	sysutils/e2fsprogs \
 		x11/qt5/qtimageformats
 
-RUN_DEPENDS =	devel/desktop-file-utils \
-		x11/qt5/qtwebengine
+RUN_DEPENDS =	devel/desktop-file-utils
 
 LIB_DEPENDS =	print/cups,-libs \
 		textproc/libstemmer \
@@ -63,17 +63,11 @@ pre-configure:
 	cp ${WRKSRC}/src/3rdparty/qt-labs-qtscriptgenerator-5.15.3/qt-labs-qtscriptgenerator-5.15.3.pro \
            ${WRKSRC}/src/3rdparty/qt-labs-qtscriptgenerator-${MODQT5_VERSION}/qt-labs-qtscriptgenerator-${MODQT5_VERSION}.pro
 	${SUBST_CMD} ${WRKSRC}/src/core/RS.cpp \
-		${WRKSRC}/src/core/RSettings.cpp \
-		${WRKSRC}/scripts/Help/ShowReadme/ShowReadme.js
-
+		${WRKSRC}/src/core/RSettings.cpp
 
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/release/qcad-bin ${PREFIX}/bin/qcad
-.for _lib in ${QCAD_LIBS}
-	${INSTALL_DATA} ${WRKSRC}/release/lib${_lib}.so \
-		${PREFIX}/lib/lib${_lib}.so.${SO_VERSION}
-.endfor
-	${INSTALL_DATA} ${WRKSRC}/release/*.a ${PREFIX}/lib/
+	${INSTALL_DATA} ${WRKSRC}/release/*.{a,so.*} ${PREFIX}/lib/
 	${INSTALL_MAN} ${WRKSRC}/qcad.1 ${PREFIX}/man/man1
 	${INSTALL_DATA_DIR} ${PREFIX}/share/applications
 	${INSTALL_DATA} ${WRKSRC}/qcad.desktop ${PREFIX}/share/applications
@@ -81,7 +75,9 @@ do-install:
 .for dir in fonts libraries linetypes patterns plugins scripts themes ts
 	cp -Rp ${WRKSRC}/${dir} ${PREFIX}/share/qcad/
 .endfor
-	find ${PREFIX} \( -name .gitignore -or -name *.pr[io] -or -name *.ts \) -delete
+	find ${PREFIX} \( -name .gitignore -or \
+		-name '*.orig.port' -or -name '*.pr[io]' -or \
+		-name '*.ts' \) -delete
 	${INSTALL_DATA} ${WRKSRC}/readme.txt ${PREFIX}/share/qcad
 	${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps
 	${INSTALL_DATA} ${WRKSRC}/scripts/qcad_icon.png \
Index: distinfo
===================================================================
RCS file: /cvs/ports/cad/qcad/distinfo,v
diff -u -p -r1.13 distinfo
--- distinfo	14 Dec 2023 12:17:57 -0000	1.13
+++ distinfo	16 Nov 2025 19:01:45 -0000
@@ -1,2 +1,2 @@
-SHA256 (qcad-3.28.2.2.tar.gz) = YXNJV+adhsc2E8bTeDyT71/J92smaoDFoBHbESE3lDw=
-SIZE (qcad-3.28.2.2.tar.gz) = 42292122
+SHA256 (qcad-3.32.4.0.tar.gz) = kqo5h2oMIvpsC2nxtNLeL3DYsis9FMrO7VSPd9CjiLw=
+SIZE (qcad-3.32.4.0.tar.gz) = 48002361
Index: patches/patch-scripts_Help_About_About_js
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-scripts_Help_About_About_js,v
diff -u -p -r1.4 patch-scripts_Help_About_About_js
--- patches/patch-scripts_Help_About_About_js	29 Aug 2022 15:18:10 -0000	1.4
+++ patches/patch-scripts_Help_About_About_js	16 Nov 2025 19:01:45 -0000
@@ -1,7 +1,7 @@
 Index: scripts/Help/About/About.js
 --- scripts/Help/About/About.js.orig
 +++ scripts/Help/About/About.js
-@@ -474,6 +474,9 @@ About.prototype.initAboutSystem = function(textEdit) {
+@@ -475,6 +475,9 @@ About.prototype.initAboutSystem = function(textEdit) {
      if (RS.getSystemId()==="solaris") {
          text += "Solaris";
      }
Index: patches/patch-scripts_Help_ShowReadme_ShowReadme_js
===================================================================
RCS file: patches/patch-scripts_Help_ShowReadme_ShowReadme_js
diff -N patches/patch-scripts_Help_ShowReadme_ShowReadme_js
--- patches/patch-scripts_Help_ShowReadme_ShowReadme_js	29 Aug 2022 15:18:10 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: scripts/Help/ShowReadme/ShowReadme.js
---- scripts/Help/ShowReadme/ShowReadme.js.orig
-+++ scripts/Help/ShowReadme/ShowReadme.js
-@@ -19,7 +19,7 @@
- 
- include("scripts/Help/Help.js");
- 
--ShowReadme.readmeFile = "readme.txt";
-+ShowReadme.readmeFile = "${LOCALBASE}/share/qcadreadme.txt";
- 
- function ShowReadme(guiAction) {
-     Help.call(this, guiAction);
Index: patches/patch-scripts_Widgets_CommandLine_CommandLine_js
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-scripts_Widgets_CommandLine_CommandLine_js,v
diff -u -p -r1.5 patch-scripts_Widgets_CommandLine_CommandLine_js
--- patches/patch-scripts_Widgets_CommandLine_CommandLine_js	2 Jan 2023 12:40:09 -0000	1.5
+++ patches/patch-scripts_Widgets_CommandLine_CommandLine_js	16 Nov 2025 19:01:45 -0000
@@ -1,7 +1,7 @@
 Index: scripts/Widgets/CommandLine/CommandLine.js
 --- scripts/Widgets/CommandLine/CommandLine.js.orig
 +++ scripts/Widgets/CommandLine/CommandLine.js
-@@ -498,6 +498,9 @@ CommandLine.init = function(basePath) {
+@@ -539,6 +539,9 @@ CommandLine.init = function(basePath) {
      case "solaris":
          system = "Solaris";
          break;
@@ -9,5 +9,5 @@ Index: scripts/Widgets/CommandLine/Comma
 +        system = "OpenBSD";
 +        break;
      }
-     EAction.handleUserMessage(
-                 "%1 %2 / Qt %3 / %4 %5"
+     var platformName = "";
+     if (RSettings.getQtVersion() >= 0x060000) {
Index: patches/patch-shared_app_pri
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-shared_app_pri,v
diff -u -p -r1.3 patch-shared_app_pri
--- patches/patch-shared_app_pri	29 Aug 2022 15:18:10 -0000	1.3
+++ patches/patch-shared_app_pri	16 Nov 2025 19:01:45 -0000
@@ -10,3 +10,14 @@ Index: shared_app.pri
  }
  
  win32 {
+@@ -45,6 +45,10 @@ linux-g++ {
+ 
+ freebsd-* {
+     LIBS += -lGLU -lexecinfo
++}
++
++openbsd {
++    LIBS += -lexecinfo
+ }
+ 
+ macx {
Index: patches/patch-src_3rdparty_3rdparty_pro
===================================================================
RCS file: patches/patch-src_3rdparty_3rdparty_pro
diff -N patches/patch-src_3rdparty_3rdparty_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_3rdparty_3rdparty_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,31 @@
+Must use textproc/libstemmer, because qcad links to the port if it is
+installed.
+
+Index: src/3rdparty/3rdparty.pro
+--- src/3rdparty/3rdparty.pro.orig
++++ src/3rdparty/3rdparty.pro
+@@ -1,7 +1,7 @@
+ include (../../shared.pri)
+ TEMPLATE = subdirs
+ SUBDIRS = \
+-    stemmer \
++    #stemmer \
+     legacy
+ 
+ 
+@@ -27,12 +27,12 @@ else {
+ }
+ 
+ !r_mobile {
+-    exists(qt-labs-qtscriptgenerator-$${QT_VERSION}) {
+-        SUBDIRS += qt-labs-qtscriptgenerator-$${QT_VERSION}
++    exists(qt-labs-qtscriptgenerator-5.15.16) {
++        SUBDIRS += qt-labs-qtscriptgenerator-5.15.16
+     }
+     else {
+         lessThan(QT_MAJOR_VERSION, 6) {
+-            error("Script bindings not available for Qt version $${QT_VERSION}. You can add them to src/3rdparty/qt-labs-qtscriptgenerator-$${QT_VERSION} or use another version of Qt.")
++            error("Script bindings not available for Qt version 5.15.16. You can add them to src/3rdparty/qt-labs-qtscriptgenerator-5.15.16 or use another version of Qt.")
+         }
+     }
+ }
Index: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_pro
===================================================================
RCS file: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_pro
diff -N patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,12 @@
+Use base zlib.  A future version of qcad might need this patch moved
+from 3rdparty/legacy/opennurbs to 3rdparty/opennurbs.
+
+Index: src/3rdparty/legacy/opennurbs/opennurbs.pro
+--- src/3rdparty/legacy/opennurbs/opennurbs.pro.orig
++++ src/3rdparty/legacy/opennurbs/opennurbs.pro
+@@ -1,5 +1,4 @@
+ include (../../../../shared.pri)
+ TEMPLATE = subdirs
+ SUBDIRS = \
+-    zlib \
+     opennurbs
Index: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_cpp
===================================================================
RCS file: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_cpp
diff -N patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_cpp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_cpp	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,62 @@
+Use base zlib.  A future version of qcad might need this patch moved
+from 3rdparty/legacy/opennurbs to 3rdparty/opennurbs.
+
+Index: src/3rdparty/legacy/opennurbs/opennurbs_zlib.cpp
+--- src/3rdparty/legacy/opennurbs/opennurbs_zlib.cpp.orig
++++ src/3rdparty/legacy/opennurbs/opennurbs_zlib.cpp
+@@ -293,11 +293,11 @@ size_t ON_BinaryArchive::WriteDeflate( // returns numb
+       // no uncompressed input is left - switch to finish mode
+       flush = Z_FINISH;
+     }
+-    zrc = z_deflate( &m_zlib.strm, flush ); 
++    zrc = deflate( &m_zlib.strm, flush ); 
+     if ( zrc < 0 ) 
+     {
+       // Something went haywire - bail out.
+-      ON_ERROR("ON_BinaryArchive::WriteDeflate - z_deflate failure");
++      ON_ERROR("ON_BinaryArchive::WriteDeflate - deflate failure");
+       rc = false;
+       break;
+     }
+@@ -491,11 +491,11 @@ bool ON_BinaryArchive::ReadInflate(
+       // no compressed input is left - switch to finish mode
+       flush = Z_FINISH;
+     }
+-    zrc = z_inflate( &m_zlib.strm, flush );
++    zrc = inflate( &m_zlib.strm, flush );
+     if ( zrc < 0 ) 
+     {
+       // Something went haywire - bail out.
+-      ON_ERROR("ON_BinaryArchive::ReadInflate - z_inflate failure");
++      ON_ERROR("ON_BinaryArchive::ReadInflate - inflate failure");
+       rc = false;
+       break;
+     }
+@@ -1151,11 +1151,11 @@ size_t ON_CompressedBuffer::DeflateHelper( // returns 
+       // no uncompressed input is left - switch to finish mode
+       flush = Z_FINISH;
+     }
+-    zrc = z_deflate( &m_zlib.strm, flush ); 
++    zrc = deflate( &m_zlib.strm, flush ); 
+     if ( zrc < 0 ) 
+     {
+       // Something went haywire - bail out.
+-      ON_ERROR("ON_CompressedBuffer::DeflateHelper - z_deflate failure");
++      ON_ERROR("ON_CompressedBuffer::DeflateHelper - deflate failure");
+       rc = false;
+       break;
+     }
+@@ -1284,11 +1284,11 @@ bool ON_CompressedBuffer::InflateHelper(
+       // no compressed input is left - switch to finish mode
+       flush = Z_FINISH;
+     }
+-    zrc = z_inflate( &m_zlib.strm, flush );
++    zrc = inflate( &m_zlib.strm, flush );
+     if ( zrc < 0 ) 
+     {
+       // Something went haywire - bail out.
+-      ON_ERROR("ON_CompressedBuffer::InflateHelper - z_inflate failure");
++      ON_ERROR("ON_CompressedBuffer::InflateHelper - inflate failure");
+       rc = false;
+       break;
+     }
Index: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_h
===================================================================
RCS file: patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_h
diff -N patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_3rdparty_legacy_opennurbs_opennurbs_zlib_h	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,15 @@
+Use base zlib.  A future version of qcad might need this patch moved
+from 3rdparty/legacy/opennurbs to 3rdparty/opennurbs.
+
+Index: src/3rdparty/legacy/opennurbs/opennurbs_zlib.h
+--- src/3rdparty/legacy/opennurbs/opennurbs_zlib.h.orig
++++ src/3rdparty/legacy/opennurbs/opennurbs_zlib.h
+@@ -39,7 +39,7 @@
+ #endif
+ 
+ extern "C" {
+-#include "./zlib/zlib.h"
++#include <zlib.h>
+ }
+ 
+ ON_BEGIN_EXTERNC
Index: patches/patch-src_3rdparty_legacy_spatialindexnavel_spatialindexnavel_pro
===================================================================
RCS file: patches/patch-src_3rdparty_legacy_spatialindexnavel_spatialindexnavel_pro
diff -N patches/patch-src_3rdparty_legacy_spatialindexnavel_spatialindexnavel_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_3rdparty_legacy_spatialindexnavel_spatialindexnavel_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/3rdparty/legacy/spatialindexnavel/spatialindexnavel.pro
+--- src/3rdparty/legacy/spatialindexnavel/spatialindexnavel.pro.orig
++++ src/3rdparty/legacy/spatialindexnavel/spatialindexnavel.pro
+@@ -6,7 +6,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ 
+ # this is required to compile the spatial index library from navel ltd:
Index: patches/patch-src_3rdparty_opennurbs_opennurbs_opennurbs_pro
===================================================================
RCS file: patches/patch-src_3rdparty_opennurbs_opennurbs_opennurbs_pro
diff -N patches/patch-src_3rdparty_opennurbs_opennurbs_opennurbs_pro
--- patches/patch-src_3rdparty_opennurbs_opennurbs_opennurbs_pro	11 Mar 2022 18:24:31 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: src/3rdparty/opennurbs/opennurbs/opennurbs.pro
---- src/3rdparty/opennurbs/opennurbs/opennurbs.pro.orig
-+++ src/3rdparty/opennurbs/opennurbs/opennurbs.pro
-@@ -225,7 +225,7 @@ CONFIG(release, debug|release) {
- else {
-     LIBS += -L../zlib/debug
- }
--LIBS += -lzlib
-+LIBS += -lz
- win32 {
-     #DEFINES += ON_DLL_EXPORTS ON_COMPILING_OPENNURBS NDEBUG
-     DEFINES += ON_COMPILING_OPENNURBS NDEBUG
Index: patches/patch-src_3rdparty_opennurbs_opennurbs_pro
===================================================================
RCS file: patches/patch-src_3rdparty_opennurbs_opennurbs_pro
diff -N patches/patch-src_3rdparty_opennurbs_opennurbs_pro
--- patches/patch-src_3rdparty_opennurbs_opennurbs_pro	11 Mar 2022 18:24:31 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-Index: src/3rdparty/opennurbs/opennurbs.pro
---- src/3rdparty/opennurbs/opennurbs.pro.orig
-+++ src/3rdparty/opennurbs/opennurbs.pro
-@@ -1,5 +1,4 @@
- include (../../../shared.pri)
- TEMPLATE = subdirs
- SUBDIRS = \
--    zlib \
-     opennurbs
Index: patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_cpp
===================================================================
RCS file: patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_cpp
diff -N patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_cpp
--- patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_cpp	11 Mar 2022 18:24:31 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,59 +0,0 @@
-Index: src/3rdparty/opennurbs/opennurbs_zlib.cpp
---- src/3rdparty/opennurbs/opennurbs_zlib.cpp.orig
-+++ src/3rdparty/opennurbs/opennurbs_zlib.cpp
-@@ -293,11 +293,11 @@ size_t ON_BinaryArchive::WriteDeflate( // returns numb
-       // no uncompressed input is left - switch to finish mode
-       flush = Z_FINISH;
-     }
--    zrc = z_deflate( &m_zlib.strm, flush ); 
-+    zrc = deflate( &m_zlib.strm, flush ); 
-     if ( zrc < 0 ) 
-     {
-       // Something went haywire - bail out.
--      ON_ERROR("ON_BinaryArchive::WriteDeflate - z_deflate failure");
-+      ON_ERROR("ON_BinaryArchive::WriteDeflate - deflate failure");
-       rc = false;
-       break;
-     }
-@@ -491,11 +491,11 @@ bool ON_BinaryArchive::ReadInflate(
-       // no compressed input is left - switch to finish mode
-       flush = Z_FINISH;
-     }
--    zrc = z_inflate( &m_zlib.strm, flush );
-+    zrc = inflate( &m_zlib.strm, flush );
-     if ( zrc < 0 ) 
-     {
-       // Something went haywire - bail out.
--      ON_ERROR("ON_BinaryArchive::ReadInflate - z_inflate failure");
-+      ON_ERROR("ON_BinaryArchive::ReadInflate - inflate failure");
-       rc = false;
-       break;
-     }
-@@ -1151,11 +1151,11 @@ size_t ON_CompressedBuffer::DeflateHelper( // returns 
-       // no uncompressed input is left - switch to finish mode
-       flush = Z_FINISH;
-     }
--    zrc = z_deflate( &m_zlib.strm, flush ); 
-+    zrc = deflate( &m_zlib.strm, flush ); 
-     if ( zrc < 0 ) 
-     {
-       // Something went haywire - bail out.
--      ON_ERROR("ON_CompressedBuffer::DeflateHelper - z_deflate failure");
-+      ON_ERROR("ON_CompressedBuffer::DeflateHelper - deflate failure");
-       rc = false;
-       break;
-     }
-@@ -1284,11 +1284,11 @@ bool ON_CompressedBuffer::InflateHelper(
-       // no compressed input is left - switch to finish mode
-       flush = Z_FINISH;
-     }
--    zrc = z_inflate( &m_zlib.strm, flush );
-+    zrc = inflate( &m_zlib.strm, flush );
-     if ( zrc < 0 ) 
-     {
-       // Something went haywire - bail out.
--      ON_ERROR("ON_CompressedBuffer::InflateHelper - z_inflate failure");
-+      ON_ERROR("ON_CompressedBuffer::InflateHelper - inflate failure");
-       rc = false;
-       break;
-     }
Index: patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_h
===================================================================
RCS file: patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_h
diff -N patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_h
--- patches/patch-src_3rdparty_opennurbs_opennurbs_zlib_h	11 Mar 2022 18:24:31 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-Index: src/3rdparty/opennurbs/opennurbs_zlib.h
---- src/3rdparty/opennurbs/opennurbs_zlib.h.orig
-+++ src/3rdparty/opennurbs/opennurbs_zlib.h
-@@ -30,7 +30,7 @@
- 
- #if !defined(Z_PREFIX)
- /* decorates zlib functions with a "z_" prefix to prevent symbol collision. */
--#define Z_PREFIX
-+//#define Z_PREFIX
- #endif
- 
- #if !defined(MY_ZCALLOC)
-@@ -38,7 +38,7 @@
- //#define MY_ZCALLOC
- #endif
- 
--#include "./zlib/zlib.h"
-+#include <zlib.h>
- 
- ON_BEGIN_EXTERNC
- voidpf zcalloc (voidpf, unsigned, unsigned);
Index: patches/patch-src_3rdparty_qt-labs-qtscriptgenerator-5_5_0_qtbindings_qtbindingsbase_pri
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-src_3rdparty_qt-labs-qtscriptgenerator-5_5_0_qtbindings_qtbindingsbase_pri,v
diff -u -p -r1.2 patch-src_3rdparty_qt-labs-qtscriptgenerator-5_5_0_qtbindings_qtbindingsbase_pri
--- patches/patch-src_3rdparty_qt-labs-qtscriptgenerator-5_5_0_qtbindings_qtbindingsbase_pri	11 Mar 2022 18:24:31 -0000	1.2
+++ patches/patch-src_3rdparty_qt-labs-qtscriptgenerator-5_5_0_qtbindings_qtbindingsbase_pri	16 Nov 2025 19:01:45 -0000
@@ -1,3 +1,6 @@
+Build plugins/script/libqtscript_*.so as plugins (without a version
+number) and only for release.
+
 Index: src/3rdparty/qt-labs-qtscriptgenerator-5.5.0/qtbindings/qtbindingsbase.pri
 --- src/3rdparty/qt-labs-qtscriptgenerator-5.5.0/qtbindings/qtbindingsbase.pri.orig
 +++ src/3rdparty/qt-labs-qtscriptgenerator-5.5.0/qtbindings/qtbindingsbase.pri
@@ -6,6 +9,6 @@ Index: src/3rdparty/qt-labs-qtscriptgene
  QT += script
  #CONFIG += plugin release build_all
 -CONFIG += debug_and_release
-+CONFIG += release
++CONFIG += plugin release
  GENERATEDCPP = $$PWD/../generated_cpp
  TARGET=$$qtLibraryTarget($$TARGET)
Index: patches/patch-src_core_RDebug_cpp
===================================================================
RCS file: patches/patch-src_core_RDebug_cpp
diff -N patches/patch-src_core_RDebug_cpp
--- patches/patch-src_core_RDebug_cpp	14 Dec 2023 12:17:57 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-Forcefully disable the use of backtrace/backtrace_symbols which we don't
-have in our libc.
-
-Index: src/core/RDebug.cpp
---- src/core/RDebug.cpp.orig
-+++ src/core/RDebug.cpp
-@@ -37,7 +37,7 @@ QString RDebug::prefix;
- QMutex RDebug::mutexCounter;
- 
- void RDebug::printBacktrace(const QString& prefix) {
--#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID)
-+#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID) && !defined(Q_OS_OPENBSD)
-     void *array[20];
-     size_t size;
-     char **strings;
Index: patches/patch-src_core_RS_cpp
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-src_core_RS_cpp,v
diff -u -p -r1.4 patch-src_core_RS_cpp
--- patches/patch-src_core_RS_cpp	2 Jan 2023 12:40:09 -0000	1.4
+++ patches/patch-src_core_RS_cpp	16 Nov 2025 19:01:45 -0000
@@ -1,7 +1,7 @@
 Index: src/core/RS.cpp
 --- src/core/RS.cpp.orig
 +++ src/core/RS.cpp
-@@ -177,6 +177,9 @@ QStringList RS::getDirectoryList(const QString& subDir
+@@ -179,6 +179,9 @@ QStringList RS::getDirectoryList(const QString& subDir
      dirList.append(appDir + "/../Resources/" + subDirectory);
      dirList.append(appDir + "/../../../" + subDirectory);
      dirList.append(QDir::currentPath() + "/" + subDirectory);
Index: patches/patch-src_core_RSettings_cpp
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-src_core_RSettings_cpp,v
diff -u -p -r1.4 patch-src_core_RSettings_cpp
--- patches/patch-src_core_RSettings_cpp	29 Aug 2022 15:18:11 -0000	1.4
+++ patches/patch-src_core_RSettings_cpp	16 Nov 2025 19:01:45 -0000
@@ -1,7 +1,7 @@
 Index: src/core/RSettings.cpp
 --- src/core/RSettings.cpp.orig
 +++ src/core/RSettings.cpp
-@@ -364,9 +364,13 @@ QString RSettings::getApplicationPath() {
+@@ -393,9 +393,13 @@ QString RSettings::getApplicationPath() {
      }
  #endif
  
Index: patches/patch-src_core_core_pro
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-src_core_core_pro,v
diff -u -p -r1.3 patch-src_core_core_pro
--- patches/patch-src_core_core_pro	29 Aug 2022 15:18:11 -0000	1.3
+++ patches/patch-src_core_core_pro	16 Nov 2025 19:01:45 -0000
@@ -1,7 +1,18 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
 Index: src/core/core.pro
 --- src/core/core.pro.orig
 +++ src/core/core.pro
-@@ -309,7 +309,7 @@ RC_FILE = core.rc
+@@ -307,7 +307,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ 
+ QT += concurrent
+@@ -319,7 +319,7 @@ RC_FILE = core.rc
  OTHER_FILES += core.dox math/math.dox
  DEFINES += QCADCORE_LIBRARY
  
Index: patches/patch-src_entity_entity_pro
===================================================================
RCS file: patches/patch-src_entity_entity_pro
diff -N patches/patch-src_entity_entity_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_entity_entity_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/entity/entity.pro
+--- src/entity/entity.pro.orig
++++ src/entity/entity.pro
+@@ -135,7 +135,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ NAME = $${RLIBNAME}entity
+ TARGET = $${NAME}
Index: patches/patch-src_grid_grid_pro
===================================================================
RCS file: patches/patch-src_grid_grid_pro
diff -N patches/patch-src_grid_grid_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_grid_grid_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/grid/grid.pro
+--- src/grid/grid.pro.orig
++++ src/grid/grid.pro
+@@ -11,7 +11,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ TARGET = $${RLIBNAME}grid
+ LIBS += -l$${RLIBNAME}core
Index: patches/patch-src_gui_RRulerQt_cpp
===================================================================
RCS file: patches/patch-src_gui_RRulerQt_cpp
diff -N patches/patch-src_gui_RRulerQt_cpp
--- patches/patch-src_gui_RRulerQt_cpp	29 Aug 2022 15:18:11 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-Index: src/gui/RRulerQt.cpp
---- src/gui/RRulerQt.cpp.orig
-+++ src/gui/RRulerQt.cpp
-@@ -26,6 +26,7 @@
- 
- #include <QApplication>
- #include <QPainter>
-+#include <QPainterPath>
- 
- /**
-  * Constructor
Index: patches/patch-src_gui_gui_pro
===================================================================
RCS file: patches/patch-src_gui_gui_pro
diff -N patches/patch-src_gui_gui_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_gui_gui_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/gui/gui.pro
+--- src/gui/gui.pro.orig
++++ src/gui/gui.pro
+@@ -96,7 +96,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ 
+ LIBS += -l$${RLIBNAME}core -l$${RLIBNAME}entity
Index: patches/patch-src_operations_operations_pro
===================================================================
RCS file: patches/patch-src_operations_operations_pro
diff -N patches/patch-src_operations_operations_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_operations_operations_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/operations/operations.pro
+--- src/operations/operations.pro.orig
++++ src/operations/operations.pro
+@@ -43,7 +43,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ TARGET = $${RLIBNAME}operations
+ LIBS += \
Index: patches/patch-src_run_main_cpp
===================================================================
RCS file: patches/patch-src_run_main_cpp
diff -N patches/patch-src_run_main_cpp
--- patches/patch-src_run_main_cpp	14 Dec 2023 12:17:57 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-don't overwrite the plugins directory: remove the applicationDir and add the pluginPaths
-
-Index: src/run/main.cpp
---- src/run/main.cpp.orig
-+++ src/run/main.cpp
-@@ -326,7 +326,11 @@ int main(int argc, char *argv[]) {
-         qWarning() << "No plugin paths found";
-         return -1;
-     }
--    app->setLibraryPaths(pluginPaths);
-+
-+    app->removeLibraryPath(app->applicationDirPath());
-+    foreach (const QString &path, pluginPaths)
-+       app->addLibraryPath(path);
-+
- 
-     // make sure basic entities are initialized before loading plugins:
-     RDimStyleData::initDefaults();
Index: patches/patch-src_scripting_ecmaapi_ecmaapi_pro
===================================================================
RCS file: /cvs/ports/cad/qcad/patches/patch-src_scripting_ecmaapi_ecmaapi_pro,v
diff -u -p -r1.2 patch-src_scripting_ecmaapi_ecmaapi_pro
--- patches/patch-src_scripting_ecmaapi_ecmaapi_pro	11 Mar 2022 18:24:31 -0000	1.2
+++ patches/patch-src_scripting_ecmaapi_ecmaapi_pro	16 Nov 2025 19:01:45 -0000
@@ -1,11 +1,13 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
 Index: src/scripting/ecmaapi/ecmaapi.pro
 --- src/scripting/ecmaapi/ecmaapi.pro.orig
 +++ src/scripting/ecmaapi/ecmaapi.pro
-@@ -4,7 +4,6 @@ CONFIG += plugin
+@@ -1,6 +1,6 @@
+ include( ../../../shared.pri )
+ TEMPLATE = lib
+-CONFIG += plugin
++#CONFIG += plugin
  TARGET = $${RLIBNAME}ecmaapi
  CONFIG -= warn_on
  CONFIG += warn_off
--CONFIG += precompile_header
- PRECOMPILED_HEADER = stable.h
- OTHER_FILES += ecmaapi.dox
- DEFINES += QCADECMAAPI_LIBRARY
Index: patches/patch-src_snap_snap_pro
===================================================================
RCS file: patches/patch-src_snap_snap_pro
diff -N patches/patch-src_snap_snap_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_snap_snap_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/snap/snap.pro
+--- src/snap/snap.pro.orig
++++ src/snap/snap.pro
+@@ -42,7 +42,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ TARGET = $${RLIBNAME}snap
+ LIBS += -l$${RLIBNAME}core -l$${RLIBNAME}grid -l$${RLIBNAME}entity
Index: patches/patch-src_spatialindex_spatialindex_pro
===================================================================
RCS file: patches/patch-src_spatialindex_spatialindex_pro
diff -N patches/patch-src_spatialindex_spatialindex_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_spatialindex_spatialindex_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,14 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Index: src/spatialindex/spatialindex.pro
+--- src/spatialindex/spatialindex.pro.orig
++++ src/spatialindex/spatialindex.pro
+@@ -11,7 +11,7 @@ r_static_libs {
+     CONFIG += staticlib
+ }
+ else {
+-    CONFIG += plugin
++    #CONFIG += plugin
+ }
+ TARGET = $${RLIBNAME}spatialindex
+ LIBS += -l$${RLIBNAME}core -lspatialindexnavel
Index: patches/patch-src_stemmer_RStemmer_cpp
===================================================================
RCS file: patches/patch-src_stemmer_RStemmer_cpp
diff -N patches/patch-src_stemmer_RStemmer_cpp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_stemmer_RStemmer_cpp	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,15 @@
+Must use textproc/libstemmer, because qcad links to the port if it is
+installed.
+
+Index: src/stemmer/RStemmer.cpp
+--- src/stemmer/RStemmer.cpp.orig
++++ src/stemmer/RStemmer.cpp
+@@ -18,7 +18,7 @@
+  */
+ #include <QDebug>
+ 
+-#include "stemmer/include/libstemmer.h"
++#include <libstemmer.h>
+ 
+ #include "RStemmer.h"
+ 
Index: patches/patch-src_stemmer_stemmer_pro
===================================================================
RCS file: patches/patch-src_stemmer_stemmer_pro
diff -N patches/patch-src_stemmer_stemmer_pro
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_stemmer_stemmer_pro	16 Nov 2025 19:01:45 -0000
@@ -0,0 +1,22 @@
+CONFIG -= plugin if shared_app.pri links to it.
+
+Must use textproc/libstemmer, because qcad links to the port if it is
+installed.
+
+Index: src/stemmer/stemmer.pro
+--- src/stemmer/stemmer.pro.orig
++++ src/stemmer/stemmer.pro
+@@ -5,11 +5,11 @@ HEADERS = \
+     RStemmer.h
+ 
+ TEMPLATE = lib
+-CONFIG += plugin
++#CONFIG += plugin
+ TARGET = $${RLIBNAME}stemmer
+ LIBS += -lstemmer
+ OTHER_FILES += stemmer.dox
+ DEFINES += QCADSTEMMER_LIBRARY
+ RC_FILE = stemmer.rc
+ 
+-POST_TARGETDEPS += $$PWD/../../$$ROUTDIR/$${RLIBPRE}stemmer$${RLIBPOST}
++#POST_TARGETDEPS += $$PWD/../../$$ROUTDIR/$${RLIBPRE}stemmer$${RLIBPOST}
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/cad/qcad/pkg/PLIST,v
diff -u -p -r1.14 PLIST
--- pkg/PLIST	14 Dec 2023 12:17:57 -0000	1.14
+++ pkg/PLIST	16 Nov 2025 19:01:46 -0000
@@ -11,7 +11,6 @@
 @lib lib/libqcadspatialindex.so.${LIBqcadspatialindex_VERSION}
 @lib lib/libqcadstemmer.so.${LIBqcadstemmer_VERSION}
 @lib lib/libspatialindexnavel.so.${LIBspatialindexnavel_VERSION}
-@static-lib lib/libstemmer.a
 @man man/man1/qcad.1
 share/applications/qcad.desktop
 share/examples/qcad/
@@ -547,16 +546,16 @@ share/qcad/plugins/printsupport/
 @so share/qcad/plugins/printsupport/libcupsprintersupport.so
 share/qcad/plugins/printsupport/readme.txt
 share/qcad/plugins/script/
-@lib share/qcad/plugins/script/libqtscript_core.so.1.0
-@lib share/qcad/plugins/script/libqtscript_gui.so.1.0
-@lib share/qcad/plugins/script/libqtscript_network.so.1.0
-@lib share/qcad/plugins/script/libqtscript_opengl.so.1.0
-@lib share/qcad/plugins/script/libqtscript_printsupport.so.1.0
-@lib share/qcad/plugins/script/libqtscript_sql.so.1.0
-@lib share/qcad/plugins/script/libqtscript_uitools.so.1.0
-@lib share/qcad/plugins/script/libqtscript_widgets.so.1.0
-@lib share/qcad/plugins/script/libqtscript_xml.so.1.0
-@lib share/qcad/plugins/script/libqtscript_xmlpatterns.so.1.0
+@so share/qcad/plugins/script/libqtscript_core.so
+@so share/qcad/plugins/script/libqtscript_gui.so
+@so share/qcad/plugins/script/libqtscript_network.so
+@so share/qcad/plugins/script/libqtscript_opengl.so
+@so share/qcad/plugins/script/libqtscript_printsupport.so
+@so share/qcad/plugins/script/libqtscript_sql.so
+@so share/qcad/plugins/script/libqtscript_uitools.so
+@so share/qcad/plugins/script/libqtscript_widgets.so
+@so share/qcad/plugins/script/libqtscript_xml.so
+@so share/qcad/plugins/script/libqtscript_xmlpatterns.so
 share/qcad/plugins/sqldrivers/
 @so share/qcad/plugins/sqldrivers/libqsqlite.so
 share/qcad/plugins/sqldrivers/readme.txt
@@ -1735,9 +1734,19 @@ share/qcad/scripts/Draw/Arc/ArcTPR/ArcTP
 share/qcad/scripts/Draw/Arc/ArcTPR/ArcTPRInit.js
 share/qcad/scripts/Draw/Arc/ArcTPR/Tests/
 share/qcad/scripts/Draw/Arc/ArcTPR/Tests/ArcTPRTest00.js
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/ArcTPRTest01.js
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/ArcTPRTest02.js
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/ArcTPRTest03.js
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/ArcTPRTest04.js
 share/qcad/scripts/Draw/Arc/ArcTPR/Tests/actual/
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/data/
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/data/four_solutions.dxf
 share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/
 share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/ArcTPRTest00_000.dxf
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/ArcTPRTest01_000.dxf
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/ArcTPRTest02_000.dxf
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/ArcTPRTest03_000.dxf
+share/qcad/scripts/Draw/Arc/ArcTPR/Tests/required/ArcTPRTest04_000.dxf
 share/qcad/scripts/Draw/Arc/ArcTPR/doc/
 share/qcad/scripts/Draw/Arc/ArcTPR/doc/ArcTPR.png
 share/qcad/scripts/Draw/Arc/ArcTPR/doc/ArcTPR_bg.html
@@ -1820,18 +1829,32 @@ share/qcad/scripts/Draw/Arc/ArcTangentia
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_nl.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_pl.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_bg.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_cs.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_da.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_de.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_en.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_es.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_et.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_fi.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_fr.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_hu.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_id.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_it.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_ja.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_lt.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_lv.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_nl.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_pl.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_pt.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_ro.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_ru.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_sk.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_sl.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_sv.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_tr.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_uk.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_zh_CN.html
+share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_proc_zh_TW.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_pt.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_ru.html
 share/qcad/scripts/Draw/Arc/ArcTangential/doc/ArcTangential_sl.html
@@ -2167,12 +2190,14 @@ share/qcad/scripts/Draw/Circle/Circle3T/
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/Circle3TTest01.js
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/Circle3TTest02.js
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/Circle3TTest03.js
+share/qcad/scripts/Draw/Circle/Circle3T/Tests/Circle3TTest04.js
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/actual/
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/Circle3TTest00_000.dxf
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/Circle3TTest01_000.dxf
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/Circle3TTest02_000.dxf
 share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/Circle3TTest03_000.dxf
+share/qcad/scripts/Draw/Circle/Circle3T/Tests/required/Circle3TTest04_000.dxf
 share/qcad/scripts/Draw/Circle/Circle3T/doc/
 share/qcad/scripts/Draw/Circle/Circle3T/doc/Circle3T.png
 share/qcad/scripts/Draw/Circle/Circle3T/doc/Circle3T_bg.html
@@ -3351,59 +3376,6 @@ share/qcad/scripts/Draw/Ellipse/EllipseD
 share/qcad/scripts/Draw/Ellipse/EllipseDD/doc/EllipseDD_ru.html
 share/qcad/scripts/Draw/Ellipse/EllipseDD/doc/EllipseDD_sl.html
 share/qcad/scripts/Draw/Ellipse/EllipseDD/doc/EllipseDD_sv.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/EllipseInscribedQuad-inverse.svg
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/EllipseInscribedQuad.js
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/EllipseInscribedQuad.svg
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/EllipseInscribedQuadInit.js
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/Tests/
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/Tests/EllipseInscribedQuadTest00.js
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/Tests/actual/
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/Tests/required/
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/Tests/required/EllipseInscribedQuadTest00_000.dxf
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad.png
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_bg.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_da.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_de.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_bg.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_da.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_de.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_en.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_es.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_fr.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_it.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_ja.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_nl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_pl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_pt.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_ru.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_sl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_desc_sv.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_en.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_es.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_fr.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_it.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_ja.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_nl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_pl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_bg.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_da.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_de.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_en.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_es.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_fr.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_it.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_ja.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_nl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_pl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_pt.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_ru.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_proc_sv.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_pt.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_ru.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_sl.html
-share/qcad/scripts/Draw/Ellipse/EllipseInscribedQuad/doc/EllipseInscribedQuad_sv.html
 share/qcad/scripts/Draw/Ellipse/EllipseOffset/
 share/qcad/scripts/Draw/Ellipse/EllipseOffset/EllipseOffset-inverse.svg
 share/qcad/scripts/Draw/Ellipse/EllipseOffset/EllipseOffset.js
@@ -4607,10 +4579,14 @@ share/qcad/scripts/Draw/Polyline/DrawPol
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/DrawPolylineTest00.js
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/DrawPolylineTest01.js
+share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/DrawPolylineTest02.js
+share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/DrawPolylineTest03.js
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/actual/
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/required/
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/required/DrawPolylineTest00_000.dxf
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/required/DrawPolylineTest01_000.dxf
+share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/required/DrawPolylineTest02_000.dxf
+share/qcad/scripts/Draw/Polyline/DrawPolyline/Tests/required/DrawPolylineTest03_000.dxf
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Undo-inverse.svg
 share/qcad/scripts/Draw/Polyline/DrawPolyline/Undo.svg
 share/qcad/scripts/Draw/Polyline/DrawPolyline/doc/
@@ -4915,10 +4891,42 @@ share/qcad/scripts/Draw/Shape/ShapeRecta
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest00.js
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest01.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest02.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest03.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest04.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest05.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest06.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest07.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest08.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest09.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest10.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest11.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest12.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest13.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest14.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest15.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest16.js
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/ShapeRectanglePPTest17.js
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/actual/
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest00_000.dxf
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest01_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest02_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest03_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest04_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest05_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest06_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest07_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest08_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest09_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest10_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest11_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest12_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest13_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest14_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest15_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest16_000.dxf
+share/qcad/scripts/Draw/Shape/ShapeRectanglePP/Tests/required/ShapeRectanglePPTest17_000.dxf
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/doc/
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/doc/ShapeRectanglePP.png
 share/qcad/scripts/Draw/Shape/ShapeRectanglePP/doc/ShapeRectanglePP_bg.html
@@ -7819,6 +7827,9 @@ share/qcad/scripts/Misc/Examples/ExMinim
 share/qcad/scripts/Misc/Examples/ExMinimal2/ExMinimal2.ui
 share/qcad/scripts/Misc/Examples/Examples.js
 share/qcad/scripts/Misc/Examples/IOExamples/
+share/qcad/scripts/Misc/Examples/IOExamples/ExCsvExport/
+share/qcad/scripts/Misc/Examples/IOExamples/ExCsvExport/ExCsvExport.js
+share/qcad/scripts/Misc/Examples/IOExamples/ExCsvExport/ExCsvExportInit.js
 share/qcad/scripts/Misc/Examples/IOExamples/ExDumpPolyline/
 share/qcad/scripts/Misc/Examples/IOExamples/ExDumpPolyline/ExDumpPolyline.js
 share/qcad/scripts/Misc/Examples/IOExamples/ExDumpPolyline/points.txt
@@ -8207,6 +8218,8 @@ share/qcad/scripts/Misc/MiscInformation/
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/InfoCentroidsListener.js
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/InfoCentroidsListener.svg
+share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/InfoCentroidsListenerActive.svg
+share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/InfoCentroidsListenerInactive.svg
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoCentroidsListener/InfoCentroidsListenerInit.js
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoSumCentroidsWeighted/
 share/qcad/scripts/Misc/MiscInformation/InfoCentroids/InfoSumCentroidsWeighted/InfoSumCentroidsWeighted-inverse.svg
@@ -8236,9 +8249,12 @@ share/qcad/scripts/Misc/MiscSelect/
 share/qcad/scripts/Misc/MiscSelect/MiscSelect.js
 share/qcad/scripts/Misc/MiscSelect/SelectByColor/
 share/qcad/scripts/Misc/MiscSelect/SelectByColor/SelectByColor.js
+share/qcad/scripts/Misc/MiscSelect/SelectByColor/SelectByColor.svg
 share/qcad/scripts/Misc/MiscSelect/SelectByColor/SelectByColorInit.js
 share/qcad/scripts/Misc/MiscSelect/SelectByHandle/
+share/qcad/scripts/Misc/MiscSelect/SelectByHandle/SelectByHandle-inverse.svg
 share/qcad/scripts/Misc/MiscSelect/SelectByHandle/SelectByHandle.js
+share/qcad/scripts/Misc/MiscSelect/SelectByHandle/SelectByHandle.svg
 share/qcad/scripts/Misc/MiscSelect/SelectByHandle/SelectByHandleDialog.ui
 share/qcad/scripts/Misc/MiscSelect/SelectByHandle/SelectByHandleInit.js
 share/qcad/scripts/Misc/MiscSelect/dir/
@@ -8260,6 +8276,7 @@ share/qcad/scripts/Misc/Tutorials/Comman
 share/qcad/scripts/Misc/Tutorials/CommandLineTools/dir/
 share/qcad/scripts/Misc/Tutorials/CreatingNewTool/
 share/qcad/scripts/Misc/Tutorials/CreatingNewTool/CreatingNewTool.dox
+share/qcad/scripts/Misc/Tutorials/CreatingNewTool/ExThreePoints.js
 share/qcad/scripts/Misc/Tutorials/ImportantClasses.dox
 share/qcad/scripts/Misc/Tutorials/LibraryBrowserScripts/
 share/qcad/scripts/Misc/Tutorials/LibraryBrowserScripts/CubeCuttingOut.js
@@ -8281,14 +8298,13 @@ share/qcad/scripts/Misc/Tutorials/Tutori
 share/qcad/scripts/Misc/Tutorials/dir/
 share/qcad/scripts/Misc/dir/
 share/qcad/scripts/Misc/doc/
-share/qcad/scripts/Misc/doc/Examples_de.html
-share/qcad/scripts/Misc/doc/Examples_en.html
-share/qcad/scripts/Misc/doc/Examples_ja.html
 share/qcad/scripts/Misc/doc/Misc.png
 share/qcad/scripts/Misc/doc/Misc_da.html
 share/qcad/scripts/Misc/doc/Misc_de.html
 share/qcad/scripts/Misc/doc/Misc_en.html
+share/qcad/scripts/Misc/doc/Misc_es.html
 share/qcad/scripts/Misc/doc/Misc_ja.html
+share/qcad/scripts/Misc/doc/Misc_pl.html
 share/qcad/scripts/Misc/doc/Misc_ru.html
 share/qcad/scripts/Misc/doc/Misc_sl.html
 share/qcad/scripts/Modify/
@@ -9263,6 +9279,8 @@ share/qcad/scripts/Modify/OffsetThrough/
 share/qcad/scripts/Modify/OffsetThrough/OffsetThroughInit.js
 share/qcad/scripts/Modify/OffsetThrough/doc/
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough.png
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_bg.html
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_da.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_de.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_desc_bg.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_desc_da.html
@@ -9283,6 +9301,8 @@ share/qcad/scripts/Modify/OffsetThrough/
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_fr.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_it.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_ja.html
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_nl.html
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_pl.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_proc_bg.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_proc_da.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_proc_de.html
@@ -9297,7 +9317,9 @@ share/qcad/scripts/Modify/OffsetThrough/
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_proc_ru.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_proc_sv.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_pt.html
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_ru.html
 share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_sl.html
+share/qcad/scripts/Modify/OffsetThrough/doc/OffsetThrough_sv.html
 share/qcad/scripts/Modify/Reverse/
 share/qcad/scripts/Modify/Reverse/Reverse-inverse.svg
 share/qcad/scripts/Modify/Reverse/Reverse.js
@@ -9788,6 +9810,7 @@ share/qcad/scripts/Modify/Translate/doc/
 share/qcad/scripts/Modify/Translate/doc/Translate_sl.html
 share/qcad/scripts/Modify/Translate/doc/Translate_sv.html
 share/qcad/scripts/Modify/TranslateRotate/
+share/qcad/scripts/Modify/TranslateRotate/PreferencesPage.ui
 share/qcad/scripts/Modify/TranslateRotate/Tests/
 share/qcad/scripts/Modify/TranslateRotate/Tests/TranslateRotateTest00.js
 share/qcad/scripts/Modify/TranslateRotate/Tests/TranslateRotateTest01.js
@@ -9806,6 +9829,7 @@ share/qcad/scripts/Modify/TranslateRotat
 share/qcad/scripts/Modify/TranslateRotate/TranslateRotateDialog.svg
 share/qcad/scripts/Modify/TranslateRotate/TranslateRotateDialog.ui
 share/qcad/scripts/Modify/TranslateRotate/TranslateRotateInit.js
+share/qcad/scripts/Modify/TranslateRotate/TranslateRotateNoDialog.ui
 share/qcad/scripts/Modify/TranslateRotate/doc/
 share/qcad/scripts/Modify/TranslateRotate/doc/TranslateRotate.png
 share/qcad/scripts/Modify/TranslateRotate/doc/TranslateRotateDialog.png
@@ -11926,24 +11950,6 @@ share/qcad/scripts/View/LinetypeMode/doc
 share/qcad/scripts/View/LinetypeMode/doc/LinetypeMode_ru.html
 share/qcad/scripts/View/LinetypeMode/doc/LinetypeMode_sl.html
 share/qcad/scripts/View/LinetypeMode/doc/LinetypeMode_sv.html
-share/qcad/scripts/View/OptionsToolBarFocus/
-share/qcad/scripts/View/OptionsToolBarFocus/OptionsToolBarFocus.js
-share/qcad/scripts/View/OptionsToolBarFocus/OptionsToolBarFocusInit.js
-share/qcad/scripts/View/OptionsToolBarFocus/doc/
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_bg.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_da.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_de.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_en.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_es.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_fr.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_it.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_ja.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_nl.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_pl.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_pt.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_ru.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_sl.html
-share/qcad/scripts/View/OptionsToolBarFocus/doc/OptionsToolBarFocus_sv.html
 share/qcad/scripts/View/ShowToolDialog/
 share/qcad/scripts/View/ShowToolDialog/ShowToolDialog.js
 share/qcad/scripts/View/ToggleGrid/
@@ -12480,6 +12486,7 @@ share/qcad/scripts/Widgets/LayerList/lay
 share/qcad/scripts/Widgets/LayerList/layerstatus_11.svg
 share/qcad/scripts/Widgets/MenuBar/
 share/qcad/scripts/Widgets/MenuBar/MenuBar.js
+share/qcad/scripts/Widgets/MenuBar/MenuBarInit.js
 share/qcad/scripts/Widgets/MenuBar/PreferencesPage.ui
 share/qcad/scripts/Widgets/MouseDisplay/
 share/qcad/scripts/Widgets/MouseDisplay/Mouse-inverse.svg
@@ -12712,6 +12719,7 @@ share/qcad/scripts/lib/sprintf2/sprintf2
 share/qcad/scripts/library.js
 share/qcad/scripts/map.js
 share/qcad/scripts/mimetype.png
+share/qcad/scripts/org.qcad.QCAD.png
 share/qcad/scripts/qcad_icon.png
 share/qcad/scripts/qcad_icon.svg
 share/qcad/scripts/scripts.dox
@@ -12887,13 +12895,17 @@ share/qcad/ts/assistant_de.qm
 share/qcad/ts/assistant_en.qm
 share/qcad/ts/assistant_es.qm
 share/qcad/ts/assistant_fr.qm
+share/qcad/ts/assistant_hr.qm
 share/qcad/ts/assistant_hu.qm
 share/qcad/ts/assistant_ja.qm
 share/qcad/ts/assistant_ko.qm
+share/qcad/ts/assistant_nl.qm
 share/qcad/ts/assistant_pl.qm
+share/qcad/ts/assistant_pt_BR.qm
 share/qcad/ts/assistant_ru.qm
 share/qcad/ts/assistant_sk.qm
 share/qcad/ts/assistant_sl.qm
+share/qcad/ts/assistant_tr.qm
 share/qcad/ts/assistant_uk.qm
 share/qcad/ts/assistant_zh_CN.qm
 share/qcad/ts/assistant_zh_TW.qm
@@ -12905,13 +12917,16 @@ share/qcad/ts/designer_de.qm
 share/qcad/ts/designer_en.qm
 share/qcad/ts/designer_es.qm
 share/qcad/ts/designer_fr.qm
+share/qcad/ts/designer_hr.qm
 share/qcad/ts/designer_hu.qm
 share/qcad/ts/designer_ja.qm
 share/qcad/ts/designer_ko.qm
+share/qcad/ts/designer_nl.qm
 share/qcad/ts/designer_pl.qm
 share/qcad/ts/designer_ru.qm
 share/qcad/ts/designer_sk.qm
 share/qcad/ts/designer_sl.qm
+share/qcad/ts/designer_tr.qm
 share/qcad/ts/designer_uk.qm
 share/qcad/ts/designer_zh_CN.qm
 share/qcad/ts/designer_zh_TW.qm
@@ -12923,13 +12938,18 @@ share/qcad/ts/linguist_de.qm
 share/qcad/ts/linguist_en.qm
 share/qcad/ts/linguist_es.qm
 share/qcad/ts/linguist_fr.qm
+share/qcad/ts/linguist_hr.qm
 share/qcad/ts/linguist_hu.qm
+share/qcad/ts/linguist_it.qm
 share/qcad/ts/linguist_ja.qm
 share/qcad/ts/linguist_ko.qm
+share/qcad/ts/linguist_nl.qm
 share/qcad/ts/linguist_pl.qm
 share/qcad/ts/linguist_ru.qm
 share/qcad/ts/linguist_sk.qm
 share/qcad/ts/linguist_sl.qm
+share/qcad/ts/linguist_sv.qm
+share/qcad/ts/linguist_tr.qm
 share/qcad/ts/linguist_uk.qm
 share/qcad/ts/linguist_zh_CN.qm
 share/qcad/ts/linguist_zh_TW.qm
@@ -13056,10 +13076,12 @@ share/qcad/ts/qt_es.qm
 share/qcad/ts/qt_fa.qm
 share/qcad/ts/qt_fi.qm
 share/qcad/ts/qt_fr.qm
+share/qcad/ts/qt_gd.qm
 share/qcad/ts/qt_gl.qm
 share/qcad/ts/qt_he.qm
 share/qcad/ts/qt_help_ar.qm
 share/qcad/ts/qt_help_bg.qm
+share/qcad/ts/qt_help_ca.qm
 share/qcad/ts/qt_help_cs.qm
 share/qcad/ts/qt_help_da.qm
 share/qcad/ts/qt_help_de.qm
@@ -13067,28 +13089,40 @@ share/qcad/ts/qt_help_en.qm
 share/qcad/ts/qt_help_es.qm
 share/qcad/ts/qt_help_fr.qm
 share/qcad/ts/qt_help_gl.qm
+share/qcad/ts/qt_help_hr.qm
 share/qcad/ts/qt_help_hu.qm
 share/qcad/ts/qt_help_it.qm
 share/qcad/ts/qt_help_ja.qm
 share/qcad/ts/qt_help_ko.qm
+share/qcad/ts/qt_help_nl.qm
+share/qcad/ts/qt_help_nn.qm
 share/qcad/ts/qt_help_pl.qm
+share/qcad/ts/qt_help_pt_BR.qm
 share/qcad/ts/qt_help_ru.qm
 share/qcad/ts/qt_help_sk.qm
 share/qcad/ts/qt_help_sl.qm
+share/qcad/ts/qt_help_tr.qm
 share/qcad/ts/qt_help_uk.qm
 share/qcad/ts/qt_help_zh_CN.qm
 share/qcad/ts/qt_help_zh_TW.qm
+share/qcad/ts/qt_hr.qm
 share/qcad/ts/qt_hu.qm
 share/qcad/ts/qt_it.qm
 share/qcad/ts/qt_ja.qm
 share/qcad/ts/qt_ko.qm
 share/qcad/ts/qt_lt.qm
+share/qcad/ts/qt_lv.qm
+share/qcad/ts/qt_nl.qm
+share/qcad/ts/qt_nn.qm
 share/qcad/ts/qt_pl.qm
 share/qcad/ts/qt_pt.qm
+share/qcad/ts/qt_pt_BR.qm
+share/qcad/ts/qt_pt_PT.qm
 share/qcad/ts/qt_ru.qm
 share/qcad/ts/qt_sk.qm
 share/qcad/ts/qt_sl.qm
 share/qcad/ts/qt_sv.qm
+share/qcad/ts/qt_tr.qm
 share/qcad/ts/qt_uk.qm
 share/qcad/ts/qt_zh_CN.qm
 share/qcad/ts/qt_zh_TW.qm
@@ -13100,22 +13134,28 @@ share/qcad/ts/qtbase_da.qm
 share/qcad/ts/qtbase_de.qm
 share/qcad/ts/qtbase_en.qm
 share/qcad/ts/qtbase_es.qm
+share/qcad/ts/qtbase_fa.qm
 share/qcad/ts/qtbase_fi.qm
 share/qcad/ts/qtbase_fr.qm
 share/qcad/ts/qtbase_gd.qm
 share/qcad/ts/qtbase_he.qm
+share/qcad/ts/qtbase_hr.qm
 share/qcad/ts/qtbase_hu.qm
 share/qcad/ts/qtbase_it.qm
 share/qcad/ts/qtbase_ja.qm
 share/qcad/ts/qtbase_ko.qm
 share/qcad/ts/qtbase_lv.qm
 share/qcad/ts/qtbase_nl.qm
+share/qcad/ts/qtbase_nn.qm
 share/qcad/ts/qtbase_pl.qm
 share/qcad/ts/qtbase_pt.qm
+share/qcad/ts/qtbase_pt_BR.qm
 share/qcad/ts/qtbase_ru.qm
 share/qcad/ts/qtbase_sk.qm
+share/qcad/ts/qtbase_tr.qm
 share/qcad/ts/qtbase_uk.qm
 share/qcad/ts/qtbase_zh_CN.qm
+share/qcad/ts/qtbase_zh_TW.qm
 share/qcad/ts/qtconfig_hu.qm
 share/qcad/ts/qtconfig_ja.qm
 share/qcad/ts/qtconfig_ko.qm