AbdulElahGwaith commited on
Commit
a5ffdcd
·
verified ·
1 Parent(s): 2520abe

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +2 -0
  2. .github/FUNDING.yml +2 -0
  3. .github/ISSUE_TEMPLATE.md +19 -0
  4. .github/workflows/build-all.yml +471 -0
  5. .github/workflows/codeql.yml +142 -0
  6. .github/workflows/run_pixi.yml +21 -0
  7. CHANGELOG.md +324 -0
  8. CI/build-appimg-aarch64.sh +77 -0
  9. CI/build-appimg.sh +65 -0
  10. CI/custom-win-ARM64.nsh +9 -0
  11. CI/custom-win-x64.nsh +9 -0
  12. CI/custom-win.nsh +9 -0
  13. CI/custom-win.pri +4 -0
  14. CI/librecad.svg +163 -0
  15. CI/qt512.conf +2 -0
  16. CMakeLists.txt +1717 -0
  17. CMakePresets.json +40 -0
  18. ChangeLogs/ACTIONS_README.md +993 -0
  19. ChangeLogs/ARCS_AND_SPLINES_README.md +60 -0
  20. ChangeLogs/Arc1Point and Dimensions PR.md +55 -0
  21. ChangeLogs/DIM_ORDINATE_README.md +41 -0
  22. ChangeLogs/DIM_STYLES_1_README.md +293 -0
  23. ChangeLogs/ENTITY_INFO_WIDGET_README.md +117 -0
  24. ChangeLogs/ICONS AND WORKSPACES README.md +202 -0
  25. ChangeLogs/INFO_CURSOR_README.md +42 -0
  26. ChangeLogs/LAYER_TREE_VIEW.md +128 -0
  27. ChangeLogs/MORE_ACTIONS_AND_FIXES.md +64 -0
  28. ChangeLogs/NAMED VIEWS README.md +35 -0
  29. ChangeLogs/PEN_PALETTE_README.md +57 -0
  30. ChangeLogs/RELATIVE_POINT_ETC_README.md +201 -0
  31. ChangeLogs/RENDERING README.md +56 -0
  32. ChangeLogs/UCS.md +174 -0
  33. ChangeLogs/VARIOUS_FIXES_1.md +79 -0
  34. ChangeLogs/germar.txt +14 -0
  35. ChangeLogs/obsole_issues.md +171 -0
  36. ChangeLogs/r-a-v-a-s.txt +4 -0
  37. ChangeLogs/readme.md +6 -0
  38. LICENSE +120 -0
  39. README.md +97 -0
  40. common.pri +91 -0
  41. desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg +163 -0
  42. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 16x16.ico +0 -0
  43. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 24x24.ico +0 -0
  44. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 256x256.ico +0 -0
  45. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 32x32.ico +0 -0
  46. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 48x48.ico +0 -0
  47. desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon All Sizes.ico +0 -0
  48. desktop/graphics_icons_and_splash/Icon LibreCAD/README.md +8 -0
  49. desktop/graphics_icons_and_splash/Logo LibreCAD/Logo LibreCAD.svg +222 -0
  50. desktop/graphics_icons_and_splash/Logo LibreCAD/LogoLibrecad_335x33_bgw.png +0 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ desktop/res_old/main/librecad.icns filter=lfs diff=lfs merge=lfs -text
37
+ librecad/res/images/librecad.icns filter=lfs diff=lfs merge=lfs -text
.github/FUNDING.yml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ github: LibreCAD
2
+ open_collective: librecad
.github/ISSUE_TEMPLATE.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!--
2
+ This is a comment, not shown in your issue. You can delete it or leave it as it is.
3
+
4
+ Please give your issue an useful title.
5
+ And please enter as much information as possible into each paragraph below (###).
6
+ Think twice, post once ;-)
7
+
8
+ If your issue is about how to use LibreCAD consider to ask in the forum http://forum.librecad.org/.
9
+ The chances for fast help are much higher as there are much more user active, not only developer.
10
+ -->
11
+
12
+ ### Expected behavior
13
+
14
+ ### Observed behavior
15
+
16
+ ### Steps to reproduce or sample file
17
+
18
+ ### Operating System and LibreCAD version info
19
+
.github/workflows/build-all.yml ADDED
@@ -0,0 +1,471 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Continuous build
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ - 2.2.1
7
+
8
+ jobs:
9
+ BuildLinux:
10
+ runs-on: ubuntu-24.04
11
+ outputs:
12
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@main
16
+ with:
17
+ fetch-depth: 0
18
+ submodules: recursive
19
+
20
+ - name: Install dependencies
21
+ run: |
22
+ sudo apt-get -y update
23
+ sudo apt-get -qq install qmake6 qt6-base-dev qt6-declarative-dev qt6-image-formats-plugin-pdf qt6-pdf-dev linguist-qt6
24
+ sudo apt-get -qq install qt6-svg-dev libqt6svgwidgets6 qt6-l10n-tools qtchooser qt6-wayland-dev qt6-tools-dev
25
+ sudo apt-get -qq install libgl-dev libxcb-cursor0 libmuparser-dev libboost-dev libssl-dev libssl3
26
+ sudo apt-get -qq install imagemagick librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2 rsync
27
+ sudo apt-get -qq install cmake
28
+
29
+ - name: Set Dark splash
30
+ # Test setting dark splash screen for `2.2.2_alpha`,
31
+ # then switch "Loading..." label text color to white.
32
+ # Comment this if `master` is used for releases.
33
+ if: github.ref == 'refs/heads/master'
34
+ run: |
35
+ mkdir -p ${{github.workspace}}/librecad/res/main
36
+ rsync ${{github.workspace}}/desktop/media/splash/librecad01_dark.png ${{github.workspace}}/librecad/res/main/splash_librecad.png
37
+ sed -i 's/Qt::black/Qt::white/g' ${{github.workspace}}/librecad/src/main/main.cpp
38
+ - name: Build and analyze
39
+ run: |
40
+ echo "cmake"
41
+ cmake -S . -B unix -DBUILD_TESTS=ON
42
+ echo "cmake build"
43
+ cmake --build unix -j$(nproc)
44
+
45
+ - name: Run Tests
46
+ run: |
47
+ cd unix
48
+ ./librecad_tests
49
+
50
+ - name: Create AppImage
51
+ run: |
52
+ QT_FILE_DIR="${{github.workspace}}/../Qt" ./CI/build-appimg.sh
53
+ mv LibreCAD*.AppImage LibreCAD-`git describe --always`.AppImage
54
+ - name: List files
55
+ run: |
56
+ echo ${{ github.workspace }} && ls ${{ github.workspace }}
57
+ shell: bash
58
+
59
+ - name: Upload artifact
60
+ id: artifact-upload-step
61
+ uses: actions/upload-artifact@main
62
+ with:
63
+ name: linuxAssets
64
+ path: LibreCAD*.AppImage
65
+ retention-days: 2
66
+
67
+ BuildLinuxAarch64:
68
+ runs-on: ubuntu-24.04-arm
69
+ outputs:
70
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
71
+ steps:
72
+ - name: Checkout code
73
+ uses: actions/checkout@main
74
+ with:
75
+ fetch-depth: 0
76
+
77
+ - name: Install Qt and dependencies
78
+ run: |
79
+ sudo apt-get -y update
80
+ sudo apt-get -qq install qmake6 qt6-base-dev qt6-declarative-dev qt6-image-formats-plugin-pdf qt6-pdf-dev linguist-qt6
81
+ sudo apt-get -qq install qt6-svg-dev libqt6svgwidgets6 qt6-l10n-tools qtchooser qt6-wayland-dev qt6-tools-dev
82
+ sudo apt-get -qq install libgl-dev libxcb-cursor0 libmuparser-dev libboost-dev libssl-dev libssl3
83
+ sudo apt-get -qq install imagemagick librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2 rsync
84
+ sudo apt-get -qq install cmake
85
+
86
+ - name: Install Clang
87
+ run: |
88
+ sudo apt-get -qq install clang-18 clang-tools-18
89
+
90
+ - name: Set Dark splash
91
+ # Test setting dark splash screen for `2.2.2_alpha`,
92
+ # then switch "Loading..." label text color to white.
93
+ # Comment this if `master` is used for releases.
94
+ if: github.ref == 'refs/heads/master'
95
+ run: |
96
+ mkdir -p ${{github.workspace}}/librecad/res/main
97
+ rsync ${{github.workspace}}/desktop/media/splash/librecad01_dark.png ${{github.workspace}}/librecad/res/main/splash_librecad.png
98
+ sed -i 's/Qt::black/Qt::white/g' ${{github.workspace}}/librecad/src/main/main.cpp
99
+ sed -i '/fontweight/d' ${{github.workspace}}/librecad/src/ui/dock_widgets/ucs_list/lc_dlgucsproperties.ui
100
+
101
+ - name: Build and analyze
102
+ run: |
103
+ export CC=clang
104
+ export CXX=clang++
105
+ export ANALYZE="scan-build-18 -o out --use-cc=/usr/bin/clang++ --use-analyzer=/usr/bin/clang++ "
106
+ #${ANALYZE}qmake6 -r librecad.pro CONFIG+=debug_and_release PREFIX=/usr
107
+ #${ANALYZE}make release -j$(nproc)
108
+ cmake -S . -B unix
109
+ cmake --build unix -j$(nproc)
110
+
111
+ - name: Create AppImage
112
+ run: |
113
+ find unix/
114
+ ./CI/build-appimg-aarch64.sh
115
+ #mv LibreCAD*.AppImage LibreCAD-`git describe --always`-aarch64.AppImage
116
+
117
+ - name: List files
118
+ run: |
119
+ echo ${{ github.workspace }} && ls ${{ github.workspace }}
120
+ shell: bash
121
+
122
+ - name: Upload artifact
123
+ id: artifact-upload-step
124
+ uses: actions/upload-artifact@main
125
+ with:
126
+ name: linuxAssetsAarch64
127
+ path: LibreCAD*.AppImage
128
+ retention-days: 2
129
+
130
+ BuildSnap:
131
+ runs-on: ubuntu-24.04
132
+ steps:
133
+ - name: Checkout code
134
+ uses: actions/checkout@main
135
+ with:
136
+ fetch-depth: 0
137
+ ref: master
138
+
139
+ - name: Install Qt6
140
+ uses: jurplel/install-qt-action@v4
141
+ with:
142
+ version: '6.9.*'
143
+ modules: 'qt5compat'
144
+
145
+ - name: install snap
146
+ uses: samuelmeuli/action-snapcraft@v2
147
+
148
+ - name: Create snapcraft
149
+ run: |
150
+ pwd
151
+ ls
152
+ ls scripts
153
+ bash ./scripts/createSnap.sh
154
+ mv librecad*.snap LibreCAD-`git describe --always`.snap
155
+
156
+ - name: Uploading snap
157
+ uses: actions/upload-artifact@v4
158
+ with:
159
+ name: snapAssets
160
+ path: ${{github.workspace}}/LibreCAD*.snap
161
+ retention-days: 2
162
+
163
+ BuildMacOS:
164
+ runs-on: macos-14
165
+ outputs:
166
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
167
+ steps:
168
+ - name: Checkout code
169
+ uses: actions/checkout@main
170
+ with:
171
+ fetch-depth: 0
172
+
173
+ - name: uninstall p7zip
174
+ run: |
175
+ brew uninstall p7zip
176
+
177
+ - name: Install Qt6
178
+ uses: jurplel/install-qt-action@v4
179
+ with:
180
+ version: '6.9.*'
181
+ modules: 'qt5compat'
182
+
183
+ - name: Install boost dependencies
184
+ run: |
185
+ brew install boost
186
+
187
+ # XProtect can cause random failures if it decides that the DMG we create
188
+ # during the packaging phase is malware.
189
+ # TODO: Do it in a cleaner way
190
+ # Inspiration: https://github.com/servo/servo/pull/30779
191
+ - name: Kill XProtectBehaviorService
192
+ run: |
193
+ echo Killing XProtect.; sudo pkill -9 XProtect >/dev/null || true;
194
+
195
+ - name: Build and packaging
196
+ run: |
197
+ scripts/build-osx.sh
198
+ mv LibreCAD.dmg LibreCAD-`git describe --always`.dmg
199
+
200
+ - name: Upload artifact
201
+ id: artifact-upload-step
202
+ uses: actions/upload-artifact@main
203
+ with:
204
+ name: macOSAssets
205
+ path: LibreCAD*.dmg
206
+ retention-days: 2
207
+
208
+ BuildMacOSArm64:
209
+ runs-on: macos-14
210
+ outputs:
211
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
212
+ steps:
213
+ - name: Checkout code
214
+ uses: actions/checkout@main
215
+ with:
216
+ fetch-depth: 0
217
+
218
+ - name: uninstall p7zip
219
+ run: |
220
+ brew uninstall p7zip
221
+
222
+ - name: Install Qt6
223
+ uses: jurplel/install-qt-action@v4
224
+ with:
225
+ version: '6.9.*'
226
+ modules: 'qt5compat'
227
+ arch: 'clang_64'
228
+
229
+ - name: Install boost dependencies
230
+ run: |
231
+ brew install boost
232
+
233
+ # XProtect can cause random failures if it decides that the DMG we create
234
+ # during the packaging phase is malware.
235
+ # TODO: Do it in a cleaner way
236
+ # Inspiration: https://github.com/servo/servo/pull/30779
237
+ - name: Kill XProtectBehaviorService
238
+ run: |
239
+ echo Killing XProtect.; sudo pkill -9 XProtect >/dev/null || true;
240
+
241
+ - name: Build and packaging
242
+ env:
243
+ QMAKE_OPTS: QMAKE_APPLE_DEVICE_ARCHS=arm64
244
+ run: |
245
+ scripts/build-osx.sh
246
+ mv LibreCAD.dmg LibreCAD-`git describe --always`-arm64.dmg
247
+
248
+ - name: Upload artifact
249
+ id: artifact-upload-step
250
+ uses: actions/upload-artifact@main
251
+ with:
252
+ name: macOSArm64Assets
253
+ path: LibreCAD*.dmg
254
+ retention-days: 2
255
+
256
+ BuildWindows64:
257
+ runs-on: windows-2022
258
+ outputs:
259
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
260
+ steps:
261
+ - name: Checkout code
262
+ uses: actions/checkout@main
263
+ with:
264
+ fetch-depth: 0
265
+
266
+ - name: Install Qt6
267
+ uses: jurplel/install-qt-action@v4
268
+ with:
269
+ version: '6.9.*'
270
+ host: 'windows'
271
+ arch: 'win64_msvc2022_64'
272
+ target: 'desktop'
273
+ tools-only: 'false'
274
+ modules: 'qt3d qt5compat qtimageformats qtshadertools'
275
+ tools: 'tools_cmake'
276
+
277
+ - name: (3) Add MSBuild to PATH
278
+ uses: microsoft/setup-msbuild@v2
279
+
280
+ - name: Install boost
281
+ run: |
282
+ curl -# -L -o boost.7z https://archives.boost.io/release/1.87.0/source/boost_1_87_0.7z
283
+ 7z x -o. -y boost.7z
284
+ mkdir -p boost/include
285
+ mv boost_1_87_0/boost boost/include/
286
+ rm boost.7z
287
+ pwd
288
+ ls -ld boost/include/boost/version.hpp
289
+ shell: bash
290
+
291
+ - name: Configure CMake
292
+ run: |
293
+ cmake.exe -S . -B generated -G "Visual Studio 17 2022" -DBoost_INCLUDE_DIR=%BOOST_ROOT%/include -DBoost_LIBRARY_DIRS=%BOOST_ROOT%/lib
294
+ shell: cmd
295
+ env:
296
+ BUILD_TYPE: release
297
+ MSVC_VER_NUMBER: "Visual Studio 17 2022"
298
+ BOOST_ROOT: boost
299
+ CMAKE_CXX_FLAGS: " /MP8"
300
+
301
+ - name: Build
302
+ run: |
303
+ cmake --build generated --config Release
304
+ shell: cmd
305
+
306
+ - name: listFile
307
+ run: |
308
+ cd generated
309
+ dir *.*
310
+ dir Release\*.*
311
+ dir x64\*.*
312
+ shell: cmd
313
+
314
+ - name: List files
315
+ run: |
316
+ echo "${{ github.workspace }}"
317
+ dir "${{ github.workspace }}"
318
+ shell: cmd
319
+
320
+ - name: winDeployment
321
+ run: |
322
+ copy CI\custom-win.pri custom.pri
323
+ copy CI\custom-win-x64.nsh scripts\postprocess-windows\custom.nsh
324
+ mkdir generated\plugins
325
+ for /r %%a in (*.dll) do copy "%%a" generated\plugins
326
+ cd generated
327
+ windeployqt6.exe --release --compiler-runtime Release\LibreCAD.exe
328
+ dir *.*
329
+ pushd "${{ github.workspace }}\scripts"
330
+ call build-win-setup.bat
331
+ shell: cmd
332
+
333
+ - name: Rename installer
334
+ run: |
335
+ mv LibreCAD-Installer.exe LibreCAD-`git describe --always`-win64.exe
336
+ shell: bash
337
+
338
+ - name: Upload artifact
339
+ id: artifact-upload-step
340
+ uses: actions/upload-artifact@main
341
+ with:
342
+ name: win64Assets
343
+ path: LibreCAD*.exe
344
+ retention-days: 2
345
+
346
+ BuildWindowsARM64:
347
+ runs-on: windows-11-arm
348
+ outputs:
349
+ output1: ${{ steps.artifact-upload-step.outputs.artifact-id }}
350
+ steps:
351
+ - name: Checkout code
352
+ uses: actions/checkout@main
353
+ with:
354
+ fetch-depth: 0
355
+
356
+ - name: Install Qt6
357
+ uses: jurplel/install-qt-action@v4
358
+ with:
359
+ version: '6.9.*'
360
+ host: 'windows_arm64'
361
+ arch: 'win64_msvc2022_arm64'
362
+ target: 'desktop'
363
+ tools-only: 'false'
364
+ modules: 'qt5compat qtimageformats qtshadertools'
365
+ tools: 'tools_cmake'
366
+
367
+ - name: (3) Add MSBuild to PATH
368
+ uses: microsoft/setup-msbuild@v2
369
+ with:
370
+ msbuild-architecture: arm64
371
+
372
+ - name: Install boost
373
+ run: |
374
+ curl -# -L -o boost.7z https://archives.boost.io/release/1.87.0/source/boost_1_87_0.7z
375
+ 7z x -o. -y boost.7z
376
+ mkdir -p boost/include
377
+ mv boost_1_87_0/boost boost/include/
378
+ rm boost.7z
379
+ pwd
380
+ ls -ld boost/include/boost/version.hpp
381
+ shell: bash
382
+
383
+ - name: Configure CMake
384
+ run: |
385
+ cmake.exe -S . -B generated -G "Visual Studio 17 2022" -DBoost_INCLUDE_DIR=%BOOST_ROOT%/include -DBoost_LIBRARY_DIRS=%BOOST_ROOT%/lib
386
+ shell: cmd
387
+ env:
388
+ BUILD_TYPE: release
389
+ MSVC_VER_NUMBER: "Visual Studio 17 2022"
390
+ BOOST_ROOT: boost
391
+ CMAKE_CXX_FLAGS: " /MP8"
392
+
393
+ - name: Build
394
+ run: |
395
+ cmake --build generated --config Release
396
+ shell: cmd
397
+
398
+ - name: listFile
399
+ run: |
400
+ cd generated
401
+ dir *.*
402
+ dir Release\*.*
403
+ dir ARM64\*.*
404
+ shell: cmd
405
+
406
+ - name: List files
407
+ run: |
408
+ echo "${{ github.workspace }}"
409
+ dir "${{ github.workspace }}"
410
+ shell: cmd
411
+
412
+ - name: winDeployment
413
+ run: |
414
+ copy CI\custom-win.pri custom.pri
415
+ copy CI\custom-win-ARM64.nsh scripts\postprocess-windows\custom.nsh
416
+ mkdir generated\plugins
417
+ for /r %%a in (*.dll) do copy "%%a" generated\plugins
418
+ cd generated
419
+ windeployqt6.exe --release --compiler-runtime Release\LibreCAD.exe
420
+ dir *.*
421
+ pushd "${{ github.workspace }}\scripts"
422
+ call build-win-setup.bat
423
+ shell: cmd
424
+
425
+ - name: Rename installer
426
+ run: |
427
+ mv LibreCAD-Installer.exe LibreCAD-`git describe --always`-winARM64.exe
428
+ shell: bash
429
+
430
+ - name: Upload artifact
431
+ id: artifact-upload-step
432
+ uses: actions/upload-artifact@main
433
+ with:
434
+ name: winARM64Assets
435
+ path: LibreCAD*.exe
436
+ retention-days: 2
437
+
438
+ UpdateAssets:
439
+ if: github.repository_owner == 'LibreCAD'
440
+ needs: [BuildLinux, BuildLinuxAarch64, BuildMacOS, BuildMacOSArm64, BuildWindows64, BuildWindowsARM64, BuildSnap]
441
+ runs-on: ubuntu-latest
442
+ steps:
443
+ - name: Checkout code
444
+ uses: actions/checkout@main
445
+ with:
446
+ fetch-depth: 0
447
+
448
+ - name: Delete existing
449
+ run: gh release delete "2.2.2_alpha-latest" -y
450
+ env:
451
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
452
+
453
+ - name: Fetch artifacts
454
+ uses: actions/download-artifact@main
455
+
456
+ - name: Upload latest pre-release
457
+ uses: softprops/action-gh-release@v2
458
+ with:
459
+ name: "Continuous Build: latest development"
460
+ tag_name: "2.2.2_alpha-latest"
461
+ prerelease: true
462
+ draft: false
463
+ files: |
464
+ linuxAssets/LibreCAD*.AppImage
465
+ linuxAssetsAarch64/LibreCAD*.AppImage
466
+ macOSAssets/LibreCAD*.dmg
467
+ macOSArm64Assets/LibreCAD*.dmg
468
+ win64Assets/LibreCAD*.exe
469
+ winARM64Assets/LibreCAD*.exe
470
+ snapAssets/LibreCAD*.snap
471
+ LICENSE
.github/workflows/codeql.yml ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ push:
5
+ branches: [ 'master' ]
6
+ pull_request:
7
+ # The branches below must be a subset of the branches above
8
+ branches: [ 'master' ]
9
+ schedule:
10
+ - cron: '59 14 * * 2'
11
+
12
+ jobs:
13
+ analyze:
14
+ name: Analyze
15
+
16
+ runs-on: ubuntu-latest
17
+
18
+ permissions:
19
+ actions: read
20
+ contents: read
21
+ security-events: write
22
+
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ language: [ 'cpp' ]
27
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
28
+ # Use only 'java' to analyze code written in Java, Kotlin or both
29
+ # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
30
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
31
+
32
+ steps:
33
+ - name: Checkout code
34
+ uses: actions/checkout@main
35
+ with:
36
+ fetch-depth: 0
37
+
38
+ - name: Install Qt6
39
+ uses: jurplel/install-qt-action@v4
40
+ with:
41
+ aqtversion: '==3.1.*'
42
+ version: '6.9.*'
43
+ host: 'linux'
44
+ target: 'desktop'
45
+ arch: 'linux_gcc_64'
46
+ modules: 'qtwaylandcompositor'
47
+
48
+ - name: Install Qt and dependencies
49
+ run: |
50
+ sudo apt-get -y update
51
+ # ubuntu jammy(22.04) libqt6core5compat6-dev
52
+ # ubuntu nobel(24.04) qt6-5compat-dev
53
+ sudo apt-get -qq install qtchooser libqt6core5compat6-dev libgl-dev libmuparser-dev libboost-dev librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2
54
+ sudo ln -snf /usr/lib/x86_64-linux-gnu/qtchooser/qt5.conf /usr/lib/x86_64-linux-gnu/qtchooser/default.conf
55
+ sudo rm -rf /usr/local/lib/android
56
+
57
+ - name: Install Clang
58
+ run: |
59
+ sudo apt-get -qq install clang-15 clang-tools-15
60
+
61
+ # Initializes the CodeQL tools for scanning.
62
+ - name: Initialize CodeQL
63
+ uses: github/codeql-action/init@v3
64
+ with:
65
+ languages: ${{ matrix.language }}
66
+ # If you wish to specify custom queries, you can do so here or in a config file.
67
+ # By default, queries listed here will override any specified in a config file.
68
+ # Prefix the list here with "+" to use these queries and those in the config file.
69
+
70
+ # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
71
+ # queries: security-extended,security-and-quality
72
+
73
+
74
+ - name: Build
75
+ run: |
76
+ export CC=g++
77
+ qmake6 -r librecad.pro CONFIG+=debug_and_release PREFIX=/usr
78
+ make release -j$(nproc)
79
+
80
+ - name: Perform CodeQL Analysis
81
+ uses: github/codeql-action/analyze@v3
82
+ with:
83
+ category: "/language:${{matrix.language}}"
84
+
85
+
86
+ ClangScan:
87
+ name: Security scan
88
+ runs-on: ubuntu-latest
89
+ steps:
90
+ - name: Checkout code
91
+ uses: actions/checkout@main
92
+ with:
93
+ fetch-depth: 0
94
+
95
+ - name: Install Qt6
96
+ uses: jurplel/install-qt-action@v4
97
+ with:
98
+ aqtversion: '==3.1.*'
99
+ version: '6.9.0'
100
+ host: 'linux'
101
+ target: 'desktop'
102
+ arch: 'linux_gcc_64'
103
+ modules: 'qtwaylandcompositor'
104
+
105
+ - name: Install dependencies
106
+ run: |
107
+ sudo apt-get -y update
108
+ sudo apt-get -qq install \
109
+ libgl-dev libmuparser-dev libboost-dev librsvg2-bin libfreetype6-dev libicu-dev pkg-config libfuse2
110
+ sudo rm -rf /usr/local/lib/android
111
+
112
+ - name: Install Clang
113
+ run: |
114
+ sudo apt-get -qq install clang-15 clang-tools-15
115
+
116
+ - name: Build and analyze
117
+ run: |
118
+ export CC=g++
119
+ export ANALYZE="scan-build-15 -o out --use-cc=g++ --use-analyzer=/usr/bin/clang++ "
120
+ ${ANALYZE}qmake6 -r librecad.pro CONFIG+=debug_and_release PREFIX=/usr
121
+ ${ANALYZE}make release -j$(nproc)
122
+
123
+ - name: Create report repository
124
+ run: |
125
+ cd out
126
+ find . -mindepth 2 -type f -print -exec mv {} . \;
127
+ git config --global user.email "github@librecad.org"
128
+ git config --global user.name "GHA CI [bot]"
129
+ git config --global init.defaultBranch gh-pages
130
+ git init
131
+ git add .
132
+ git commit -m "latest analyzer report"
133
+
134
+ - name: Push changes
135
+ if: github.repository_owner == 'LibreCAD'
136
+ uses: ad-m/github-push-action@master
137
+ with:
138
+ repository: ${{github.repository_owner}}/static-analyzer-reports
139
+ github_token: ${{secrets.LC_PUSH_ANALYZER_REPORT}}
140
+ branch: gh-pages
141
+ force: true
142
+ directory: out
.github/workflows/run_pixi.yml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Pixi Builds
2
+ on: [workflow_dispatch, push, pull_request]
3
+
4
+ jobs:
5
+ build_with_pixi:
6
+ runs-on: ${{ matrix.os }}
7
+ strategy:
8
+ max-parallel: 5
9
+ fail-fast: false
10
+ matrix:
11
+ os: [windows-latest, ubuntu-latest, ubuntu-22.04-arm, macos-latest, macos-13]
12
+
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ name: Checkout
16
+
17
+ - uses: prefix-dev/setup-pixi@v0.8.1
18
+ with:
19
+ pixi-version: v0.41.4
20
+ cache: true
21
+ - run: pixi run build
CHANGELOG.md ADDED
@@ -0,0 +1,324 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Change Log
2
+
3
+ ## [2.2.1-alpha] - unreleased
4
+
5
+ ### Added
6
+ - shortcut "0" to specify coordinates "0,0" on command line
7
+ - shortcut "." or "," to specify the current point coordinates on command line
8
+
9
+ ### Removed
10
+ - importshp plugin, see issue #1481
11
+
12
+ ### Changed
13
+
14
+ ### Fixed
15
+ - various issues in LFF font files
16
+ - segfault with malformed LFF font files
17
+ - CVE-2023-30259, OOB reads in importshp plugin (#1481)
18
+
19
+ ## [2.2.0] - 2022-12-17
20
+
21
+ ### Added
22
+ - librecad.appdata.xml for AppImage creation
23
+
24
+ ### Changed
25
+ - mitigated DWG open warning and allow opening with errors
26
+ - Help/Online menu, use links direct, instead of dialog with double click
27
+ - sync libdxfrw (d73a25c)
28
+
29
+ ### Fixed
30
+ - missing resources in unix folder (#1570)
31
+ - flood of RS_Modification warnings when deleting (#1567)
32
+ - clang regression with std::initializer_list<> (#1568)
33
+ - missing plugins on Redhat/Fedora and their branches (#1563)
34
+ - spline issue on Windows (32-bit) from previous fix
35
+ - image mirroring (#1525)
36
+
37
+ ## [2.2.0-rc4] - 2022-06-07
38
+
39
+ ### Added
40
+ - symbols to unicode.lff
41
+ - CHANGELOG.md - history of changes back to version 2.1.0
42
+ - new error code from libdxfrw update
43
+ - build Windows, MacOS and Linux packages in one action
44
+
45
+ ### Changed
46
+ - sync libdxfrw (8378f39)
47
+ - added tool tips to Categories tool widget (#1519)
48
+ - added @ symbol to relative coordinates in status bar (#1452)
49
+ - changed misleading unit label in curent drawing preferences (#1453)
50
+ - changed tab order in text dialog (#1432)
51
+ - maximum size of status bar for hidpi displays
52
+ - sync libdxfrw (072aecd)
53
+ - copy/rename media files in desktop folder to remove whitespaces
54
+
55
+ ### Fixed
56
+ - fixed renaming of nested blocks (#1527)
57
+ - preserve list position in block and layer list (#1515)
58
+ - fixed polyline issue when line type was changed (#1496)
59
+ - add minutes label to auto save time in application preferences (#1412)
60
+ - add files saved as with new name to recent files (#1364)
61
+ - snap on middle point failed for spline through points (#1395)
62
+ - spline issue with tolerance on ascii to double conversion
63
+ - DXF viewport reading issue by updating libdxfrw
64
+ - status bar height toggling on auto save
65
+ - solid fill hatch issues
66
+ - Ukrainian and symbol characters in unicode.lff
67
+ - possible out of bounds read with MText entities
68
+ - AppImage was broken by fix for (#1488)
69
+ - wrong translations folder for additionals paths from settings
70
+ - getDirectoryList() failed on Linux when librecad is in $PATH (#1488)
71
+ - bounds check in LWPolyline
72
+ - NULL check for hatch code 93
73
+ - vulnerabilities in JWW parser
74
+
75
+ ## [2.2.0-rc3] - 2021-11-29
76
+
77
+ ### Added
78
+ - more expressive error messages on file open for DXF/DWG files
79
+ - deploy AppImage for Linux users
80
+
81
+ ### Changed
82
+ - Move to new IRC network
83
+ - libdxfrw update
84
+ - List entities plugin: Add text insertion point and text content to its output (#1325)
85
+
86
+ ### Fixed
87
+ - read failed with binary DXF (#1371)
88
+ - small drawing windows in tabbed mode, when open failed
89
+ - LFF font issue (#1252)
90
+ - issue with detecting LFF font files
91
+ - tools/ttf2lff - add more font info and FreeType version to output
92
+ - angular dimensions persistently pull single click selection with arrow size 0
93
+ - libdxfrw failed to open non LibreCAD DXF files (sf611)
94
+
95
+ ## [2.2.0-rc2] - 2020-12-31
96
+
97
+ ### Added
98
+ - multiple blocks selection, toggling, deletion
99
+ - multiple layers selection and deletion
100
+ - Tiled printing
101
+ - Buttons to refresh Library Browser contents
102
+ - Console dxf2pdf tool
103
+ - filter field to Block List widget
104
+ - new plugin Divide
105
+ - new pattern millstone.dxf (#964)
106
+
107
+ ### Changed
108
+ - Combined Letter / ANSI A, Tabloid / ANSI B
109
+ - Changed Ledger to Tabloid
110
+ - Block may contain inserts of other blocks except itself
111
+ - Print Preview: Line width scaling
112
+ - holding the "Shift" key during placing the line endpoint with mouse snaps to 15° step angles (0°,15°,30°,45°,...)
113
+ - Optional inversion of zoom direction
114
+ - Changing attributes of a block does not change attributes of sub-entities (#755,#1080)
115
+ - Optional inversion of mouse wheel scrolling directions
116
+ - Respect both tolerance and negative factor values on block import
117
+ - bundle all plugin modifications into one undoCycle
118
+ - uncheck 'Print to file' checkbox in QPrinterDialog
119
+ - Lock/unlock all layers
120
+ - SVG export renamed to Export as CAM/plain SVG
121
+ - Improve appearance of inside-horizontal dimensions
122
+
123
+ ### Fixed
124
+ - libdxfrw - reading DWG hatch entities
125
+ - angle not consistent between move and rotate option and dialog (#1137)
126
+ - missing subclass marker in PLOTSETTINGS.
127
+ - Enhance visibility of black lines on dark backgrounds
128
+ - save/restore issue of snap modes (#1147)
129
+ - new undo/redo buffer for active line drawing (#1101)
130
+ - export black/white with black background used black pen too (#962)
131
+ - some more issues with paper size, NPageSize is no paper size, localize paper size names
132
+ - equidistant polylines had the correct layer, but not the layers properties (#1201)
133
+ - Unhighlight entity after exiting Orthogonal Line tool
134
+ - libdxfrw: fix spline parsing
135
+ - Page sizes cleaned up, added ANSI
136
+ - Print Preview: fix auto zoom on opening
137
+ - Print Preview: Line Scaling respects General Scale.
138
+ - added auto-zoom after inserting an image
139
+ - added more digits to extension lines lenth input box (#1203)
140
+ - Print Preview behaves as other windows
141
+ - Sync options visibility with window focus
142
+ - Print Preview not closing
143
+ - Zoom panning can only be used once and must then be reactivated (#1085)
144
+ - allow Save As for unmodified files
145
+ - Save As could not create new files
146
+ - endless loop occurred when trying to save a write-locked file
147
+ - using shift key to select has deselected layers/blocks between after mouse button release
148
+ - Toggle actions adjustments for Layer/Block Lists multiselection feature
149
+ - Respect Layer List Filter on layers removal
150
+ - 'move to bottom' command with existing selection
151
+ - Unhighlight limiting entity after exiting Trim tool
152
+ - Create equidistant polylines in currently selected layer
153
+ - "hold shift" to mirroring entities doesn't snap on 15° angles
154
+ - Save Block: do not remove blocks while saving
155
+ - preview on inserting block with inserts
156
+ - Undo block removing
157
+ - Window for block editing
158
+ - Update window title on block renaming
159
+ - Deactivate removed block
160
+ - Block cannot contain blocks
161
+ - Drawing opts: paper size to orientation relationship
162
+ - custom landscape paper size resetting
163
+ - pasting from clipboard to block
164
+ - Fit to whole page
165
+ - Do not highlight selection on Print Preview
166
+ - persistence of the angle in a MoveRotate operation
167
+ - Improve User Experience while working with multiple drawings (#515,#1108)
168
+ - Create a preference to toggle Free Snap mode when SPACE BAR is pressed (#1107)
169
+ - modfiy image refresh (#1102)
170
+ - Use sentence case for all buttons in popup menus
171
+ - add new checkable button and preference to allow whitespace in the command interface (#1098)
172
+ - Negative numbers are not accepted for Copy/Move input points (#981)
173
+ - Print Preview: Limit paper movement
174
+ - Printing respect paper margins
175
+ - Print Preview shows paper margins
176
+ - Page margins and page preview
177
+ - Apply scroll direction inversion to Trackpad
178
+ - Exclude only INSERTs from Undo on Block-deep attributes modification
179
+ - Change layer of inserts by layer list click should not modify the layers of block entities (#1065)
180
+ - Skip re-saving already saved settings values
181
+ - disappearance of entities on modification after undo (#1049)
182
+ - single dimension tolerance labels made false lines on zoom out (#1060)
183
+ - Modification status mark in window title
184
+ - segfault (#1048)
185
+ - Respect paper scale with 'fixed' checked (#592,#605,#705)
186
+ - Exploded entities issues fix (#819)
187
+ - libdxfrw violation (#1038,#1045)
188
+ - write access violation when a malicious dxf is fed to libdxfrw (#1038)
189
+ - random LayerList icons issues on multi layer block imports (#1024)
190
+ - 2 segfaults
191
+ - Set factor to 1.0 if user inputs 0 on block import
192
+ - import block to active layer
193
+ - Factor value was ignored on block import
194
+ - RowSpacing and ColSpacing values were swapped in Insert properties dialog
195
+ - polyline was exploded, when selected while pasting (#932)
196
+ - improved Undo/Redo
197
+ - asking to save drawing, when closing unmodified drawing
198
+ - rotating multiple entities needed multiple undos, for each entity (#1002)
199
+ - crashed after cut, paste, undo (#993)
200
+ - oversized layer list icons for print and construction (#1021)
201
+ - '@' key press didn't activate command box (#1016)
202
+ - angular dimensions failed to move, rotate, mirror or scale (#1019)
203
+ - missing mouse button hint to clarify properties tool handling (#1008)
204
+ - column width in layer list too big since Ubuntu 18.04 (#980)
205
+ - Deselect entities on locking all layers
206
+ - Spline regression, where the startpoint was at 0,0 by mistake (#940,sf599)
207
+ - protect 4th vector when triangle solid is modified (Move,Rotate,Scale,Mirror) (#998)
208
+ - SVG export crashed on windows with Image Export
209
+ - length extension lines should scale according to the General Scale
210
+ - outside offset result of counterclockwise polyline wasn't connected (#972)
211
+ - Angular dimensions now respect user's custom label text
212
+
213
+ ### Removed
214
+ - ISO B series paper size
215
+ - too big and too small printing scales
216
+
217
+ ## [2.2.0-rc1] - 2018-02-16
218
+
219
+ ### Added
220
+ - support to draw auxiliary lines
221
+ - a new method to draw a polygon
222
+ - superscript 5 for all fonts
223
+ - architectural units for metric dimensions (#861)
224
+ - macOS Sierra support
225
+ - gear creation plugin
226
+ - font folder selection button
227
+ - 'Paste Multiple Commands' to the command line menu (#782)
228
+ - Pen Wizard with favorite colors list (#793,#795)
229
+ - F11 as the fullscreen hotkey for Linux (#569)
230
+ - support for individual coordinate variables (#780,#781)
231
+ - ability to load command files (#256,#689,#780,#782)
232
+ - user option for loading a variable file on startup (#689,#780,#782)
233
+ - alternative relative point syntax (#781)
234
+ - multi-command support with variable replacement (#689,#780,#782)
235
+ - command line variables (#780)
236
+ - easier way to create relative orthogonal points (#779)
237
+ - Space/Enter toggle free snap when cmd line is empty or in key code mode (#745)
238
+ - Space as alternative to Enter for cmd line & changed cal (#764)
239
+ - Ctrl+D for toggling draft mode (#750)
240
+
241
+ ### Changes
242
+ - Use a more suitable tabbar for the document list when in tab mode
243
+ - layer auto numbering improved
244
+ - Make the layerwidget filter field a bit more informative
245
+ - Change rotate to allow neg angles
246
+ - extend list plugin for more info about inserts
247
+ - improved modifier filtering for the command widget (#790,#817)
248
+ - improved keycode mode (#802,#804)
249
+ - modified the command line's ctrl+v to allow for multi-line input (#782)
250
+ - drag and drop for the favorite colors list (#793)
251
+ - improved circle anti-aliasing (#778)
252
+ - made 5.2.1 the minimum Qt version (#742)
253
+
254
+ ### Fixed
255
+ - refactoring of Angular Dimansions (#824,#896,#911)
256
+ - 'open with' didn't work on MacOS (#877)
257
+ - trackpad scroll when scrollbars are disabled
258
+ - Check viewport intersection only through points along the line
259
+ - adjusted Angular Dimension to provide inside/outside angles rather than inside/supplementary angles.
260
+ - selection of last color in the list for any layer
261
+ - Document Surveyor's Units in Current Drawing Preferences AngleFormat now has case specifier for Surveyors units (#883)
262
+ - custom page size - incorrect unit handling (#864)
263
+ - Improve Current Drawing Preferences - Units tab Angle Precision referenced wrong comboBox (#884)
264
+ - gcc 6 builds failed (#880)
265
+ - entities painted by plugins become invisible at certain positions on drawing
266
+ - Google Code in - fixed vaious spelling mistakes, submitted by participants
267
+ - some more undo related exceptions (#830)
268
+ - plot equation plugin missed out end value (#838)
269
+ - allowed for more widgets to be added to the penwizard (#795)
270
+ - possibly eliminated crash on tool activation (#814)
271
+ - file open dialog filter is case sensitive on Linux (#791)
272
+ - DXF files with comments in SECTIONs failed to load (#808)
273
+ - Save after Undo does nothing (#803)
274
+ - fixed crash on undo after ctrl+c / ctrl + v (#794)
275
+ - ensured - is considered in the new relative syntax (#781)
276
+ - ensured command line doesn't hijack hotkeys (#790)
277
+ - ensured accurate line previews (#787)
278
+ - ensured all objects are shown when a layer is toggled (#784)
279
+ - ensured layer 0 is activated when creating a new file (#775)
280
+ - ensured proper layer highlighting (#775)
281
+ - eliminated crash when pasting before a successful copy
282
+ - copied objects are not hidden with other layer objects (#774)
283
+ - Right mouse button click did not select block in Block List (#759)
284
+ - limit scrolling to drawing + perimeter
285
+ - Fix for Trackpads without smooth/hi-res scrolling
286
+ - Pasted blocks in Block List widget did not contain proper hatch data (#760)
287
+ - changing attributes of a block sub-entities (#755)
288
+ - explode action changed container entities attributes to wrong values (#754)
289
+ - ensured that closing inactive win doesn't affect the active (#753)
290
+
291
+ ### Removed
292
+ - removed wqy-unicode.lff
293
+
294
+ ## [2.1.3] - 2016-09-23
295
+
296
+ ### Fixed
297
+ - Shift would not activate the command line (#790,#817)
298
+ - Command+Tab didn't always activate the current drawing on OS X (#814,#821)
299
+
300
+ ## [2.1.2] - 2016-09-17
301
+
302
+ ### Fixed
303
+ - wouldn’t build with gcc 5.4 and 6
304
+ - mouse cursor was missing for ‘Arc Tangential’
305
+ - right-click with plugins could cause a crash (#786)
306
+ - construction lines were not drawn when the line segment was out of view
307
+ - DXF files with comments were not properly loaded (#808)
308
+ - drawings were not marked as modified after an ‘undo’
309
+ - the command line didn’t accept numpad input
310
+ - the command widget didn’t activate properly when floating (#790)
311
+
312
+ ## [2.1.1] - 2016-06-20
313
+
314
+ ### Fixed
315
+ - draft mode was not set for new/opened drawings (#749)
316
+ - performance did not improve when zooming into an area (#727)
317
+ - certain polylines were not rendered properly (#763)
318
+ - opening a file didn't restore the layer's construction state (#758)
319
+ - the cursor was hidden for 'polyline from existing'
320
+ - closing an inactive tab cleared the layer list
321
+ - wouldn't build with Qt4
322
+
323
+ ## [2.1.0] - 2016-06-04
324
+
CI/build-appimg-aarch64.sh ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ #
3
+
4
+ ## script to build LibreCAD AppImage: arm64
5
+ ## intended to be used on Travis CI
6
+ ## does not run on modern systems because of linuxdeployqt
7
+ ## for testing it can be called with parameter 'clean' to remove AppImage file and folder
8
+
9
+ # ensure that the script is called from LibreCAD root folder and executable exists
10
+ if [ ! -d "unix" ]; then
11
+ echo "The script has to be called from LibreCAD root folder!"
12
+ exit
13
+ fi
14
+ if [ ! -f "unix/librecad" ]; then
15
+ echo "Please build LibreCAD first, before calling this script!"
16
+ exit
17
+ fi
18
+
19
+ # for testing purposes and manual use
20
+ # this script can be called with parameter clean
21
+ # to remove appdir and LibreCAD*.AppImage files
22
+ if [ 1 -eq $# ] && [ "clean" = "$1" ]; then
23
+ [ -d "appdir" ] && rm -Rf appdir
24
+ compgen -G "LibreCAD*.AppImage" >/dev/null && rm LibreCAD*.AppImage
25
+ echo "cleaned LibreCAD AppImage files"
26
+ exit
27
+ fi
28
+
29
+ # create folder structure
30
+ mkdir -p appdir/usr/bin
31
+ mkdir -p appdir/usr/lib/librecad
32
+ mkdir -p appdir/usr/share/applications
33
+ mkdir -p appdir/usr/share/librecad
34
+ mkdir -p appdir/usr/share/metainfo
35
+ mkdir -p appdir/usr/share/doc/librecad
36
+ mkdir -p appdir/usr/share/icons/hicolor/256x256/apps
37
+ mkdir -p appdir/usr/share/icons/hicolor/scalable/apps
38
+ mkdir -p appdir/usr/share/librecad
39
+
40
+ # strip binaries
41
+ strip unix/librecad
42
+ strip unix/resources/plugins/*.so
43
+
44
+ # copy executables and binary resources
45
+ cp unix/librecad appdir/usr/bin/
46
+ cp unix/resources/plugins/*.so appdir/usr/lib/librecad/
47
+ cp -r unix/resources/qm appdir/usr/share/librecad/
48
+
49
+ cp desktop/librecad.desktop appdir/usr/share/applications/
50
+ cp desktop/org.librecad.librecad.appdata.xml appdir/usr/share/metainfo/
51
+
52
+ cp -r librecad/support/doc/* appdir/usr/share/doc/librecad/
53
+ cp -r librecad/support/fonts appdir/usr/share/librecad/
54
+ cp -r librecad/support/library appdir/usr/share/librecad/
55
+ cp -r librecad/support/patterns appdir/usr/share/librecad/
56
+
57
+ cp CI/librecad.svg appdir/usr/share/icons/hicolor/scalable/apps/
58
+ convert -resize 256x256 CI/librecad.svg appdir/usr/share/icons/hicolor/256x256/apps/librecad.png
59
+ mkdir -p appdir/usr/share/icons/hicolor/scalable/apps/
60
+ cp CI/librecad.svg appdir/usr/share/icons/hicolor/scalable/apps/
61
+
62
+ ls -l appdir/usr/share/icons/hicolor/256x256/apps/librecad.png
63
+ ls -l appdir/usr/share/icons/hicolor/scalable/apps/
64
+ ls -l appdir/usr/share/applications/librecad.desktop
65
+
66
+ export QMAKE=$(which qmake6)
67
+ export EXTRA_QT_MODULES=svg
68
+
69
+ wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-aarch64.AppImage" | head -n 1 | cut -d '"' -f 2)
70
+ chmod +x appimagetool-*.AppImage
71
+ wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage
72
+ chmod +x *.AppImage
73
+ # Bundle EVERYTHING
74
+ VERSION=`git describe --always` ARCH=aarch64 ./appimagetool-*.AppImage -s deploy appdir/usr/share/applications/*.desktop
75
+ VERSION=`git describe --always` ./appimagetool-*.AppImage ./appdir
76
+ chmod +x *.AppImage
77
+
CI/build-appimg.sh ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -x
2
+ #
3
+
4
+ ## script to build LibreCAD AppImage
5
+ ## intended to be used on Travis CI
6
+ ## does not run on modern systems because of linuxdeployqt
7
+ ## for testing it can be called with parameter 'clean' to remove AppImage file and folder
8
+
9
+ # ensure that the script is called from LibreCAD root folder and executable exists
10
+ if [ ! -d "unix" ]; then
11
+ echo "The script has to be called from LibreCAD root folder!"
12
+ exit
13
+ fi
14
+ if [ ! -f "unix/librecad" ]; then
15
+ echo "Please build LibreCAD first, before calling this script!"
16
+ exit
17
+ fi
18
+
19
+ # for testing purposes and manual use
20
+ # this script can be called with parameter clean
21
+ # to remove appdir and LibreCAD*.AppImage files
22
+ if [ 1 -eq $# ] && [ "clean" = "$1" ]; then
23
+ [ -d "appdir" ] && rm -Rf appdir
24
+ compgen -G "LibreCAD*.AppImage" >/dev/null && rm LibreCAD*.AppImage
25
+ echo "cleaned LibreCAD AppImage files"
26
+ exit
27
+ fi
28
+
29
+ # create folder structure
30
+ mkdir -p appdir/usr/bin
31
+ mkdir -p appdir/usr/lib/librecad
32
+ mkdir -p appdir/usr/share/applications
33
+ mkdir -p appdir/usr/share/librecad
34
+ mkdir -p appdir/usr/share/metainfo
35
+ mkdir -p appdir/usr/share/doc/librecad
36
+ mkdir -p appdir/usr/share/icons/hicolor/256x256/apps
37
+ mkdir -p appdir/usr/share/icons/hicolor/scalable/apps
38
+ mkdir -p appdir/usr/share/librecad/qm
39
+
40
+ # strip binaries
41
+ strip unix/librecad
42
+ strip unix/resources/plugins/*/*.so
43
+
44
+ # copy executables and binary resources
45
+ cp unix/librecad appdir/usr/bin/
46
+ cp unix/resources/plugins/*/*.so appdir/usr/lib/librecad/
47
+ cp -r unix/*.qm appdir/usr/share/librecad/qm/
48
+
49
+ cp desktop/librecad.desktop appdir/usr/share/applications/
50
+ cp desktop/org.librecad.librecad.appdata.xml appdir/usr/share/metainfo/
51
+
52
+ cp -r librecad/support/doc/* appdir/usr/share/doc/librecad/
53
+ cp -r librecad/support/fonts appdir/usr/share/librecad/
54
+ cp -r librecad/support/library appdir/usr/share/librecad/
55
+ cp -r librecad/support/patterns appdir/usr/share/librecad/
56
+
57
+ cp CI/librecad.svg appdir/usr/share/icons/hicolor/scalable/apps/
58
+ convert -resize 256x256 CI/librecad.svg appdir/usr/share/icons/hicolor/256x256/apps/librecad.png
59
+
60
+ wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)
61
+ chmod +x appimagetool-*.AppImage
62
+ # Bundle EVERYTHING
63
+ VERSION=`git describe --always` ARCH=x86_64 ./appimagetool-*.AppImage -s deploy appdir/usr/share/applications/*.desktop
64
+ VERSION=`git describe --always` ./appimagetool-*.AppImage ./appdir
65
+ chmod +x *.AppImage
CI/custom-win-ARM64.nsh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ ;local settings
2
+
3
+ !define Qt_Dir "D:\a\LibreCAD\Qt"
4
+ !define Qt_Version "6.9.0"
5
+ !define Mingw_Ver "mingw_64"
6
+ !define InstallerName "LibreCAD-Installer"
7
+ !define ProgramsFolder "$PROGRAMFILES64"
8
+ !define AppKeyName "LibreCADARM64"
9
+ !define AppName "LibreCAD (ARM64)"
CI/custom-win-x64.nsh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ ;local settings
2
+
3
+ !define Qt_Dir "D:\a\LibreCAD\Qt"
4
+ !define Qt_Version "6.9.0"
5
+ !define Mingw_Ver "mingw_64"
6
+ !define InstallerName "LibreCAD-Installer"
7
+ !define ProgramsFolder "$PROGRAMFILES64"
8
+ !define AppKeyName "LibreCADx64"
9
+ !define AppName "LibreCAD (x64)"
CI/custom-win.nsh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ ;local settings
2
+
3
+ !define Qt_Dir "D:\a\LibreCAD\Qt"
4
+ !define Qt_Version "6.9.0"
5
+ !define Mingw_Ver "mingw73_32"
6
+ !define InstallerName "LibreCAD-Installer"
7
+ !define ProgramsFolder "$PROGRAMFILES"
8
+ !define AppKeyName "LibreCAD"
9
+ !define APPNAME "LibreCAD"
CI/custom-win.pri ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ CUSTOM_ROOT = D:\a\LibreCAD\LibreCAD
2
+ BOOST_DIR = $${CUSTOM_ROOT}\..\boost
3
+ BOOST_LIBDIR = $${CUSTOM_ROOT}\..\boost
4
+ MSYSGIT_DIR = C:\Progra~1\Git\bin
CI/librecad.svg ADDED
CI/qt512.conf ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /opt/qt512/bin
2
+ /opt/qt512/lib
CMakeLists.txt ADDED
@@ -0,0 +1,1717 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cmake_minimum_required(VERSION 3.28)
2
+ project(LibreCAD VERSION 2.2.2)
3
+
4
+ set(CMAKE_CXX_STANDARD 17)
5
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
6
+
7
+ set(CMAKE_INCLUDE_CURRENT_DIR ON)
8
+ set(CMAKE_AUTOUIC_OPTIONS --connections string)
9
+
10
+ set(CMAKE_AUTOMOC ON)
11
+ set(CMAKE_AUTOUIC ON)
12
+ set(CMAKE_AUTORCC ON)
13
+
14
+ find_package(Qt6 COMPONENTS Gui Core Widgets PrintSupport Svg Network REQUIRED)
15
+ find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
16
+ find_package(Boost REQUIRED)
17
+ find_package(Freetype)
18
+
19
+ # Define all sources (as before)
20
+ file(GLOB_RECURSE AUTO_EXCLUDED_SOURCES
21
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/debug/*.*"
22
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/creation/*.*"
23
+ "${PROJECT_SOURCE_DIR}/libraries/*.*"
24
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/*.*"
25
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/clipboard/*.*"
26
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/document/*.*"
27
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/overlays/*.*"
28
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/undo/*.*"
29
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/utils/*.*"
30
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/fileio/*.*"
31
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/information/*.*"
32
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/gui/*.*"
33
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/math/*.*"
34
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/modification/*.*"
35
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/printing/*.*"
36
+ "${PROJECT_SOURCE_DIR}/librecad/src/lib/scripting/*.*"
37
+ )
38
+
39
+ set(SHARED_INCLUDES
40
+ ${Boost_INCLUDE_DIRS}
41
+ libraries/jwwlib/src
42
+ libraries/lciconengine
43
+ libraries/libdxfrw/src
44
+ libraries/libdxfrw/src/intern
45
+ libraries/muparser/include
46
+ librecad/res/arrows
47
+ librecad/res/controls
48
+ librecad/res/dxf
49
+ librecad/res/gdt
50
+ librecad/res/icons
51
+ librecad/res/images
52
+ librecad/src/actions
53
+ librecad/src/actions/dock_widgets
54
+ librecad/src/actions/dock_widgets/block
55
+ librecad/src/actions/dock_widgets/cad
56
+ librecad/src/actions/dock_widgets/entity_info
57
+ librecad/src/actions/dock_widgets/layer
58
+ librecad/src/actions/dock_widgets/library
59
+ librecad/src/actions/dock_widgets/ucs_list
60
+ librecad/src/actions/dock_widgets/workspaces
61
+ librecad/src/actions/drawing
62
+ librecad/src/actions/drawing/arc
63
+ librecad/src/actions/drawing/draw
64
+ librecad/src/actions/drawing/draw/circle
65
+ librecad/src/actions/drawing/draw/curve
66
+ librecad/src/actions/drawing/draw/dimensions
67
+ librecad/src/actions/drawing/draw/ellipse
68
+ librecad/src/actions/drawing/draw/hatch
69
+ librecad/src/actions/drawing/draw/image
70
+ librecad/src/actions/drawing/draw/line
71
+ librecad/src/actions/drawing/draw/line/misc
72
+ librecad/src/actions/drawing/draw/line/shapes
73
+ librecad/src/actions/drawing/draw/line/shapes/polygon
74
+ librecad/src/actions/drawing/draw/line/shapes/rect
75
+ librecad/src/actions/drawing/draw/misc
76
+ librecad/src/actions/drawing/draw/point
77
+ librecad/src/actions/drawing/draw/polygon
78
+ librecad/src/actions/drawing/draw/polyline
79
+ librecad/src/actions/drawing/draw/rect
80
+ librecad/src/actions/drawing/draw/spline
81
+ librecad/src/actions/drawing/draw/text
82
+ librecad/src/actions/drawing/edit
83
+ librecad/src/actions/drawing/info
84
+ librecad/src/actions/drawing/modify
85
+ librecad/src/actions/drawing/pen
86
+ librecad/src/actions/drawing/pick
87
+ librecad/src/actions/drawing/rel_zero
88
+ librecad/src/actions/drawing/selection
89
+ librecad/src/actions/drawing/snap
90
+ librecad/src/actions/drawing/zoom
91
+ librecad/src/actions/file
92
+ librecad/src/actions/options
93
+ librecad/src/actions/print_preview
94
+ librecad/src/cmd
95
+ librecad/src/lib/actions
96
+ librecad/src/lib/creation
97
+ librecad/src/lib/debug
98
+ librecad/src/lib/engine
99
+ librecad/src/lib/engine/clipboard
100
+ librecad/src/lib/engine/document
101
+ librecad/src/lib/engine/document/blocks
102
+ librecad/src/lib/engine/document/container
103
+ librecad/src/lib/engine/document/dimstyles
104
+ librecad/src/lib/engine/document/dimstyles/builder
105
+ librecad/src/lib/engine/document/dimstyles/export
106
+ librecad/src/lib/engine/document/entities
107
+ librecad/src/lib/engine/document/entities/support
108
+ librecad/src/lib/engine/document/fonts
109
+ librecad/src/lib/engine/document/layers
110
+ librecad/src/lib/engine/document/patterns
111
+ librecad/src/lib/engine/document/textstyles
112
+ librecad/src/lib/engine/document/ucs
113
+ librecad/src/lib/engine/document/variables
114
+ librecad/src/lib/engine/document/views
115
+ librecad/src/lib/engine/overlays
116
+ librecad/src/lib/engine/overlays/angles_base
117
+ librecad/src/lib/engine/overlays/crosshair
118
+ librecad/src/lib/engine/overlays/highlight
119
+ librecad/src/lib/engine/overlays/info_cursor
120
+ librecad/src/lib/engine/overlays/overlay_box
121
+ librecad/src/lib/engine/overlays/preview
122
+ librecad/src/lib/engine/overlays/references
123
+ librecad/src/lib/engine/overlays/ucs_mark
124
+ librecad/src/lib/engine/settings
125
+ librecad/src/lib/engine/undo
126
+ librecad/src/lib/engine/utils
127
+ librecad/src/lib/fileio
128
+ librecad/src/lib/filters
129
+ librecad/src/lib/generators
130
+ librecad/src/lib/generators/image
131
+ librecad/src/lib/generators/layers
132
+ librecad/src/lib/generators/makercamsvg
133
+ librecad/src/lib/gui
134
+ librecad/src/lib/gui/grid
135
+ librecad/src/lib/gui/render
136
+ librecad/src/lib/gui/render/headless
137
+ librecad/src/lib/gui/render/widget
138
+ librecad/src/lib/information
139
+ librecad/src/lib/math
140
+ librecad/src/lib/modification
141
+ librecad/src/lib/printing
142
+ librecad/src/lib/scripting
143
+ librecad/src/main
144
+ librecad/src/main/console_dxf2pdf
145
+ librecad/src/plugins
146
+ librecad/src/plugins/intern
147
+ librecad/src/test
148
+ librecad/src/ui
149
+ librecad/src/ui/action_options
150
+ librecad/src/ui/action_options/circle
151
+ librecad/src/ui/action_options/curve
152
+ librecad/src/ui/action_options/dimensions
153
+ librecad/src/ui/action_options/draw
154
+ librecad/src/ui/action_options/edit
155
+ librecad/src/ui/action_options/ellipse
156
+ librecad/src/ui/action_options/image
157
+ librecad/src/ui/action_options/info
158
+ librecad/src/ui/action_options/insert
159
+ librecad/src/ui/action_options/line
160
+ librecad/src/ui/action_options/misc
161
+ librecad/src/ui/action_options/modify
162
+ librecad/src/ui/action_options/other
163
+ librecad/src/ui/action_options/point
164
+ librecad/src/ui/action_options/polygon
165
+ librecad/src/ui/action_options/polyline
166
+ librecad/src/ui/action_options/print_preview
167
+ librecad/src/ui/action_options/rect
168
+ librecad/src/ui/action_options/select
169
+ librecad/src/ui/action_options/selection
170
+ librecad/src/ui/action_options/snap
171
+ librecad/src/ui/action_options/spline
172
+ librecad/src/ui/action_options/text
173
+ librecad/src/ui/actions
174
+ librecad/src/ui/components
175
+ librecad/src/ui/components/comboboxes
176
+ librecad/src/ui/components/containers
177
+ librecad/src/ui/components/creators
178
+ librecad/src/ui/components/layouts
179
+ librecad/src/ui/components/pen
180
+ librecad/src/ui/components/status_bar
181
+ librecad/src/ui/components/toolbars
182
+ librecad/src/ui/dialogs
183
+ librecad/src/ui/dialogs/actions
184
+ librecad/src/ui/dialogs/actions/modify
185
+ librecad/src/ui/dialogs/creators
186
+ librecad/src/ui/dialogs/entity
187
+ librecad/src/ui/dialogs/file
188
+ librecad/src/ui/dialogs/file/export
189
+ librecad/src/ui/dialogs/file/export/image
190
+ librecad/src/ui/dialogs/file/export/layers
191
+ librecad/src/ui/dialogs/file/export/makercam
192
+ librecad/src/ui/dialogs/file/export_layers
193
+ librecad/src/ui/dialogs/main
194
+ librecad/src/ui/dialogs/settings
195
+ librecad/src/ui/dialogs/settings/device_options
196
+ librecad/src/ui/dialogs/settings/dimstyles
197
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager
198
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support
199
+ librecad/src/ui/dialogs/settings/options_device
200
+ librecad/src/ui/dialogs/settings/options_drawing
201
+ librecad/src/ui/dialogs/settings/options_general
202
+ librecad/src/ui/dialogs/settings/options_widget
203
+ librecad/src/ui/dialogs/settings/shortcuts
204
+ librecad/src/ui/dock_widgets
205
+ librecad/src/ui/dock_widgets/block_widget
206
+ librecad/src/ui/dock_widgets/cad
207
+ librecad/src/ui/dock_widgets/command_line
208
+ librecad/src/ui/dock_widgets/entity_info
209
+ librecad/src/ui/dock_widgets/layer_widget
210
+ librecad/src/ui/dock_widgets/layers_tree
211
+ librecad/src/ui/dock_widgets/library_widget
212
+ librecad/src/ui/dock_widgets/pen_palette
213
+ librecad/src/ui/dock_widgets/pen_wizard
214
+ librecad/src/ui/dock_widgets/ucs_list
215
+ librecad/src/ui/dock_widgets/views_list
216
+ librecad/src/ui/dock_widgets/workspaces
217
+ librecad/src/ui/main
218
+ librecad/src/ui/main/fontviewer
219
+ librecad/src/ui/main/init
220
+ librecad/src/ui/main/persistence
221
+ librecad/src/ui/main/release_check
222
+ librecad/src/ui/main/support
223
+ librecad/src/ui/main/workspaces
224
+ librecad/src/ui/view
225
+ )
226
+
227
+ set(LIBRECAD_RES
228
+ librecad/res/arrows/arrows.qrc
229
+ librecad/res/controls/controls.qrc
230
+ librecad/res/dxf/dxf.qrc
231
+ librecad/res/gdt/gdt.qrc
232
+ librecad/res/icons/icons.qrc
233
+ librecad/res/images/images.qrc
234
+ licenses/licenses.qrc
235
+ )
236
+
237
+ # Shared sources: All from SOURCES except main, consoles, and tests
238
+ set(SHARED_SOURCES
239
+ libraries/jwwlib/src/dl_attributes.h
240
+ libraries/jwwlib/src/dl_codes.h
241
+ libraries/jwwlib/src/dl_creationinterface.h
242
+ libraries/jwwlib/src/dl_entities.h
243
+ libraries/jwwlib/src/dl_exception.h
244
+ libraries/jwwlib/src/dl_extrusion.h
245
+ libraries/jwwlib/src/dl_jww.cpp
246
+ libraries/jwwlib/src/dl_jww.h
247
+ libraries/jwwlib/src/dl_writer.h
248
+ libraries/jwwlib/src/dl_writer_ascii.cpp
249
+ libraries/jwwlib/src/dl_writer_ascii.h
250
+ libraries/jwwlib/src/jwtype.h
251
+ libraries/jwwlib/src/jwwdoc.cpp
252
+ libraries/jwwlib/src/jwwdoc.h
253
+ libraries/libdxfrw/src/drw_base.cpp
254
+ libraries/libdxfrw/src/drw_base.h
255
+ libraries/libdxfrw/src/drw_classes.cpp
256
+ libraries/libdxfrw/src/drw_classes.h
257
+ libraries/libdxfrw/src/drw_entities.cpp
258
+ libraries/libdxfrw/src/drw_entities.h
259
+ libraries/libdxfrw/src/drw_header.cpp
260
+ libraries/libdxfrw/src/drw_header.h
261
+ libraries/libdxfrw/src/drw_interface.h
262
+ libraries/libdxfrw/src/drw_objects.cpp
263
+ libraries/libdxfrw/src/drw_objects.h
264
+ libraries/libdxfrw/src/intern/drw_cptable932.h
265
+ libraries/libdxfrw/src/intern/drw_cptable936.h
266
+ libraries/libdxfrw/src/intern/drw_cptable949.h
267
+ libraries/libdxfrw/src/intern/drw_cptable950.h
268
+ libraries/libdxfrw/src/intern/drw_cptables.h
269
+ libraries/libdxfrw/src/intern/drw_dbg.cpp
270
+ libraries/libdxfrw/src/intern/drw_dbg.h
271
+ libraries/libdxfrw/src/intern/drw_reserve.h
272
+ libraries/libdxfrw/src/intern/drw_textcodec.cpp
273
+ libraries/libdxfrw/src/intern/drw_textcodec.h
274
+ libraries/libdxfrw/src/intern/dwgbuffer.cpp
275
+ libraries/libdxfrw/src/intern/dwgbuffer.h
276
+ libraries/libdxfrw/src/intern/dwgreader.cpp
277
+ libraries/libdxfrw/src/intern/dwgreader.h
278
+ libraries/libdxfrw/src/intern/dwgreader15.cpp
279
+ libraries/libdxfrw/src/intern/dwgreader15.h
280
+ libraries/libdxfrw/src/intern/dwgreader18.cpp
281
+ libraries/libdxfrw/src/intern/dwgreader18.h
282
+ libraries/libdxfrw/src/intern/dwgreader21.cpp
283
+ libraries/libdxfrw/src/intern/dwgreader21.h
284
+ libraries/libdxfrw/src/intern/dwgreader24.cpp
285
+ libraries/libdxfrw/src/intern/dwgreader24.h
286
+ libraries/libdxfrw/src/intern/dwgreader27.cpp
287
+ libraries/libdxfrw/src/intern/dwgreader27.h
288
+ libraries/libdxfrw/src/intern/dwgutil.cpp
289
+ libraries/libdxfrw/src/intern/dwgutil.h
290
+ libraries/libdxfrw/src/intern/dxfreader.cpp
291
+ libraries/libdxfrw/src/intern/dxfreader.h
292
+ libraries/libdxfrw/src/intern/dxfwriter.cpp
293
+ libraries/libdxfrw/src/intern/dxfwriter.h
294
+ libraries/libdxfrw/src/intern/rscodec.cpp
295
+ libraries/libdxfrw/src/intern/rscodec.h
296
+ libraries/libdxfrw/src/libdwgr.cpp
297
+ libraries/libdxfrw/src/libdwgr.h
298
+ libraries/libdxfrw/src/libdxfrw.cpp
299
+ libraries/libdxfrw/src/libdxfrw.h
300
+ libraries/libdxfrw/src/main_doc.h
301
+ librecad/src/actions/dock_widgets/block/rs_actionblocksadd.cpp
302
+ librecad/src/actions/dock_widgets/block/rs_actionblocksadd.h
303
+ librecad/src/actions/dock_widgets/block/rs_actionblocksattributes.cpp
304
+ librecad/src/actions/dock_widgets/block/rs_actionblocksattributes.h
305
+ librecad/src/actions/dock_widgets/block/rs_actionblockscreate.cpp
306
+ librecad/src/actions/dock_widgets/block/rs_actionblockscreate.h
307
+ librecad/src/actions/dock_widgets/block/rs_actionblocksedit.cpp
308
+ librecad/src/actions/dock_widgets/block/rs_actionblocksedit.h
309
+ librecad/src/actions/dock_widgets/block/rs_actionblocksfreezeall.cpp
310
+ librecad/src/actions/dock_widgets/block/rs_actionblocksfreezeall.h
311
+ librecad/src/actions/dock_widgets/block/rs_actionblocksinsert.cpp
312
+ librecad/src/actions/dock_widgets/block/rs_actionblocksinsert.h
313
+ librecad/src/actions/dock_widgets/block/rs_actionblocksremove.cpp
314
+ librecad/src/actions/dock_widgets/block/rs_actionblocksremove.h
315
+ librecad/src/actions/dock_widgets/block/rs_actionblockssave.cpp
316
+ librecad/src/actions/dock_widgets/block/rs_actionblockssave.h
317
+ librecad/src/actions/dock_widgets/block/rs_actionblockstoggleview.cpp
318
+ librecad/src/actions/dock_widgets/block/rs_actionblockstoggleview.h
319
+ librecad/src/actions/dock_widgets/entity_info/lc_actioninfopickcoordinates.cpp
320
+ librecad/src/actions/dock_widgets/layer/lc_actionentitylayerbase.cpp
321
+ librecad/src/actions/dock_widgets/layer/lc_actionentitylayerbase.h
322
+ librecad/src/actions/dock_widgets/layer/lc_actionentitylayertoggle.cpp
323
+ librecad/src/actions/dock_widgets/layer/lc_actionlayerscmd.cpp
324
+ librecad/src/actions/dock_widgets/layer/lc_actionlayerscmd.h
325
+ librecad/src/actions/dock_widgets/layer/lc_actionlayersexport.cpp
326
+ librecad/src/actions/dock_widgets/layer/lc_actionlayersexport.h
327
+ librecad/src/actions/dock_widgets/layer/lc_actionlayerstoggleconstruction.cpp
328
+ librecad/src/actions/dock_widgets/layer/lc_actionlayerstoggleconstruction.h
329
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersadd.cpp
330
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersadd.h
331
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersedit.cpp
332
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersedit.h
333
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersfreezeall.cpp
334
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersfreezeall.h
335
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerslockall.cpp
336
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerslockall.h
337
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersremove.cpp
338
+ librecad/src/actions/dock_widgets/layer/rs_actionlayersremove.h
339
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstogglelock.cpp
340
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstogglelock.h
341
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleprint.cpp
342
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleprint.h
343
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleview.cpp
344
+ librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleview.h
345
+ librecad/src/actions/dock_widgets/library/rs_actionlibraryinsert.cpp
346
+ librecad/src/actions/dock_widgets/library/rs_actionlibraryinsert.h
347
+ librecad/src/actions/dock_widgets/ucs_list/lc_actionucsbydimordinate.cpp
348
+ librecad/src/actions/dock_widgets/ucs_list/lc_actionucsbydimordinate.h
349
+ librecad/src/actions/dock_widgets/ucs_list/lc_actionucscreate.cpp
350
+ librecad/src/actions/dock_widgets/ucs_list/lc_actionucscreate.h
351
+ librecad/src/actions/drawing/draw/circle/lc_actiondrawcircle2pr.cpp
352
+ librecad/src/actions/drawing/draw/circle/lc_actiondrawcircle2pr.h
353
+ librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebase.cpp
354
+ librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebase.h
355
+ librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebyarc.cpp
356
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle.cpp
357
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle.h
358
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle2p.cpp
359
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle2p.h
360
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle3p.cpp
361
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle3p.h
362
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcirclecr.cpp
363
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcirclecr.h
364
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircleinscribe.cpp
365
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircleinscribe.h
366
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan1_2p.cpp
367
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan1_2p.h
368
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2.cpp
369
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2.h
370
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2_1p.cpp
371
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2_1p.h
372
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan3.cpp
373
+ librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan3.h
374
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsangle.cpp
375
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsangle.h
376
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsbase.cpp
377
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsbase.h
378
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsheight.cpp
379
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsheight.h
380
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointslength.cpp
381
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointslength.h
382
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsradius.cpp
383
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsradius.h
384
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawhyperbolafp.cpp
385
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawhyperbolafp.cpp
386
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawparabola4points.cpp
387
+ librecad/src/actions/drawing/draw/curve/lc_actiondrawparabolaFD.cpp
388
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarc.cpp
389
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarc.h
390
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarc3p.cpp
391
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarc3p.h
392
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarctangential.cpp
393
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawarctangential.h
394
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawlinefree.cpp
395
+ librecad/src/actions/drawing/draw/curve/rs_actiondrawlinefree.h
396
+ librecad/src/actions/drawing/draw/dimensions/lc_actioncircledimbase.cpp
397
+ librecad/src/actions/drawing/draw/dimensions/lc_actioncircledimbase.h
398
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimarc.cpp
399
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimarc.h
400
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimlinearbase.cpp
401
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinate.cpp
402
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinate.h
403
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinaterebase.cpp
404
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinaterebase.h
405
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimstyleapply.cpp
406
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondimstyleapply.h
407
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondrawdimbaseline.cpp
408
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondrawdimbaseline.h
409
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondrawgdtfeaturecontrolframe.cpp
410
+ librecad/src/actions/drawing/draw/dimensions/lc_actiondrawgdtfeaturecontrolframe.h
411
+ librecad/src/actions/drawing/draw/dimensions/lc_actionselectdimordinatesameorigin.cpp
412
+ librecad/src/actions/drawing/draw/dimensions/lc_actionselectdimordinatesameorigin.h
413
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimaligned.cpp
414
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimaligned.h
415
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimangular.cpp
416
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimangular.h
417
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimdiametric.cpp
418
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimdiametric.h
419
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimension.cpp
420
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimension.h
421
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimleader.cpp
422
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimleader.h
423
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimlinear.cpp
424
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimlinear.h
425
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimradial.cpp
426
+ librecad/src/actions/drawing/draw/dimensions/rs_actiondimradial.h
427
+ librecad/src/actions/drawing/draw/dimensions/rs_actiontoolregeneratedimensions.cpp
428
+ librecad/src/actions/drawing/draw/dimensions/rs_actiontoolregeneratedimensions.h
429
+ librecad/src/actions/drawing/draw/ellipse/lc_actiondrawellipse1point.cpp
430
+ librecad/src/actions/drawing/draw/ellipse/lc_actiondrawellipse1point.h
431
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipse4points.cpp
432
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipse4points.h
433
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseaxis.cpp
434
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseaxis.h
435
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsecenter3points.cpp
436
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsecenter3points.h
437
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsefocipoint.cpp
438
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsefocipoint.h
439
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseinscribe.cpp
440
+ librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseinscribe.h
441
+ librecad/src/actions/drawing/draw/hatch/rs_actiondrawhatch.cpp
442
+ librecad/src/actions/drawing/draw/hatch/rs_actiondrawhatch.h
443
+ librecad/src/actions/drawing/draw/image/rs_actiondrawimage.cpp
444
+ librecad/src/actions/drawing/draw/image/rs_actiondrawimage.h
445
+ librecad/src/actions/drawing/draw/line/lc_abstractactiondrawline.cpp
446
+ librecad/src/actions/drawing/draw/line/lc_actiondrawlineanglerel.cpp
447
+ librecad/src/actions/drawing/draw/line/lc_actiondrawlineanglerel.h
448
+ librecad/src/actions/drawing/draw/line/lc_actiondrawlinefrompointtoline.cpp
449
+ librecad/src/actions/drawing/draw/line/lc_actiondrawlinesnake.cpp
450
+ librecad/src/actions/drawing/draw/line/lc_actiondrawlinesnake.h
451
+ librecad/src/actions/drawing/draw/line/lc_actiondrawslicedivide.cpp
452
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawboundingbox.cpp
453
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawboundingbox.h
454
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawcross.cpp
455
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawcross.h
456
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawmidline.cpp
457
+ librecad/src/actions/drawing/draw/line/misc/lc_actiondrawmidline.h
458
+ librecad/src/actions/drawing/draw/line/rs_actiondrawline.cpp
459
+ librecad/src/actions/drawing/draw/line/rs_actiondrawline.h
460
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineangle.cpp
461
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineangle.h
462
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinebisector.cpp
463
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinebisector.h
464
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinehorvert.cpp
465
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinehorvert.h
466
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineorthtan.cpp
467
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineorthtan.h
468
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallel.cpp
469
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallel.h
470
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallelthrough.cpp
471
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallelthrough.h
472
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinerelangle.cpp
473
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinerelangle.h
474
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent1.cpp
475
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent1.h
476
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent2.cpp
477
+ librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent2.h
478
+ librecad/src/actions/drawing/draw/point/lc_actiondrawlinepoints.cpp
479
+ librecad/src/actions/drawing/draw/point/lc_actiondrawlinepoints.h
480
+ librecad/src/actions/drawing/draw/point/lc_actiondrawpointslattice.cpp
481
+ librecad/src/actions/drawing/draw/point/lc_actiondrawpointslattice.h
482
+ librecad/src/actions/drawing/draw/point/lc_actionpastetopoints.cpp
483
+ librecad/src/actions/drawing/draw/point/lc_actionpastetopoints.h
484
+ librecad/src/actions/drawing/draw/point/lc_actionselectpoints.cpp
485
+ librecad/src/actions/drawing/draw/point/lc_actionselectpoints.h
486
+ librecad/src/actions/drawing/draw/point/rs_actiondrawpoint.cpp
487
+ librecad/src/actions/drawing/draw/point/rs_actiondrawpoint.h
488
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon3.cpp
489
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon3.h
490
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon4.cpp
491
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon4.h
492
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygonbase.cpp
493
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygonbase.h
494
+ librecad/src/actions/drawing/draw/polygon/lc_actiondrawstar.cpp
495
+ librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon.cpp
496
+ librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon.h
497
+ librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon2.cpp
498
+ librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon2.h
499
+ librecad/src/actions/drawing/draw/polyline/lc_actionpolylinearcstolines.cpp
500
+ librecad/src/actions/drawing/draw/polyline/lc_actionpolylinearcstolines.h
501
+ librecad/src/actions/drawing/draw/polyline/lc_actionpolylinechangesegmenttype.cpp
502
+ librecad/src/actions/drawing/draw/polyline/lc_actionpolylinechangesegmenttype.h
503
+ librecad/src/actions/drawing/draw/polyline/lc_actionpolylinedeletebase.cpp
504
+ librecad/src/actions/drawing/draw/polyline/rs_actiondrawpolyline.cpp
505
+ librecad/src/actions/drawing/draw/polyline/rs_actiondrawpolyline.h
506
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineadd.cpp
507
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineadd.h
508
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineappend.cpp
509
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineappend.h
510
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedel.cpp
511
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedel.h
512
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedelbetween.cpp
513
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedelbetween.h
514
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineequidistant.cpp
515
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylineequidistant.h
516
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinesegment.cpp
517
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinesegment.h
518
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinetrim.cpp
519
+ librecad/src/actions/drawing/draw/polyline/rs_actionpolylinetrim.h
520
+ librecad/src/actions/drawing/draw/rect/lc_abstractactiondrawrectangle.cpp
521
+ librecad/src/actions/drawing/draw/rect/lc_abstractactiondrawrectangle.h
522
+ librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle1point.cpp
523
+ librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle2points.cpp
524
+ librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle2points.h
525
+ librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle3points.cpp
526
+ librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle3points.h
527
+ librecad/src/actions/drawing/draw/rect/rs_actiondrawlinerectangle.cpp
528
+ librecad/src/actions/drawing/draw/rect/rs_actiondrawlinerectangle.h
529
+ librecad/src/actions/drawing/draw/spline/lc_actiondrawsplinepoints.cpp
530
+ librecad/src/actions/drawing/draw/spline/lc_actiondrawsplinepoints.h
531
+ librecad/src/actions/drawing/draw/spline/lc_actionremovesplinepoints.cpp
532
+ librecad/src/actions/drawing/draw/spline/lc_actionremovesplinepoints.h
533
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineaddpoint.cpp
534
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineaddpoint.h
535
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineappendpoint.cpp
536
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineappendpoint.h
537
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineexplode.cpp
538
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineexplode.h
539
+ librecad/src/actions/drawing/draw/spline/lc_actionsplinefrompolyline.cpp
540
+ librecad/src/actions/drawing/draw/spline/lc_actionsplinefrompolyline.h
541
+ librecad/src/actions/drawing/draw/spline/lc_actionsplinemodifybase.cpp
542
+ librecad/src/actions/drawing/draw/spline/lc_actionsplinemodifybase.h
543
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineremovebetween.cpp
544
+ librecad/src/actions/drawing/draw/spline/lc_actionsplineremovebetween.h
545
+ librecad/src/actions/drawing/draw/spline/rs_actiondrawspline.cpp
546
+ librecad/src/actions/drawing/draw/spline/rs_actiondrawspline.h
547
+ librecad/src/actions/drawing/draw/text/rs_actiondrawmtext.cpp
548
+ librecad/src/actions/drawing/draw/text/rs_actiondrawmtext.h
549
+ librecad/src/actions/drawing/draw/text/rs_actiondrawtext.cpp
550
+ librecad/src/actions/drawing/draw/text/rs_actiondrawtext.h
551
+ librecad/src/actions/drawing/edit/lc_actioneditpastetransform.cpp
552
+ librecad/src/actions/drawing/edit/lc_actioneditpastetransform.h
553
+ librecad/src/actions/drawing/edit/rs_actioneditcopy.cpp
554
+ librecad/src/actions/drawing/edit/rs_actioneditcopy.h
555
+ librecad/src/actions/drawing/edit/rs_actioneditundo.cpp
556
+ librecad/src/actions/drawing/edit/rs_actioneditundo.h
557
+ librecad/src/actions/drawing/info/lc_actioninfo3pointsangle.cpp
558
+ librecad/src/actions/drawing/info/lc_actioninfo3pointsangle.h
559
+ librecad/src/actions/drawing/info/lc_actioninfopoint.cpp
560
+ librecad/src/actions/drawing/info/lc_actioninfopoint.h
561
+ librecad/src/actions/drawing/info/lc_actioninfoproperties.cpp
562
+ librecad/src/actions/drawing/info/rs_actioninfoangle.cpp
563
+ librecad/src/actions/drawing/info/rs_actioninfoangle.h
564
+ librecad/src/actions/drawing/info/rs_actioninfoarea.cpp
565
+ librecad/src/actions/drawing/info/rs_actioninfoarea.h
566
+ librecad/src/actions/drawing/info/rs_actioninfodist.cpp
567
+ librecad/src/actions/drawing/info/rs_actioninfodist.h
568
+ librecad/src/actions/drawing/info/rs_actioninfodist2.cpp
569
+ librecad/src/actions/drawing/info/rs_actioninfodist2.h
570
+ librecad/src/actions/drawing/info/rs_actioninfoinside.cpp
571
+ librecad/src/actions/drawing/info/rs_actioninfoinside.h
572
+ librecad/src/actions/drawing/info/rs_actioninfototallength.cpp
573
+ librecad/src/actions/drawing/info/rs_actioninfototallength.h
574
+ librecad/src/actions/drawing/lc_abstractactionwithpreview.cpp
575
+ librecad/src/actions/drawing/lc_abstractactionwithpreview.h
576
+ librecad/src/actions/drawing/modify/lc_actionmodifyalign.cpp
577
+ librecad/src/actions/drawing/modify/lc_actionmodifyalign.h
578
+ librecad/src/actions/drawing/modify/lc_actionmodifyalignref.cpp
579
+ librecad/src/actions/drawing/modify/lc_actionmodifyalignref.h
580
+ librecad/src/actions/drawing/modify/lc_actionmodifyalignsingle.cpp
581
+ librecad/src/actions/drawing/modify/lc_actionmodifyalignsingle.h
582
+ librecad/src/actions/drawing/modify/lc_actionmodifybase.cpp
583
+ librecad/src/actions/drawing/modify/lc_actionmodifybase.h
584
+ librecad/src/actions/drawing/modify/lc_actionmodifybreakdivide.cpp
585
+ librecad/src/actions/drawing/modify/lc_actionmodifybreakdivide.h
586
+ librecad/src/actions/drawing/modify/lc_actionmodifyduplicate.cpp
587
+ librecad/src/actions/drawing/modify/lc_actionmodifyduplicate.h
588
+ librecad/src/actions/drawing/modify/lc_actionmodifylinegap.cpp
589
+ librecad/src/actions/drawing/modify/lc_actionmodifylinejoin.cpp
590
+ librecad/src/actions/drawing/modify/lc_actionmodifymoveadjust.cpp
591
+ librecad/src/actions/drawing/modify/lc_actionmodifymoveadjust.h
592
+ librecad/src/actions/drawing/modify/lc_actionmodifyselectionbase.cpp
593
+ librecad/src/actions/drawing/modify/lc_actionmodifyselectionbase.h
594
+ librecad/src/actions/drawing/modify/rs_actionblocksexplode.cpp
595
+ librecad/src/actions/drawing/modify/rs_actionblocksexplode.h
596
+ librecad/src/actions/drawing/modify/rs_actionmodifyattributes.cpp
597
+ librecad/src/actions/drawing/modify/rs_actionmodifyattributes.h
598
+ librecad/src/actions/drawing/modify/rs_actionmodifybevel.cpp
599
+ librecad/src/actions/drawing/modify/rs_actionmodifybevel.h
600
+ librecad/src/actions/drawing/modify/rs_actionmodifycut.cpp
601
+ librecad/src/actions/drawing/modify/rs_actionmodifycut.h
602
+ librecad/src/actions/drawing/modify/rs_actionmodifydelete.cpp
603
+ librecad/src/actions/drawing/modify/rs_actionmodifydelete.h
604
+ librecad/src/actions/drawing/modify/rs_actionmodifydeletefree.cpp
605
+ librecad/src/actions/drawing/modify/rs_actionmodifydeletefree.h
606
+ librecad/src/actions/drawing/modify/rs_actionmodifyentity.cpp
607
+ librecad/src/actions/drawing/modify/rs_actionmodifyentity.h
608
+ librecad/src/actions/drawing/modify/rs_actionmodifyexplodetext.cpp
609
+ librecad/src/actions/drawing/modify/rs_actionmodifyexplodetext.h
610
+ librecad/src/actions/drawing/modify/rs_actionmodifymirror.cpp
611
+ librecad/src/actions/drawing/modify/rs_actionmodifymirror.h
612
+ librecad/src/actions/drawing/modify/rs_actionmodifymove.cpp
613
+ librecad/src/actions/drawing/modify/rs_actionmodifymove.h
614
+ librecad/src/actions/drawing/modify/rs_actionmodifymoverotate.cpp
615
+ librecad/src/actions/drawing/modify/rs_actionmodifymoverotate.h
616
+ librecad/src/actions/drawing/modify/rs_actionmodifyoffset.cpp
617
+ librecad/src/actions/drawing/modify/rs_actionmodifyoffset.h
618
+ librecad/src/actions/drawing/modify/rs_actionmodifyrevertdirection.cpp
619
+ librecad/src/actions/drawing/modify/rs_actionmodifyrevertdirection.h
620
+ librecad/src/actions/drawing/modify/rs_actionmodifyrotate.cpp
621
+ librecad/src/actions/drawing/modify/rs_actionmodifyrotate.h
622
+ librecad/src/actions/drawing/modify/rs_actionmodifyrotate2.cpp
623
+ librecad/src/actions/drawing/modify/rs_actionmodifyrotate2.h
624
+ librecad/src/actions/drawing/modify/rs_actionmodifyround.cpp
625
+ librecad/src/actions/drawing/modify/rs_actionmodifyround.h
626
+ librecad/src/actions/drawing/modify/rs_actionmodifyscale.cpp
627
+ librecad/src/actions/drawing/modify/rs_actionmodifyscale.h
628
+ librecad/src/actions/drawing/modify/rs_actionmodifystretch.cpp
629
+ librecad/src/actions/drawing/modify/rs_actionmodifystretch.h
630
+ librecad/src/actions/drawing/modify/rs_actionmodifytrim.cpp
631
+ librecad/src/actions/drawing/modify/rs_actionmodifytrim.h
632
+ librecad/src/actions/drawing/modify/rs_actionmodifytrimamount.cpp
633
+ librecad/src/actions/drawing/modify/rs_actionmodifytrimamount.h
634
+ librecad/src/actions/drawing/modify/rs_actionorder.cpp
635
+ librecad/src/actions/drawing/modify/rs_actionorder.h
636
+ librecad/src/actions/drawing/pen/lc_actionpenapply.cpp
637
+ librecad/src/actions/drawing/pen/lc_actionpenpick.cpp
638
+ librecad/src/actions/drawing/pen/lc_actionpensyncactivebylayer.cpp
639
+ librecad/src/actions/drawing/pen/lc_actionpensyncactivebylayer.h
640
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickangle.cpp
641
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickangle.h
642
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickbase.cpp
643
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickbase.h
644
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickdistance.cpp
645
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickdistance.h
646
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickposition.cpp
647
+ librecad/src/actions/drawing/pick/lc_actioninteractivepickposition.h
648
+ librecad/src/actions/drawing/rel_zero/rs_actionlockrelativezero.cpp
649
+ librecad/src/actions/drawing/rel_zero/rs_actionlockrelativezero.h
650
+ librecad/src/actions/drawing/rel_zero/rs_actionsetrelativezero.cpp
651
+ librecad/src/actions/drawing/rel_zero/rs_actionsetrelativezero.h
652
+ librecad/src/actions/drawing/rs_actiondefault.cpp
653
+ librecad/src/actions/drawing/rs_actiondefault.h
654
+ librecad/src/actions/drawing/selection/lc_actionsingleentityselectbase.cpp
655
+ librecad/src/actions/drawing/selection/lc_actionsingleentityselectbase.h
656
+ librecad/src/actions/drawing/selection/rs_actionselectall.cpp
657
+ librecad/src/actions/drawing/selection/rs_actionselectall.h
658
+ librecad/src/actions/drawing/selection/rs_actionselectcontour.cpp
659
+ librecad/src/actions/drawing/selection/rs_actionselectcontour.h
660
+ librecad/src/actions/drawing/selection/rs_actionselectintersected.cpp
661
+ librecad/src/actions/drawing/selection/rs_actionselectintersected.h
662
+ librecad/src/actions/drawing/selection/rs_actionselectinvert.cpp
663
+ librecad/src/actions/drawing/selection/rs_actionselectinvert.h
664
+ librecad/src/actions/drawing/selection/rs_actionselectlayer.cpp
665
+ librecad/src/actions/drawing/selection/rs_actionselectlayer.h
666
+ librecad/src/actions/drawing/selection/rs_actionselectsingle.cpp
667
+ librecad/src/actions/drawing/selection/rs_actionselectsingle.h
668
+ librecad/src/actions/drawing/selection/rs_actionselectwindow.cpp
669
+ librecad/src/actions/drawing/selection/rs_actionselectwindow.h
670
+ librecad/src/actions/drawing/snap/lc_actionsnapmiddlemanual.cpp
671
+ librecad/src/actions/drawing/snap/rs_actionsnapintersectionmanual.cpp
672
+ librecad/src/actions/drawing/snap/rs_actionsnapintersectionmanual.h
673
+ librecad/src/actions/drawing/zoom/rs_actionzoomauto.cpp
674
+ librecad/src/actions/drawing/zoom/rs_actionzoomauto.h
675
+ librecad/src/actions/drawing/zoom/rs_actionzoomin.cpp
676
+ librecad/src/actions/drawing/zoom/rs_actionzoomin.h
677
+ librecad/src/actions/drawing/zoom/rs_actionzoompan.cpp
678
+ librecad/src/actions/drawing/zoom/rs_actionzoompan.h
679
+ librecad/src/actions/drawing/zoom/rs_actionzoomprevious.cpp
680
+ librecad/src/actions/drawing/zoom/rs_actionzoomprevious.h
681
+ librecad/src/actions/drawing/zoom/rs_actionzoomredraw.cpp
682
+ librecad/src/actions/drawing/zoom/rs_actionzoomredraw.h
683
+ librecad/src/actions/drawing/zoom/rs_actionzoomscroll.cpp
684
+ librecad/src/actions/drawing/zoom/rs_actionzoomscroll.h
685
+ librecad/src/actions/drawing/zoom/rs_actionzoomwindow.cpp
686
+ librecad/src/actions/drawing/zoom/rs_actionzoomwindow.h
687
+ librecad/src/actions/file/lc_actionfileexportmakercam.cpp
688
+ librecad/src/actions/file/lc_actionfileexportmakercam.h
689
+ librecad/src/actions/options/rs_actionoptionsdrawing.cpp
690
+ librecad/src/actions/options/rs_actionoptionsdrawing.h
691
+ librecad/src/actions/print_preview/rs_actionprintpreview.cpp
692
+ librecad/src/actions/print_preview/rs_actionprintpreview.h
693
+ librecad/src/cmd/lc_commandItems.h
694
+ librecad/src/cmd/rs_commands.cpp
695
+ librecad/src/cmd/rs_commands.h
696
+ librecad/src/lib/actions/lc_actioncontext.cpp
697
+ librecad/src/lib/actions/lc_actioncontext.h
698
+ librecad/src/lib/actions/lc_actioninfomessagebuilder.cpp
699
+ librecad/src/lib/actions/lc_actioninfomessagebuilder.h
700
+ librecad/src/lib/actions/lc_actionpreselectionawarebase.cpp
701
+ librecad/src/lib/actions/lc_actionpreselectionawarebase.h
702
+ librecad/src/lib/actions/lc_modifiersinfo.cpp
703
+ librecad/src/lib/actions/lc_modifiersinfo.h
704
+ librecad/src/lib/actions/lc_overlayboxaction.cpp
705
+ librecad/src/lib/actions/lc_overlayboxaction.h
706
+ librecad/src/lib/actions/rs_actioninterface.cpp
707
+ librecad/src/lib/actions/rs_actioninterface.h
708
+ librecad/src/lib/actions/rs_actionselectbase.cpp
709
+ librecad/src/lib/actions/rs_actionselectbase.h
710
+ librecad/src/lib/actions/rs_previewactioninterface.cpp
711
+ librecad/src/lib/actions/rs_previewactioninterface.h
712
+ librecad/src/lib/actions/rs_snapper.cpp
713
+ librecad/src/lib/actions/rs_snapper.h
714
+ librecad/src/lib/creation/rs_creation.cpp
715
+ librecad/src/lib/creation/rs_creation.h
716
+ librecad/src/lib/debug/rs_debug.cpp
717
+ librecad/src/lib/debug/rs_debug.h
718
+ librecad/src/lib/engine/clipboard/rs_clipboard.cpp
719
+ librecad/src/lib/engine/clipboard/rs_clipboard.h
720
+ librecad/src/lib/engine/document/blocks/rs_block.cpp
721
+ librecad/src/lib/engine/document/blocks/rs_block.h
722
+ librecad/src/lib/engine/document/blocks/rs_blocklist.cpp
723
+ librecad/src/lib/engine/document/blocks/rs_blocklist.h
724
+ librecad/src/lib/engine/document/blocks/rs_blocklistlistener.h
725
+ librecad/src/lib/engine/document/container/lc_containertraverser.cpp
726
+ librecad/src/lib/engine/document/container/lc_containertraverser.h
727
+ librecad/src/lib/engine/document/container/lc_looputils.cpp
728
+ librecad/src/lib/engine/document/container/lc_looputils.h
729
+ librecad/src/lib/engine/document/container/rs_entitycontainer.cpp
730
+ librecad/src/lib/engine/document/container/rs_entitycontainer.h
731
+ librecad/src/lib/engine/document/dimstyles/lc_dimarrowregistry.cpp
732
+ librecad/src/lib/engine/document/dimstyles/lc_dimarrowregistry.h
733
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyle.cpp
734
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyle.h
735
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyleslist.cpp
736
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyleslist.h
737
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyletovariablesmapper.cpp
738
+ librecad/src/lib/engine/document/dimstyles/lc_dimstyletovariablesmapper.h
739
+ librecad/src/lib/engine/document/dxf_format.h
740
+ librecad/src/lib/engine/document/entities/lc_cachedlengthentity.cpp
741
+ librecad/src/lib/engine/document/entities/lc_cachedlengthentity.h
742
+ librecad/src/lib/engine/document/entities/lc_dimarc.cpp
743
+ librecad/src/lib/engine/document/entities/lc_dimarc.h
744
+ librecad/src/lib/engine/document/entities/lc_dimordinate.cpp
745
+ librecad/src/lib/engine/document/entities/lc_dimordinate.h
746
+ librecad/src/lib/engine/document/entities/lc_extentitydata.cpp
747
+ librecad/src/lib/engine/document/entities/lc_extentitydata.h
748
+ librecad/src/lib/engine/document/entities/lc_hyperbola.cpp
749
+ librecad/src/lib/engine/document/entities/lc_hyperbola.h
750
+ librecad/src/lib/engine/document/entities/lc_parabola.cpp
751
+ librecad/src/lib/engine/document/entities/lc_rect.cpp
752
+ librecad/src/lib/engine/document/entities/lc_rect.h
753
+ librecad/src/lib/engine/document/entities/lc_splinehelper.cpp
754
+ librecad/src/lib/engine/document/entities/lc_splinehelper.h
755
+ librecad/src/lib/engine/document/entities/lc_splinepoints.cpp
756
+ librecad/src/lib/engine/document/entities/lc_splinepoints.h
757
+ librecad/src/lib/engine/document/entities/lc_tolerance.cpp
758
+ librecad/src/lib/engine/document/entities/lc_tolerance.h
759
+ librecad/src/lib/engine/document/entities/rs_arc.cpp
760
+ librecad/src/lib/engine/document/entities/rs_arc.h
761
+ librecad/src/lib/engine/document/entities/rs_atomicentity.cpp
762
+ librecad/src/lib/engine/document/entities/rs_atomicentity.h
763
+ librecad/src/lib/engine/document/entities/rs_circle.cpp
764
+ librecad/src/lib/engine/document/entities/rs_circle.h
765
+ librecad/src/lib/engine/document/entities/rs_constructionline.cpp
766
+ librecad/src/lib/engine/document/entities/rs_constructionline.h
767
+ librecad/src/lib/engine/document/entities/rs_dimaligned.cpp
768
+ librecad/src/lib/engine/document/entities/rs_dimaligned.h
769
+ librecad/src/lib/engine/document/entities/rs_dimangular.cpp
770
+ librecad/src/lib/engine/document/entities/rs_dimangular.h
771
+ librecad/src/lib/engine/document/entities/rs_dimdiametric.cpp
772
+ librecad/src/lib/engine/document/entities/rs_dimdiametric.h
773
+ librecad/src/lib/engine/document/entities/rs_dimension.cpp
774
+ librecad/src/lib/engine/document/entities/rs_dimension.h
775
+ librecad/src/lib/engine/document/entities/rs_dimlinear.cpp
776
+ librecad/src/lib/engine/document/entities/rs_dimlinear.h
777
+ librecad/src/lib/engine/document/entities/rs_dimradial.cpp
778
+ librecad/src/lib/engine/document/entities/rs_dimradial.h
779
+ librecad/src/lib/engine/document/entities/rs_ellipse.cpp
780
+ librecad/src/lib/engine/document/entities/rs_ellipse.h
781
+ librecad/src/lib/engine/document/entities/rs_entity.cpp
782
+ librecad/src/lib/engine/document/entities/rs_entity.h
783
+ librecad/src/lib/engine/document/entities/rs_hatch.cpp
784
+ librecad/src/lib/engine/document/entities/rs_hatch.h
785
+ librecad/src/lib/engine/document/entities/rs_image.cpp
786
+ librecad/src/lib/engine/document/entities/rs_image.h
787
+ librecad/src/lib/engine/document/entities/rs_insert.cpp
788
+ librecad/src/lib/engine/document/entities/rs_insert.h
789
+ librecad/src/lib/engine/document/entities/rs_leader.cpp
790
+ librecad/src/lib/engine/document/entities/rs_leader.h
791
+ librecad/src/lib/engine/document/entities/rs_line.cpp
792
+ librecad/src/lib/engine/document/entities/rs_line.h
793
+ librecad/src/lib/engine/document/entities/rs_mtext.cpp
794
+ librecad/src/lib/engine/document/entities/rs_mtext.h
795
+ librecad/src/lib/engine/document/entities/rs_point.cpp
796
+ librecad/src/lib/engine/document/entities/rs_point.h
797
+ librecad/src/lib/engine/document/entities/rs_polyline.cpp
798
+ librecad/src/lib/engine/document/entities/rs_polyline.h
799
+ librecad/src/lib/engine/document/entities/rs_solid.cpp
800
+ librecad/src/lib/engine/document/entities/rs_solid.h
801
+ librecad/src/lib/engine/document/entities/rs_spline.cpp
802
+ librecad/src/lib/engine/document/entities/rs_spline.h
803
+ librecad/src/lib/engine/document/entities/rs_text.cpp
804
+ librecad/src/lib/engine/document/entities/rs_text.h
805
+ librecad/src/lib/engine/document/entities/support/lc_arrow_box.cpp
806
+ librecad/src/lib/engine/document/entities/support/lc_arrow_box.h
807
+ librecad/src/lib/engine/document/entities/support/lc_arrow_circle.cpp
808
+ librecad/src/lib/engine/document/entities/support/lc_arrow_circle.h
809
+ librecad/src/lib/engine/document/entities/support/lc_arrow_datum.cpp
810
+ librecad/src/lib/engine/document/entities/support/lc_arrow_datum.h
811
+ librecad/src/lib/engine/document/entities/support/lc_arrow_dot.cpp
812
+ librecad/src/lib/engine/document/entities/support/lc_arrow_dot.h
813
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed.cpp
814
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed.h
815
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed2.cpp
816
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed2.h
817
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed_blank.cpp
818
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed_blank.h
819
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headopen.cpp
820
+ librecad/src/lib/engine/document/entities/support/lc_arrow_headopen.h
821
+ librecad/src/lib/engine/document/entities/support/lc_arrow_integral.cpp
822
+ librecad/src/lib/engine/document/entities/support/lc_arrow_integral.h
823
+ librecad/src/lib/engine/document/entities/support/lc_arrow_none.cpp
824
+ librecad/src/lib/engine/document/entities/support/lc_arrow_none.h
825
+ librecad/src/lib/engine/document/entities/support/lc_arrow_tick.cpp
826
+ librecad/src/lib/engine/document/entities/support/lc_arrow_tick.h
827
+ librecad/src/lib/engine/document/entities/support/lc_dimarrowblock.cpp
828
+ librecad/src/lib/engine/document/entities/support/lc_dimarrowblock.h
829
+ librecad/src/lib/engine/document/entities/support/lc_dimarrowblockpoly.cpp
830
+ librecad/src/lib/engine/document/entities/support/lc_dimarrowblockpoly.h
831
+ librecad/src/lib/engine/document/fonts/rs_font.cpp
832
+ librecad/src/lib/engine/document/fonts/rs_font.h
833
+ librecad/src/lib/engine/document/fonts/rs_fontchar.h
834
+ librecad/src/lib/engine/document/fonts/rs_fontlist.cpp
835
+ librecad/src/lib/engine/document/fonts/rs_fontlist.h
836
+ librecad/src/lib/engine/document/layers/rs_layer.cpp
837
+ librecad/src/lib/engine/document/layers/rs_layer.h
838
+ librecad/src/lib/engine/document/layers/rs_layerlist.cpp
839
+ librecad/src/lib/engine/document/layers/rs_layerlist.h
840
+ librecad/src/lib/engine/document/layers/rs_layerlistlistener.h
841
+ librecad/src/lib/engine/document/lc_graphicvariables.cpp
842
+ librecad/src/lib/engine/document/lc_graphicvariables.h
843
+ librecad/src/lib/engine/document/patterns/rs_pattern.cpp
844
+ librecad/src/lib/engine/document/patterns/rs_pattern.h
845
+ librecad/src/lib/engine/document/patterns/rs_patternlist.cpp
846
+ librecad/src/lib/engine/document/patterns/rs_patternlist.h
847
+ librecad/src/lib/engine/document/rs_document.cpp
848
+ librecad/src/lib/engine/document/rs_document.h
849
+ librecad/src/lib/engine/document/rs_graphic.cpp
850
+ librecad/src/lib/engine/document/rs_graphic.h
851
+ librecad/src/lib/engine/document/textstyles/lc_textstyle.cpp
852
+ librecad/src/lib/engine/document/textstyles/lc_textstyle.h
853
+ librecad/src/lib/engine/document/textstyles/lc_textstylelist.cpp
854
+ librecad/src/lib/engine/document/textstyles/lc_textstylelist.h
855
+ librecad/src/lib/engine/document/ucs/lc_ucs.cpp
856
+ librecad/src/lib/engine/document/ucs/lc_ucs.h
857
+ librecad/src/lib/engine/document/ucs/lc_ucslist.cpp
858
+ librecad/src/lib/engine/document/ucs/lc_ucslist.h
859
+ librecad/src/lib/engine/document/variables/rs_variable.h
860
+ librecad/src/lib/engine/document/variables/rs_variabledict.cpp
861
+ librecad/src/lib/engine/document/variables/rs_variabledict.h
862
+ librecad/src/lib/engine/document/views/lc_view.cpp
863
+ librecad/src/lib/engine/document/views/lc_view.h
864
+ librecad/src/lib/engine/document/views/lc_viewslist.cpp
865
+ librecad/src/lib/engine/document/views/lc_viewslist.h
866
+ librecad/src/lib/engine/lc_defaults.h
867
+ librecad/src/lib/engine/lc_drawable.h
868
+ librecad/src/lib/engine/overlays/angles_base/lc_overlayanglesbasemark.cpp
869
+ librecad/src/lib/engine/overlays/angles_base/lc_overlayanglesbasemark.h
870
+ librecad/src/lib/engine/overlays/crosshair/lc_crosshair.cpp
871
+ librecad/src/lib/engine/overlays/highlight/lc_highlight.cpp
872
+ librecad/src/lib/engine/overlays/info_cursor/lc_cursoroverlayinfo.cpp
873
+ librecad/src/lib/engine/overlays/info_cursor/lc_cursoroverlayinfo.h
874
+ librecad/src/lib/engine/overlays/lc_overlayentitiescontainer.cpp
875
+ librecad/src/lib/engine/overlays/lc_overlayentitiescontainer.h
876
+ librecad/src/lib/engine/overlays/lc_overlayentity.cpp
877
+ librecad/src/lib/engine/overlays/lc_overlayentity.h
878
+ librecad/src/lib/engine/overlays/lc_overlaysmanager.cpp
879
+ librecad/src/lib/engine/overlays/lc_overlaysmanager.h
880
+ librecad/src/lib/engine/overlays/overlay_box/rs_overlaybox.cpp
881
+ librecad/src/lib/engine/overlays/overlay_box/rs_overlaybox.h
882
+ librecad/src/lib/engine/overlays/preview/rs_preview.cpp
883
+ librecad/src/lib/engine/overlays/preview/rs_preview.h
884
+ librecad/src/lib/engine/overlays/references/lc_refarc.cpp
885
+ librecad/src/lib/engine/overlays/references/lc_refarc.h
886
+ librecad/src/lib/engine/overlays/references/lc_refcircle.cpp
887
+ librecad/src/lib/engine/overlays/references/lc_refcircle.h
888
+ librecad/src/lib/engine/overlays/references/lc_refconstructionline.cpp
889
+ librecad/src/lib/engine/overlays/references/lc_refconstructionline.h
890
+ librecad/src/lib/engine/overlays/references/lc_refellipse.cpp
891
+ librecad/src/lib/engine/overlays/references/lc_refline.cpp
892
+ librecad/src/lib/engine/overlays/references/lc_refline.h
893
+ librecad/src/lib/engine/overlays/references/lc_refpoint.cpp
894
+ librecad/src/lib/engine/overlays/references/lc_refpoint.h
895
+ librecad/src/lib/engine/overlays/rs_overlayline.cpp
896
+ librecad/src/lib/engine/overlays/rs_overlayline.h
897
+ librecad/src/lib/engine/overlays/ucs_mark/lc_overlayrelativezero.cpp
898
+ librecad/src/lib/engine/overlays/ucs_mark/lc_overlayrelativezero.h
899
+ librecad/src/lib/engine/overlays/ucs_mark/lc_overlayucszero.cpp
900
+ librecad/src/lib/engine/overlays/ucs_mark/lc_overlayucszero.h
901
+ librecad/src/lib/engine/overlays/ucs_mark/lc_ucs_mark.cpp
902
+ librecad/src/lib/engine/overlays/ucs_mark/lc_ucs_mark.h
903
+ librecad/src/lib/engine/rs.cpp
904
+ librecad/src/lib/engine/rs.h
905
+ librecad/src/lib/engine/rs_color.cpp
906
+ librecad/src/lib/engine/rs_color.h
907
+ librecad/src/lib/engine/rs_flags.cpp
908
+ librecad/src/lib/engine/rs_flags.h
909
+ librecad/src/lib/engine/rs_pen.cpp
910
+ librecad/src/lib/engine/rs_pen.h
911
+ librecad/src/lib/engine/rs_system.cpp
912
+ librecad/src/lib/engine/rs_system.h
913
+ librecad/src/lib/engine/rs_units.cpp
914
+ librecad/src/lib/engine/rs_units.h
915
+ librecad/src/lib/engine/rs_vector.cpp
916
+ librecad/src/lib/engine/rs_vector.h
917
+ librecad/src/lib/engine/settings/lc_settingsexporter.cpp
918
+ librecad/src/lib/engine/settings/lc_settingsexporter.h
919
+ librecad/src/lib/engine/settings/rs_settings.cpp
920
+ librecad/src/lib/engine/settings/rs_settings.h
921
+ librecad/src/lib/engine/undo/lc_undoablerelzero.cpp
922
+ librecad/src/lib/engine/undo/lc_undoablerelzero.h
923
+ librecad/src/lib/engine/undo/lc_undosection.cpp
924
+ librecad/src/lib/engine/undo/lc_undosection.h
925
+ librecad/src/lib/engine/undo/rs_undo.cpp
926
+ librecad/src/lib/engine/undo/rs_undo.h
927
+ librecad/src/lib/engine/undo/rs_undoable.cpp
928
+ librecad/src/lib/engine/undo/rs_undoable.h
929
+ librecad/src/lib/engine/undo/rs_undocycle.cpp
930
+ librecad/src/lib/engine/undo/rs_undocycle.h
931
+ librecad/src/lib/engine/utils/lc_rectregion.cpp
932
+ librecad/src/lib/engine/utils/lc_rectregion.h
933
+ librecad/src/lib/engine/utils/lc_rtree.cpp
934
+ librecad/src/lib/engine/utils/lc_rtree.h
935
+ librecad/src/lib/engine/utils/rs_utility.cpp
936
+ librecad/src/lib/engine/utils/rs_utility.h
937
+ librecad/src/lib/fileio/lc_filenameselectionservice.cpp
938
+ librecad/src/lib/fileio/lc_filenameselectionservice.h
939
+ librecad/src/lib/fileio/rs_fileio.cpp
940
+ librecad/src/lib/fileio/rs_fileio.h
941
+ librecad/src/lib/filters/lc_hyperbolaspline.cpp
942
+ librecad/src/lib/filters/lc_hyperbolaspline.h
943
+ librecad/src/lib/filters/rs_filtercxf.cpp
944
+ librecad/src/lib/filters/rs_filterdxf1.cpp
945
+ librecad/src/lib/filters/rs_filterdxf1.h
946
+ librecad/src/lib/filters/rs_filterdxfrw.cpp
947
+ librecad/src/lib/filters/rs_filterdxfrw.h
948
+ librecad/src/lib/filters/rs_filterinterface.h
949
+ librecad/src/lib/filters/rs_filterjww.cpp
950
+ librecad/src/lib/filters/rs_filterjww.h
951
+ librecad/src/lib/filters/rs_filterlff.cpp
952
+ librecad/src/lib/filters/rs_filterlff.h
953
+ librecad/src/lib/generators/image/lc_imageexporter.cpp
954
+ librecad/src/lib/generators/image/lc_imageexporter.h
955
+ librecad/src/lib/generators/layers/lc_layersexporter.cpp
956
+ librecad/src/lib/generators/layers/lc_layersexporter.h
957
+ librecad/src/lib/generators/makercamsvg/lc_makercamsvg.cpp
958
+ librecad/src/lib/generators/makercamsvg/lc_makercamsvg.h
959
+ librecad/src/lib/generators/makercamsvg/lc_xmlwriterinterface.h
960
+ librecad/src/lib/generators/makercamsvg/lc_xmlwriterqxmlstreamwriter.cpp
961
+ librecad/src/lib/generators/makercamsvg/lc_xmlwriterqxmlstreamwriter.h
962
+ librecad/src/lib/gui/grid/lc_gridsystem.cpp
963
+ librecad/src/lib/gui/grid/lc_gridsystem.h
964
+ librecad/src/lib/gui/grid/lc_isometricgrid.cpp
965
+ librecad/src/lib/gui/grid/lc_lattice.cpp
966
+ librecad/src/lib/gui/grid/lc_lattice.h
967
+ librecad/src/lib/gui/grid/lc_orthogonalgrid.cpp
968
+ librecad/src/lib/gui/grid/lc_orthogonalgrid.h
969
+ librecad/src/lib/gui/grid/rs_grid.cpp
970
+ librecad/src/lib/gui/grid/rs_grid.h
971
+ librecad/src/lib/gui/lc_coordinates_mapper.cpp
972
+ librecad/src/lib/gui/lc_coordinates_mapper.h
973
+ librecad/src/lib/gui/lc_coordinates_parser.cpp
974
+ librecad/src/lib/gui/lc_coordinates_parser.h
975
+ librecad/src/lib/gui/lc_eventhandler.cpp
976
+ librecad/src/lib/gui/lc_eventhandler.h
977
+ librecad/src/lib/gui/lc_graphicviewport.cpp
978
+ librecad/src/lib/gui/lc_graphicviewport.h
979
+ librecad/src/lib/gui/lc_graphicviewportlistener.cpp
980
+ librecad/src/lib/gui/lc_graphicviewportlistener.h
981
+ librecad/src/lib/gui/lc_latecompletionrequestor.cpp
982
+ librecad/src/lib/gui/lc_latecompletionrequestor.h
983
+ librecad/src/lib/gui/render/headless/lc_printviewportrenderer.cpp
984
+ librecad/src/lib/gui/render/headless/lc_printviewportrenderer.h
985
+ librecad/src/lib/gui/render/lc_graphicviewportrenderer.cpp
986
+ librecad/src/lib/gui/render/lc_graphicviewportrenderer.h
987
+ librecad/src/lib/gui/render/rs_painter.cpp
988
+ librecad/src/lib/gui/render/rs_painter.h
989
+ librecad/src/lib/gui/render/widget/lc_graphicviewrenderer.cpp
990
+ librecad/src/lib/gui/render/widget/lc_graphicviewrenderer.h
991
+ librecad/src/lib/gui/render/widget/lc_printpreviewviewrenderer.cpp
992
+ librecad/src/lib/gui/render/widget/lc_printpreviewviewrenderer.h
993
+ librecad/src/lib/gui/render/widget/lc_widgetviewportrenderer.cpp
994
+ librecad/src/lib/gui/render/widget/lc_widgetviewportrenderer.h
995
+ librecad/src/lib/gui/rs_commandevent.h
996
+ librecad/src/lib/gui/rs_coordinateevent.h
997
+ librecad/src/lib/gui/rs_dialogfactory.cpp
998
+ librecad/src/lib/gui/rs_dialogfactory.h
999
+ librecad/src/lib/gui/rs_dialogfactoryinterface.h
1000
+ librecad/src/lib/gui/rs_graphicview.cpp
1001
+ librecad/src/lib/gui/rs_graphicview.h
1002
+ librecad/src/lib/gui/rs_linetypepattern.cpp
1003
+ librecad/src/lib/gui/rs_linetypepattern.h
1004
+ librecad/src/lib/gui/rs_mainwindowinterface.h
1005
+ librecad/src/lib/information/rs_infoarea.cpp
1006
+ librecad/src/lib/information/rs_infoarea.h
1007
+ librecad/src/lib/information/rs_information.cpp
1008
+ librecad/src/lib/information/rs_information.h
1009
+ librecad/src/lib/information/rs_locale.cpp
1010
+ librecad/src/lib/information/rs_locale.h
1011
+ librecad/src/lib/math/lc_convert.cpp
1012
+ librecad/src/lib/math/lc_convert.h
1013
+ librecad/src/lib/math/lc_linemath.cpp
1014
+ librecad/src/lib/math/lc_linemath.h
1015
+ librecad/src/lib/math/lc_quadratic.cpp
1016
+ librecad/src/lib/math/lc_quadratic.h
1017
+ librecad/src/lib/math/rs_math.cpp
1018
+ librecad/src/lib/math/rs_math.h
1019
+ librecad/src/lib/modification/lc_align.cpp
1020
+ librecad/src/lib/modification/lc_align.h
1021
+ librecad/src/lib/modification/lc_division.cpp
1022
+ librecad/src/lib/modification/lc_division.h
1023
+ librecad/src/lib/modification/rs_modification.cpp
1024
+ librecad/src/lib/modification/rs_modification.h
1025
+ librecad/src/lib/modification/rs_selection.cpp
1026
+ librecad/src/lib/modification/rs_selection.h
1027
+ librecad/src/lib/printing/lc_printing.cpp
1028
+ librecad/src/lib/printing/lc_printing.h
1029
+ librecad/src/lib/scripting/rs_python.cpp
1030
+ librecad/src/lib/scripting/rs_python.h
1031
+ librecad/src/lib/scripting/rs_python_wrappers.cpp
1032
+ librecad/src/lib/scripting/rs_python_wrappers.h
1033
+ librecad/src/lib/scripting/rs_script.cpp
1034
+ librecad/src/lib/scripting/rs_script.h
1035
+ librecad/src/lib/scripting/rs_scriptlist.cpp
1036
+ librecad/src/lib/scripting/rs_scriptlist.h
1037
+ librecad/src/lib/scripting/rs_simplepython.cpp
1038
+ librecad/src/lib/scripting/rs_simplepython.h
1039
+ librecad/src/main/doc_plugin_interface.cpp
1040
+ librecad/src/main/doc_plugin_interface.h
1041
+ librecad/src/main/lc_application.cpp
1042
+ librecad/src/main/lc_application.h
1043
+ librecad/src/main/qc_dialogfactory.cpp
1044
+ librecad/src/main/qc_dialogfactory.h
1045
+ librecad/src/plugins/document_interface.h
1046
+ librecad/src/plugins/intern/qc_actiongetent.cpp
1047
+ librecad/src/plugins/intern/qc_actiongetent.h
1048
+ librecad/src/plugins/intern/qc_actiongetpoint.cpp
1049
+ librecad/src/plugins/intern/qc_actiongetpoint.h
1050
+ librecad/src/plugins/intern/qc_actiongetselect.cpp
1051
+ librecad/src/plugins/intern/qc_actiongetselect.h
1052
+ librecad/src/plugins/lc_plugininvoker.cpp
1053
+ librecad/src/plugins/lc_plugininvoker.h
1054
+ librecad/src/plugins/qc_plugininterface.h
1055
+ librecad/src/ui/action_options/circle/lc_circlebyarcoptions.cpp
1056
+ librecad/src/ui/action_options/circle/qg_circleoptions.cpp
1057
+ librecad/src/ui/action_options/circle/qg_circleoptions.h
1058
+ librecad/src/ui/action_options/circle/qg_circletan2options.cpp
1059
+ librecad/src/ui/action_options/circle/qg_circletan2options.h
1060
+ librecad/src/ui/action_options/curve/lc_actiondrawarc2poptions.cpp
1061
+ librecad/src/ui/action_options/curve/lc_actiondrawarc2poptions.h
1062
+ librecad/src/ui/action_options/curve/lc_ellipsearcoptions.cpp
1063
+ librecad/src/ui/action_options/curve/qg_arcoptions.cpp
1064
+ librecad/src/ui/action_options/curve/qg_arcoptions.h
1065
+ librecad/src/ui/action_options/curve/qg_arctangentialoptions.cpp
1066
+ librecad/src/ui/action_options/curve/qg_arctangentialoptions.h
1067
+ librecad/src/ui/action_options/dimensions/qg_dimoptions.cpp
1068
+ librecad/src/ui/action_options/dimensions/qg_dimoptions.h
1069
+ librecad/src/ui/action_options/edit/lc_pastetransformoptions.cpp
1070
+ librecad/src/ui/action_options/ellipse/lc_ellipse1pointoptions.cpp
1071
+ librecad/src/ui/action_options/ellipse/lc_ellipse1pointoptions.h
1072
+ librecad/src/ui/action_options/image/qg_imageoptions.cpp
1073
+ librecad/src/ui/action_options/image/qg_imageoptions.h
1074
+ librecad/src/ui/action_options/info/lc_infodist2options.cpp
1075
+ librecad/src/ui/action_options/insert/qg_insertoptions.cpp
1076
+ librecad/src/ui/action_options/insert/qg_insertoptions.h
1077
+ librecad/src/ui/action_options/insert/qg_libraryinsertoptions.cpp
1078
+ librecad/src/ui/action_options/insert/qg_libraryinsertoptions.h
1079
+ librecad/src/ui/action_options/lc_actionoptionsmanager.cpp
1080
+ librecad/src/ui/action_options/lc_actionoptionsmanager.h
1081
+ librecad/src/ui/action_options/lc_actionoptionswidget.cpp
1082
+ librecad/src/ui/action_options/lc_actionoptionswidget.h
1083
+ librecad/src/ui/action_options/lc_actionoptionswidgetbase.cpp
1084
+ librecad/src/ui/action_options/lc_actionoptionswidgetbase.h
1085
+ librecad/src/ui/action_options/line/lc_lineanglereloptions.cpp
1086
+ librecad/src/ui/action_options/line/lc_linefrompointtolineoptions.cpp
1087
+ librecad/src/ui/action_options/line/lc_lineoptions.cpp
1088
+ librecad/src/ui/action_options/line/lc_slicedivideoptions.cpp
1089
+ librecad/src/ui/action_options/line/qg_lineangleoptions.cpp
1090
+ librecad/src/ui/action_options/line/qg_lineangleoptions.h
1091
+ librecad/src/ui/action_options/line/qg_linebisectoroptions.cpp
1092
+ librecad/src/ui/action_options/line/qg_linebisectoroptions.h
1093
+ librecad/src/ui/action_options/line/qg_lineoptions.cpp
1094
+ librecad/src/ui/action_options/line/qg_lineoptions.h
1095
+ librecad/src/ui/action_options/line/qg_lineparalleloptions.cpp
1096
+ librecad/src/ui/action_options/line/qg_lineparalleloptions.h
1097
+ librecad/src/ui/action_options/line/qg_lineparallelthroughoptions.cpp
1098
+ librecad/src/ui/action_options/line/qg_lineparallelthroughoptions.h
1099
+ librecad/src/ui/action_options/line/qg_linerelangleoptions.cpp
1100
+ librecad/src/ui/action_options/line/qg_linerelangleoptions.h
1101
+ librecad/src/ui/action_options/misc/lc_crossoptions.cpp
1102
+ librecad/src/ui/action_options/misc/lc_drawboundingboxoptions.cpp
1103
+ librecad/src/ui/action_options/misc/lc_drawboundingboxoptions.h
1104
+ librecad/src/ui/action_options/misc/lc_midlineoptions.cpp
1105
+ librecad/src/ui/action_options/misc/lc_midlineoptions.h
1106
+ librecad/src/ui/action_options/modify/lc_duplicateoptions.cpp
1107
+ librecad/src/ui/action_options/modify/lc_linejoinoptions.cpp
1108
+ librecad/src/ui/action_options/modify/lc_modifyalignoptions.cpp
1109
+ librecad/src/ui/action_options/modify/lc_modifyalignoptions.h
1110
+ librecad/src/ui/action_options/modify/lc_modifyalignrefoptions.cpp
1111
+ librecad/src/ui/action_options/modify/lc_modifyalignrefoptions.h
1112
+ librecad/src/ui/action_options/modify/lc_modifybreakdivideoptions.cpp
1113
+ librecad/src/ui/action_options/modify/lc_modifybreakdivideoptions.h
1114
+ librecad/src/ui/action_options/modify/lc_modifygapoptions.cpp
1115
+ librecad/src/ui/action_options/modify/lc_modifygapoptions.h
1116
+ librecad/src/ui/action_options/modify/lc_modifymirroroptions.cpp
1117
+ librecad/src/ui/action_options/modify/lc_modifyrotateoptions.cpp
1118
+ librecad/src/ui/action_options/modify/lc_modifyscaleoptions.cpp
1119
+ librecad/src/ui/action_options/modify/lc_modifyscaleoptions.h
1120
+ librecad/src/ui/action_options/modify/lc_modifystretchoptions.cpp
1121
+ librecad/src/ui/action_options/modify/lc_modifystretchoptions.h
1122
+ librecad/src/ui/action_options/modify/lc_moveoptions.cpp
1123
+ librecad/src/ui/action_options/modify/lc_moveoptions.h
1124
+ librecad/src/ui/action_options/modify/lc_rotate2options.cpp
1125
+ librecad/src/ui/action_options/modify/lc_rotate2options.h
1126
+ librecad/src/ui/action_options/modify/qg_beveloptions.cpp
1127
+ librecad/src/ui/action_options/modify/qg_beveloptions.h
1128
+ librecad/src/ui/action_options/modify/qg_modifyoffsetoptions.cpp
1129
+ librecad/src/ui/action_options/modify/qg_modifyoffsetoptions.h
1130
+ librecad/src/ui/action_options/modify/qg_moverotateoptions.cpp
1131
+ librecad/src/ui/action_options/modify/qg_moverotateoptions.h
1132
+ librecad/src/ui/action_options/modify/qg_roundoptions.cpp
1133
+ librecad/src/ui/action_options/modify/qg_roundoptions.h
1134
+ librecad/src/ui/action_options/modify/qg_trimamountoptions.cpp
1135
+ librecad/src/ui/action_options/modify/qg_trimamountoptions.h
1136
+ librecad/src/ui/action_options/other/lc_ucssetoptions.cpp
1137
+ librecad/src/ui/action_options/other/lc_ucssetoptions.h
1138
+ librecad/src/ui/action_options/point/lc_linepointsoptions.cpp
1139
+ librecad/src/ui/action_options/point/lc_linepointsoptions.h
1140
+ librecad/src/ui/action_options/point/lc_pastetopointsoptions.cpp
1141
+ librecad/src/ui/action_options/point/lc_pastetopointsoptions.h
1142
+ librecad/src/ui/action_options/point/lc_pointslatticeoptions.cpp
1143
+ librecad/src/ui/action_options/point/lc_pointslatticeoptions.h
1144
+ librecad/src/ui/action_options/polygon/lc_staroptions.cpp
1145
+ librecad/src/ui/action_options/polygon/qg_linepolygonoptions.cpp
1146
+ librecad/src/ui/action_options/polygon/qg_linepolygonoptions.h
1147
+ librecad/src/ui/action_options/polyline/qg_polylineequidistantoptions.cpp
1148
+ librecad/src/ui/action_options/polyline/qg_polylineequidistantoptions.h
1149
+ librecad/src/ui/action_options/polyline/qg_polylineoptions.cpp
1150
+ librecad/src/ui/action_options/polyline/qg_polylineoptions.h
1151
+ librecad/src/ui/action_options/print_preview/qg_printpreviewoptions.cpp
1152
+ librecad/src/ui/action_options/print_preview/qg_printpreviewoptions.h
1153
+ librecad/src/ui/action_options/rect/lc_rectangle1pointoptions.cpp
1154
+ librecad/src/ui/action_options/rect/lc_rectangle2pointsoptions.cpp
1155
+ librecad/src/ui/action_options/rect/lc_rectangle2pointsoptions.h
1156
+ librecad/src/ui/action_options/rect/lc_rectangle3pointsoptions.cpp
1157
+ librecad/src/ui/action_options/selection/lc_selectwindowoptions.cpp
1158
+ librecad/src/ui/action_options/selection/lc_selectwindowoptions.h
1159
+ librecad/src/ui/action_options/snap/qg_snapdistoptions.cpp
1160
+ librecad/src/ui/action_options/snap/qg_snapdistoptions.h
1161
+ librecad/src/ui/action_options/snap/qg_snapmiddleoptions.cpp
1162
+ librecad/src/ui/action_options/snap/qg_snapmiddleoptions.h
1163
+ librecad/src/ui/action_options/spline/lc_splineexplodeoptions.cpp
1164
+ librecad/src/ui/action_options/spline/lc_splineexplodeoptions.h
1165
+ librecad/src/ui/action_options/spline/lc_splinefrompolylineoptions.cpp
1166
+ librecad/src/ui/action_options/spline/lc_splinefrompolylineoptions.h
1167
+ librecad/src/ui/action_options/spline/qg_splineoptions.cpp
1168
+ librecad/src/ui/action_options/spline/qg_splineoptions.h
1169
+ librecad/src/ui/action_options/text/qg_mtextoptions.cpp
1170
+ librecad/src/ui/action_options/text/qg_mtextoptions.h
1171
+ librecad/src/ui/action_options/text/qg_textoptions.cpp
1172
+ librecad/src/ui/action_options/text/qg_textoptions.h
1173
+ librecad/src/ui/actions/lc_actionfactorybase.cpp
1174
+ librecad/src/ui/actions/lc_actionfactorybase.h
1175
+ librecad/src/ui/actions/lc_actiongroup.cpp
1176
+ librecad/src/ui/actions/lc_actiongroup.h
1177
+ librecad/src/ui/actions/lc_actiongroupmanager.cpp
1178
+ librecad/src/ui/actions/lc_actiongroupmanager.h
1179
+ librecad/src/ui/actions/lc_shortcutinfo.cpp
1180
+ librecad/src/ui/actions/lc_shortcutinfo.h
1181
+ librecad/src/ui/actions/lc_shortcuts_manager.cpp
1182
+ librecad/src/ui/actions/lc_shortcuts_manager.h
1183
+ librecad/src/ui/actions/lc_shortcutsstorage.cpp
1184
+ librecad/src/ui/actions/lc_shortcutsstorage.h
1185
+ librecad/src/ui/components/comboboxes/comboboxoption.cpp
1186
+ librecad/src/ui/components/comboboxes/comboboxoption.h
1187
+ librecad/src/ui/components/comboboxes/qg_colorbox.cpp
1188
+ librecad/src/ui/components/comboboxes/qg_colorbox.h
1189
+ librecad/src/ui/components/comboboxes/qg_fontbox.cpp
1190
+ librecad/src/ui/components/comboboxes/qg_fontbox.h
1191
+ librecad/src/ui/components/comboboxes/qg_layerbox.cpp
1192
+ librecad/src/ui/components/comboboxes/qg_layerbox.h
1193
+ librecad/src/ui/components/comboboxes/qg_linetypebox.cpp
1194
+ librecad/src/ui/components/comboboxes/qg_linetypebox.h
1195
+ librecad/src/ui/components/comboboxes/qg_patternbox.cpp
1196
+ librecad/src/ui/components/comboboxes/qg_patternbox.h
1197
+ librecad/src/ui/components/comboboxes/qg_widthbox.cpp
1198
+ librecad/src/ui/components/comboboxes/qg_widthbox.h
1199
+ librecad/src/ui/components/containers/lc_optionswidgetsholder.cpp
1200
+ librecad/src/ui/components/containers/lc_optionswidgetsholder.h
1201
+ librecad/src/ui/components/containers/lc_snapoptionswidgetsholder.cpp
1202
+ librecad/src/ui/components/containers/lc_snapoptionswidgetsholder.h
1203
+ librecad/src/ui/components/creators/actionlist.cpp
1204
+ librecad/src/ui/components/creators/actionlist.h
1205
+ librecad/src/ui/components/creators/lc_creatorinvoker.cpp
1206
+ librecad/src/ui/components/creators/lc_creatorinvoker.h
1207
+ librecad/src/ui/components/creators/lc_menuactivator.cpp
1208
+ librecad/src/ui/components/creators/lc_menuactivator.h
1209
+ librecad/src/ui/components/layouts/lc_flexlayout.cpp
1210
+ librecad/src/ui/components/layouts/lc_flexlayout.h
1211
+ librecad/src/ui/components/lc_plaintextedit.h
1212
+ librecad/src/ui/components/pen/qg_widgetpen.cpp
1213
+ librecad/src/ui/components/pen/qg_widgetpen.h
1214
+ librecad/src/ui/components/qg_scrollbar.h
1215
+ librecad/src/ui/components/status_bar/lc_anglesbasiswidget.cpp
1216
+ librecad/src/ui/components/status_bar/lc_anglesbasiswidget.h
1217
+ librecad/src/ui/components/status_bar/lc_qtstatusbarmanager.cpp
1218
+ librecad/src/ui/components/status_bar/lc_qtstatusbarmanager.h
1219
+ librecad/src/ui/components/status_bar/lc_relzerocoordinateswidget.cpp
1220
+ librecad/src/ui/components/status_bar/lc_relzerocoordinateswidget.h
1221
+ librecad/src/ui/components/status_bar/lc_ucsstatewidget.cpp
1222
+ librecad/src/ui/components/status_bar/lc_ucsstatewidget.h
1223
+ librecad/src/ui/components/status_bar/qg_activelayername.cpp
1224
+ librecad/src/ui/components/status_bar/qg_activelayername.h
1225
+ librecad/src/ui/components/status_bar/qg_coordinatewidget.cpp
1226
+ librecad/src/ui/components/status_bar/qg_coordinatewidget.h
1227
+ librecad/src/ui/components/status_bar/qg_mousewidget.cpp
1228
+ librecad/src/ui/components/status_bar/qg_mousewidget.h
1229
+ librecad/src/ui/components/status_bar/qg_selectionwidget.cpp
1230
+ librecad/src/ui/components/status_bar/qg_selectionwidget.h
1231
+ librecad/src/ui/components/status_bar/twostackedlabels.cpp
1232
+ librecad/src/ui/components/status_bar/twostackedlabels.h
1233
+ librecad/src/ui/components/textfileviewer.cpp
1234
+ librecad/src/ui/components/textfileviewer.h
1235
+ librecad/src/ui/components/toolbars/qg_pentoolbar.cpp
1236
+ librecad/src/ui/components/toolbars/qg_pentoolbar.h
1237
+ librecad/src/ui/components/toolbars/qg_snaptoolbar.cpp
1238
+ librecad/src/ui/components/toolbars/qg_snaptoolbar.h
1239
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmirror.cpp
1240
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmirror.h
1241
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmove.cpp
1242
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmove.h
1243
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmoverotate.cpp
1244
+ librecad/src/ui/dialogs/actions/modify/qg_dlgmoverotate.h
1245
+ librecad/src/ui/dialogs/actions/modify/qg_dlgrotate.cpp
1246
+ librecad/src/ui/dialogs/actions/modify/qg_dlgrotate.h
1247
+ librecad/src/ui/dialogs/actions/modify/qg_dlgrotate2.cpp
1248
+ librecad/src/ui/dialogs/actions/modify/qg_dlgrotate2.h
1249
+ librecad/src/ui/dialogs/actions/modify/qg_dlgscale.cpp
1250
+ librecad/src/ui/dialogs/actions/modify/qg_dlgscale.h
1251
+ librecad/src/ui/dialogs/actions/qg_layerdialog.cpp
1252
+ librecad/src/ui/dialogs/actions/qg_layerdialog.h
1253
+ librecad/src/ui/dialogs/creators/lc_dlgmenuassigner.cpp
1254
+ librecad/src/ui/dialogs/creators/lc_dlgmenuassigner.h
1255
+ librecad/src/ui/dialogs/creators/lc_dlgnewwidget.cpp
1256
+ librecad/src/ui/dialogs/creators/lc_dlgnewwidget.h
1257
+ librecad/src/ui/dialogs/creators/lc_dlgwidgetcreator.cpp
1258
+ librecad/src/ui/dialogs/creators/lc_dlgwidgetcreator.h
1259
+ librecad/src/ui/dialogs/entity/lc_arcpropertieseditingwidget.cpp
1260
+ librecad/src/ui/dialogs/entity/lc_arcpropertieseditingwidget.h
1261
+ librecad/src/ui/dialogs/entity/lc_circlepropertieseditingwidget.cpp
1262
+ librecad/src/ui/dialogs/entity/lc_circlepropertieseditingwidget.h
1263
+ librecad/src/ui/dialogs/entity/lc_dlgdimension.cpp
1264
+ librecad/src/ui/dialogs/entity/lc_dlgdimension.h
1265
+ librecad/src/ui/dialogs/entity/lc_dlgentityproperties.cpp
1266
+ librecad/src/ui/dialogs/entity/lc_dlgentityproperties.h
1267
+ librecad/src/ui/dialogs/entity/lc_dlgtolerance.cpp
1268
+ librecad/src/ui/dialogs/entity/lc_dlgtolerance.h
1269
+ librecad/src/ui/dialogs/entity/lc_ellipsepropertieseditingwidget.cpp
1270
+ librecad/src/ui/dialogs/entity/lc_ellipsepropertieseditingwidget.h
1271
+ librecad/src/ui/dialogs/entity/lc_entitypropertiesdlg.cpp
1272
+ librecad/src/ui/dialogs/entity/lc_entitypropertiesdlg.h
1273
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditor.cpp
1274
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditor.h
1275
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditorsupport.cpp
1276
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditorsupport.h
1277
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditorwidget.cpp
1278
+ librecad/src/ui/dialogs/entity/lc_entitypropertieseditorwidget.h
1279
+ librecad/src/ui/dialogs/entity/lc_hyperbolapropertieseditingwidget.h
1280
+ librecad/src/ui/dialogs/entity/lc_hyperbolapropertieseditingwidget.cpp
1281
+ librecad/src/ui/dialogs/entity/lc_imagepropertieseditingwidget.cpp
1282
+ librecad/src/ui/dialogs/entity/lc_imagepropertieseditingwidget.h
1283
+ librecad/src/ui/dialogs/entity/lc_insertpropertieseditingwidget.cpp
1284
+ librecad/src/ui/dialogs/entity/lc_insertpropertieseditingwidget.h
1285
+ librecad/src/ui/dialogs/entity/lc_linepropertieseditingwidget.cpp
1286
+ librecad/src/ui/dialogs/entity/lc_linepropertieseditingwidget.h
1287
+ librecad/src/ui/dialogs/entity/lc_parabolapropertieseditingwidget.cpp
1288
+ librecad/src/ui/dialogs/entity/lc_parabolapropertieseditingwidget.h
1289
+ librecad/src/ui/dialogs/entity/lc_pointpickbutton.cpp
1290
+ librecad/src/ui/dialogs/entity/lc_pointpickbutton.h
1291
+ librecad/src/ui/dialogs/entity/lc_pointpropertieseditingwidget.cpp
1292
+ librecad/src/ui/dialogs/entity/lc_pointpropertieseditingwidget.h
1293
+ librecad/src/ui/dialogs/entity/lc_polylinepropertieseditingwidget.cpp
1294
+ librecad/src/ui/dialogs/entity/lc_polylinepropertieseditingwidget.h
1295
+ librecad/src/ui/dialogs/entity/lc_splinepointspropertieseditingwidget.cpp
1296
+ librecad/src/ui/dialogs/entity/lc_splinepointspropertieseditingwidget.h
1297
+ librecad/src/ui/dialogs/entity/lc_splinepropertieseditingwidget.cpp
1298
+ librecad/src/ui/dialogs/entity/lc_splinepropertieseditingwidget.h
1299
+ librecad/src/ui/dialogs/entity/qg_blockdialog.cpp
1300
+ librecad/src/ui/dialogs/entity/qg_blockdialog.h
1301
+ librecad/src/ui/dialogs/entity/qg_dimensionlabeleditor.cpp
1302
+ librecad/src/ui/dialogs/entity/qg_dimensionlabeleditor.h
1303
+ librecad/src/ui/dialogs/entity/qg_dlgattributes.cpp
1304
+ librecad/src/ui/dialogs/entity/qg_dlgattributes.h
1305
+ librecad/src/ui/dialogs/entity/qg_dlghatch.cpp
1306
+ librecad/src/ui/dialogs/entity/qg_dlghatch.h
1307
+ librecad/src/ui/dialogs/entity/qg_dlgmtext.cpp
1308
+ librecad/src/ui/dialogs/entity/qg_dlgmtext.h
1309
+ librecad/src/ui/dialogs/entity/qg_dlgtext.cpp
1310
+ librecad/src/ui/dialogs/entity/qg_dlgtext.h
1311
+ librecad/src/ui/dialogs/file/export/image/lc_exporttoimageservice.cpp
1312
+ librecad/src/ui/dialogs/file/export/image/lc_exporttoimageservice.h
1313
+ librecad/src/ui/dialogs/file/export/image/qg_dlgimageoptions.cpp
1314
+ librecad/src/ui/dialogs/file/export/image/qg_dlgimageoptions.h
1315
+ librecad/src/ui/dialogs/file/export/layers/lc_exportlayersdialogservice.cpp
1316
+ librecad/src/ui/dialogs/file/export/layers/lc_exportlayersdialogservice.h
1317
+ librecad/src/ui/dialogs/file/export/layers/lc_filedialogservice.cpp
1318
+ librecad/src/ui/dialogs/file/export/layers/lc_filedialogservice.h
1319
+ librecad/src/ui/dialogs/file/export/layers/lc_layerexportoptions.cpp
1320
+ librecad/src/ui/dialogs/file/export/layers/lc_layerexportoptions.h
1321
+ librecad/src/ui/dialogs/file/export/makercam/qg_dlgoptionsmakercam.cpp
1322
+ librecad/src/ui/dialogs/file/export/makercam/qg_dlgoptionsmakercam.h
1323
+ librecad/src/ui/dialogs/file/qg_filedialog.cpp
1324
+ librecad/src/ui/dialogs/file/qg_filedialog.h
1325
+ librecad/src/ui/dialogs/lc_dialog.cpp
1326
+ librecad/src/ui/dialogs/lc_dialog.h
1327
+ librecad/src/ui/dialogs/lc_inputtextdialog.cpp
1328
+ librecad/src/ui/dialogs/lc_inputtextdialog.h
1329
+ librecad/src/ui/dialogs/main/lc_dlgabout.cpp
1330
+ librecad/src/ui/dialogs/main/lc_dlgnewversionavailable.cpp
1331
+ librecad/src/ui/dialogs/main/lc_dlgnewversionavailable.h
1332
+ librecad/src/ui/dialogs/main/qg_exitdialog.cpp
1333
+ librecad/src/ui/dialogs/main/qg_exitdialog.h
1334
+ librecad/src/ui/dialogs/qg_dialogfactory.cpp
1335
+ librecad/src/ui/dialogs/qg_dialogfactory.h
1336
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/lc_dlgdimstylemanager.cpp
1337
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/lc_dlgdimstylemanager.h
1338
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewgraphicview.cpp
1339
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewgraphicview.h
1340
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewpanel.cpp
1341
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewpanel.h
1342
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_tabproxywidget.cpp
1343
+ librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_tabproxywidget.h
1344
+ librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleitem.cpp
1345
+ librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleslistmodel.cpp
1346
+ librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleslistmodel.h
1347
+ librecad/src/ui/dialogs/settings/dimstyles/lc_dimstylestreemodel.cpp
1348
+ librecad/src/ui/dialogs/settings/dimstyles/lc_dimstylestreemodel.h
1349
+ librecad/src/ui/dialogs/settings/options_device/lc_deviceoptions.cpp
1350
+ librecad/src/ui/dialogs/settings/options_device/lc_deviceoptions.h
1351
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dimstylesexporter.cpp
1352
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dimstylesexporter.h
1353
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewcustomvariable.cpp
1354
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewcustomvariable.h
1355
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewdimstyle.cpp
1356
+ librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewdimstyle.h
1357
+ librecad/src/ui/dialogs/settings/options_drawing/lg_dimzerosbox.cpp
1358
+ librecad/src/ui/dialogs/settings/options_drawing/lg_dimzerosbox.h
1359
+ librecad/src/ui/dialogs/settings/options_drawing/qg_dlgoptionsdrawing.cpp
1360
+ librecad/src/ui/dialogs/settings/options_drawing/qg_dlgoptionsdrawing.h
1361
+ librecad/src/ui/dialogs/settings/options_general/qg_dlgoptionsgeneral.cpp
1362
+ librecad/src/ui/dialogs/settings/options_general/qg_dlgoptionsgeneral.h
1363
+ librecad/src/ui/dialogs/settings/options_widget/lc_dlgiconssetup.cpp
1364
+ librecad/src/ui/dialogs/settings/options_widget/lc_iconcolorsoptions.cpp
1365
+ librecad/src/ui/dialogs/settings/options_widget/lc_iconcolorsoptions.h
1366
+ librecad/src/ui/dialogs/settings/options_widget/lc_iconengineshared.cpp
1367
+ librecad/src/ui/dialogs/settings/options_widget/lc_widgetoptionsdialog.cpp
1368
+ librecad/src/ui/dialogs/settings/options_widget/lc_widgetoptionsdialog.h
1369
+ librecad/src/ui/dialogs/settings/shortcuts/lc_actionsshortcutsdialog.cpp
1370
+ librecad/src/ui/dialogs/settings/shortcuts/lc_actionsshortcutsdialog.h
1371
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutbutton.cpp
1372
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutbutton.h
1373
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreemodel.cpp
1374
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreemodel.h
1375
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreeview.cpp
1376
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreeview.h
1377
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcuttreeitem.cpp
1378
+ librecad/src/ui/dialogs/settings/shortcuts/lc_shortcuttreeitem.h
1379
+ librecad/src/ui/dock_widgets/block_widget/qg_blockwidget.cpp
1380
+ librecad/src/ui/dock_widgets/block_widget/qg_blockwidget.h
1381
+ librecad/src/ui/dock_widgets/cad/lc_caddockwidget.cpp
1382
+ librecad/src/ui/dock_widgets/cad/lc_caddockwidget.h
1383
+ librecad/src/ui/dock_widgets/command_line/qg_commandedit.cpp
1384
+ librecad/src/ui/dock_widgets/command_line/qg_commandedit.h
1385
+ librecad/src/ui/dock_widgets/command_line/qg_commandhistory.cpp
1386
+ librecad/src/ui/dock_widgets/command_line/qg_commandhistory.h
1387
+ librecad/src/ui/dock_widgets/command_line/qg_commandwidget.cpp
1388
+ librecad/src/ui/dock_widgets/command_line/qg_commandwidget.h
1389
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfobasedata.cpp
1390
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfoentitydata.cpp
1391
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfopointsdata.cpp
1392
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfopointsdata.h
1393
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidget.cpp
1394
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptions.cpp
1395
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptions.h
1396
+ librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptionsdialog.cpp
1397
+ librecad/src/ui/dock_widgets/layer_widget/qg_layerwidget.cpp
1398
+ librecad/src/ui/dock_widgets/layer_widget/qg_layerwidget.h
1399
+ librecad/src/ui/dock_widgets/layers_tree/lc_layerdialog_ex.cpp
1400
+ librecad/src/ui/dock_widgets/layers_tree/lc_layerdialog_ex.h
1401
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreeitem.cpp
1402
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreeitem.h
1403
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel.cpp
1404
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel.h
1405
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel_options.cpp
1406
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreeoptionsdialog.cpp
1407
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreeview.cpp
1408
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreeview.h
1409
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreewidget.cpp
1410
+ librecad/src/ui/dock_widgets/layers_tree/lc_layertreewidget.h
1411
+ librecad/src/ui/dock_widgets/lc_dockwidget.cpp
1412
+ librecad/src/ui/dock_widgets/lc_dockwidget.h
1413
+ librecad/src/ui/dock_widgets/lc_graphicviewawarewidget.cpp
1414
+ librecad/src/ui/dock_widgets/lc_graphicviewawarewidget.h
1415
+ librecad/src/ui/dock_widgets/library_widget/qg_librarywidget.cpp
1416
+ librecad/src/ui/dock_widgets/library_widget/qg_librarywidget.h
1417
+ librecad/src/ui/dock_widgets/pen_palette/lc_peninforegistry.cpp
1418
+ librecad/src/ui/dock_widgets/pen_palette/lc_peninforegistry.h
1419
+ librecad/src/ui/dock_widgets/pen_palette/lc_penitem.cpp
1420
+ librecad/src/ui/dock_widgets/pen_palette/lc_penitem.h
1421
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpalettedata.cpp
1422
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpalettedata.h
1423
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpalettemodel.cpp
1424
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpaletteoptions.cpp
1425
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpaletteoptionsdialog.cpp
1426
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpalettewidget.cpp
1427
+ librecad/src/ui/dock_widgets/pen_palette/lc_penpalettewidget.h
1428
+ librecad/src/ui/dock_widgets/pen_wizard/colorcombobox.cpp
1429
+ librecad/src/ui/dock_widgets/pen_wizard/colorcombobox.h
1430
+ librecad/src/ui/dock_widgets/pen_wizard/colorwizard.cpp
1431
+ librecad/src/ui/dock_widgets/pen_wizard/colorwizard.h
1432
+ librecad/src/ui/dock_widgets/pen_wizard/lc_penwizard.cpp
1433
+ librecad/src/ui/dock_widgets/pen_wizard/lc_penwizard.h
1434
+ librecad/src/ui/dock_widgets/ucs_list/lc_dlgucslistoptions.cpp
1435
+ librecad/src/ui/dock_widgets/ucs_list/lc_dlgucslistoptions.h
1436
+ librecad/src/ui/dock_widgets/ucs_list/lc_dlgucsproperties.cpp
1437
+ librecad/src/ui/dock_widgets/ucs_list/lc_dlgucsproperties.h
1438
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistbutton.cpp
1439
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistbutton.h
1440
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistmodel.cpp
1441
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistmodel.h
1442
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistoptions.cpp
1443
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistoptions.h
1444
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistwidget.cpp
1445
+ librecad/src/ui/dock_widgets/ucs_list/lc_ucslistwidget.h
1446
+ librecad/src/ui/dock_widgets/views_list/lc_dlgnamedviewslistoptions.cpp
1447
+ librecad/src/ui/dock_widgets/views_list/lc_dlgnamedviewslistoptions.h
1448
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewsbutton.cpp
1449
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewsbutton.h
1450
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewslistoptions.cpp
1451
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewslistwidget.cpp
1452
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewslistwidget.h
1453
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewsmodel.cpp
1454
+ librecad/src/ui/dock_widgets/views_list/lc_namedviewsmodel.h
1455
+ librecad/src/ui/dock_widgets/workspaces/lc_workspacelistbutton.cpp
1456
+ librecad/src/ui/dock_widgets/workspaces/lc_workspacelistbutton.h
1457
+ librecad/src/ui/lc_actionhandlerfactory.cpp
1458
+ librecad/src/ui/lc_actionhandlerfactory.h
1459
+ librecad/src/ui/lc_snapmanager.cpp
1460
+ librecad/src/ui/lc_snapmanager.h
1461
+ librecad/src/ui/lc_uiutils.cpp
1462
+ librecad/src/ui/lc_uiutils.h
1463
+ librecad/src/ui/main/fontviewer/lc_fontfileviewer.cpp
1464
+ librecad/src/ui/main/fontviewer/lc_fontfileviewer.h
1465
+ librecad/src/ui/main/init/lc_actionfactory.cpp
1466
+ librecad/src/ui/main/init/lc_actionfactory.h
1467
+ librecad/src/ui/main/init/lc_applicationwindowinitializer.cpp
1468
+ librecad/src/ui/main/init/lc_applicationwindowinitializer.h
1469
+ librecad/src/ui/main/init/lc_menufactory.cpp
1470
+ librecad/src/ui/main/init/lc_menufactory.h
1471
+ librecad/src/ui/main/init/lc_toolbarfactory.cpp
1472
+ librecad/src/ui/main/init/lc_toolbarfactory.h
1473
+ librecad/src/ui/main/init/lc_widgetfactory.cpp
1474
+ librecad/src/ui/main/init/lc_widgetfactory.h
1475
+ librecad/src/ui/main/lc_appwindowaware.cpp
1476
+ librecad/src/ui/main/lc_appwindowaware.h
1477
+ librecad/src/ui/main/lc_defaultactioncontext.cpp
1478
+ librecad/src/ui/main/lc_defaultactioncontext.h
1479
+ librecad/src/ui/main/lc_mdiapplicationwindow.cpp
1480
+ librecad/src/ui/main/lc_mdiapplicationwindow.h
1481
+ librecad/src/ui/main/mainwindowx.cpp
1482
+ librecad/src/ui/main/mainwindowx.h
1483
+ librecad/src/ui/main/persistence/lc_documentsstorage.cpp
1484
+ librecad/src/ui/main/persistence/lc_documentsstorage.h
1485
+ librecad/src/ui/main/qc_applicationwindow.cpp
1486
+ librecad/src/ui/main/qc_applicationwindow.h
1487
+ librecad/src/ui/main/qc_mdiwindow.cpp
1488
+ librecad/src/ui/main/qc_mdiwindow.h
1489
+ librecad/src/ui/main/release_check/lc_releasechecker.cpp
1490
+ librecad/src/ui/main/release_check/lc_releasechecker.h
1491
+ librecad/src/ui/main/support/lc_appwindowdialogsinvoker.cpp
1492
+ librecad/src/ui/main/support/lc_appwindowdialogsinvoker.h
1493
+ librecad/src/ui/main/support/lc_customstylehelper.cpp
1494
+ librecad/src/ui/main/support/lc_customstylehelper.h
1495
+ librecad/src/ui/main/support/lc_gridviewinvoker.cpp
1496
+ librecad/src/ui/main/support/lc_gridviewinvoker.h
1497
+ librecad/src/ui/main/support/lc_infocursorsettingsmanager.cpp
1498
+ librecad/src/ui/main/support/lc_infocursorsettingsmanager.h
1499
+ librecad/src/ui/main/support/lc_lastopenfilesopener.cpp
1500
+ librecad/src/ui/main/support/lc_lastopenfilesopener.h
1501
+ librecad/src/ui/main/support/qg_recentfiles.cpp
1502
+ librecad/src/ui/main/support/qg_recentfiles.h
1503
+ librecad/src/ui/main/workspaces/lc_workspacesinvoker.cpp
1504
+ librecad/src/ui/main/workspaces/lc_workspacesinvoker.h
1505
+ librecad/src/ui/main/workspaces/lc_workspacesmanager.cpp
1506
+ librecad/src/ui/main/workspaces/lc_workspacesmanager.h
1507
+ librecad/src/ui/not_used/LC_DlgParabola.cpp
1508
+ librecad/src/ui/qg_actionhandler.cpp
1509
+ librecad/src/ui/qg_actionhandler.h
1510
+ librecad/src/ui/view/lc_centralwidget.cpp
1511
+ librecad/src/ui/view/lc_centralwidget.h
1512
+ librecad/src/ui/view/lc_printpreviewview.cpp
1513
+ librecad/src/ui/view/lc_printpreviewview.h
1514
+ librecad/src/ui/view/qg_graphicview.cpp
1515
+ librecad/src/ui/view/qg_graphicview.h
1516
+ )
1517
+
1518
+ set(MUPARSER_SOURCES
1519
+ libraries/muparser/include/muParser.h
1520
+ libraries/muparser/include/muParserBase.h
1521
+ libraries/muparser/include/muParserBytecode.h
1522
+ libraries/muparser/include/muParserCallback.h
1523
+ libraries/muparser/include/muParserDLL.h
1524
+ libraries/muparser/include/muParserDef.h
1525
+ libraries/muparser/include/muParserError.h
1526
+ libraries/muparser/include/muParserFixes.h
1527
+ libraries/muparser/include/muParserInt.h
1528
+ libraries/muparser/include/muParserTemplateMagic.h
1529
+ libraries/muparser/include/muParserToken.h
1530
+ libraries/muparser/include/muParserTokenReader.h
1531
+ libraries/muparser/src/muParser.cpp
1532
+ libraries/muparser/src/muParserBase.cpp
1533
+ libraries/muparser/src/muParserBytecode.cpp
1534
+ libraries/muparser/src/muParserCallback.cpp
1535
+ libraries/muparser/src/muParserDLL.cpp
1536
+ libraries/muparser/src/muParserError.cpp
1537
+ libraries/muparser/src/muParserInt.cpp
1538
+ libraries/muparser/src/muParserTokenReader.cpp
1539
+ )
1540
+
1541
+ # Static library from shared sources
1542
+ qt_add_library(librecad_lib STATIC
1543
+ ${MUPARSER_SOURCES}
1544
+ ${SHARED_SOURCES}
1545
+ )
1546
+ target_compile_definitions(librecad_lib PRIVATE
1547
+ DWGSUPPORT
1548
+ MUPARSER_STATIC
1549
+ LC_VERSION=2.2.2.5-alpha
1550
+ LC_PRERELEASE=true
1551
+ )
1552
+ target_include_directories(librecad_lib PRIVATE
1553
+ ${SHARED_INCLUDES}
1554
+ ${MUPARSER_SOURCES}
1555
+ )
1556
+
1557
+ target_link_libraries(librecad_lib PRIVATE
1558
+ Qt6::Core Qt6::Widgets Qt6::Gui Qt6::PrintSupport Qt6::Svg Qt6::Network
1559
+ )
1560
+ set_property(TARGET librecad_lib PROPERTY AUTOUIC_OPTIONS --connections string)
1561
+
1562
+ if(WIN32)
1563
+ target_compile_definitions(librecad_lib PRIVATE _USE_MATH_DEFINES)
1564
+ endif()
1565
+
1566
+ set(MAIN_SOURCES
1567
+ librecad/src/main/main.cpp
1568
+ librecad/src/main/console_dxf2pdf/console_dxf2pdf.cpp
1569
+ librecad/src/main/console_dxf2pdf/console_dxf2pdf.h
1570
+ librecad/src/main/console_dxf2pdf/pdf_print_loop.cpp
1571
+ librecad/src/main/console_dxf2pdf/pdf_print_loop.h
1572
+ librecad/src/main/console_dxf2png.cpp
1573
+ librecad/src/main/console_dxf2png.h
1574
+ librecad/src/ui/dialogs/main/qg_dlginitial.cpp
1575
+ librecad/src/ui/dialogs/main/qg_dlginitial.h
1576
+ ${LIBRECAD_RES}
1577
+ )
1578
+
1579
+ # Main executable
1580
+ qt_add_executable(librecad
1581
+ ${MAIN_SOURCES}
1582
+ )
1583
+ target_include_directories(librecad PRIVATE
1584
+ ${SHARED_INCLUDES}
1585
+ )
1586
+
1587
+ target_link_libraries(librecad PRIVATE
1588
+ librecad_lib
1589
+ Qt6::Core Qt6::Widgets Qt6::Gui Qt6::PrintSupport Qt6::Svg Qt6::Network
1590
+ )
1591
+ install(TARGETS librecad RUNTIME DESTINATION bin)
1592
+
1593
+ # Translations
1594
+ set(TS_DIR librecad/ts)
1595
+ set(TS_FILES
1596
+ librecad/ts/librecad_ar.ts
1597
+ librecad/ts/librecad_ca.ts
1598
+ librecad/ts/librecad_cs.ts
1599
+ librecad/ts/librecad_da.ts
1600
+ librecad/ts/librecad_de.ts
1601
+ librecad/ts/librecad_el.ts
1602
+ librecad/ts/librecad_en_au.ts
1603
+ librecad/ts/librecad_en.ts
1604
+ librecad/ts/librecad_es_ar.ts
1605
+ librecad/ts/librecad_es_bo.ts
1606
+ librecad/ts/librecad_es_cl.ts
1607
+ librecad/ts/librecad_es_co.ts
1608
+ librecad/ts/librecad_es_cr.ts
1609
+ librecad/ts/librecad_es_do.ts
1610
+ librecad/ts/librecad_es_ec.ts
1611
+ librecad/ts/librecad_es_gt.ts
1612
+ librecad/ts/librecad_es_hn.ts
1613
+ librecad/ts/librecad_es_mx.ts
1614
+ librecad/ts/librecad_es_ni.ts
1615
+ librecad/ts/librecad_es_pa.ts
1616
+ librecad/ts/librecad_es_pe.ts
1617
+ librecad/ts/librecad_es_pr.ts
1618
+ librecad/ts/librecad_es_py.ts
1619
+ librecad/ts/librecad_es_sv.ts
1620
+ librecad/ts/librecad_es.ts
1621
+ librecad/ts/librecad_es_us.ts
1622
+ librecad/ts/librecad_es_uy.ts
1623
+ librecad/ts/librecad_es_ve.ts
1624
+ librecad/ts/librecad_et.ts
1625
+ librecad/ts/librecad_eu.ts
1626
+ librecad/ts/librecad_fi.ts
1627
+ librecad/ts/librecad_fr.ts
1628
+ librecad/ts/librecad_gl.ts
1629
+ librecad/ts/librecad_he.ts
1630
+ librecad/ts/librecad_hi.ts
1631
+ librecad/ts/librecad_hu.ts
1632
+ librecad/ts/librecad_id_ID.ts
1633
+ librecad/ts/librecad_it.ts
1634
+ librecad/ts/librecad_ja.ts
1635
+ librecad/ts/librecad_ka.ts
1636
+ librecad/ts/librecad_ko.ts
1637
+ librecad/ts/librecad_lv.ts
1638
+ librecad/ts/librecad_mk.ts
1639
+ librecad/ts/librecad_nl.ts
1640
+ librecad/ts/librecad_no.ts
1641
+ librecad/ts/librecad_pa.ts
1642
+ librecad/ts/librecad_pl.ts
1643
+ librecad/ts/librecad_pt_br.ts
1644
+ librecad/ts/librecad_pt_pt.ts
1645
+ librecad/ts/librecad_ro_ro.ts
1646
+ librecad/ts/librecad_ru.ts
1647
+ librecad/ts/librecad_sk.ts
1648
+ librecad/ts/librecad_sl.ts
1649
+ librecad/ts/librecad_sq_al.ts
1650
+ librecad/ts/librecad_sr.ts
1651
+ librecad/ts/librecad_sv.ts
1652
+ librecad/ts/librecad_ta.ts
1653
+ librecad/ts/librecad_th.ts
1654
+ librecad/ts/librecad_tr.ts
1655
+ librecad/ts/librecad_uk.ts
1656
+ librecad/ts/librecad_zh_cn.ts
1657
+ librecad/ts/librecad_zh_tw.ts
1658
+ )
1659
+ qt_add_translations(librecad TS_FILE_DIR ${TS_DIR} TS_FILES ${TS_FILES})
1660
+
1661
+ # Optional ttf2lff
1662
+ if(FREETYPE_FOUND AND NOT WIN32)
1663
+ add_executable(ttf2lff
1664
+ tools/ttf2lff/main.cpp)
1665
+ target_link_libraries(ttf2lff PRIVATE ${FREETYPE_LIBRARIES})
1666
+ target_include_directories(ttf2lff PRIVATE
1667
+ ${FREETYPE_INCLUDE_DIRS}
1668
+ ${SHARED_INCLUDES}
1669
+ )
1670
+ endif()
1671
+
1672
+ add_subdirectory(libraries/lciconengine)
1673
+ add_subdirectory(plugins)
1674
+
1675
+ option(BUILD_TESTS "Build unit tests for LibreCAD" OFF)
1676
+
1677
+ if(BUILD_TESTS)
1678
+ # Add Catch2 as a subdirectory (assumes Catch2 is in externals/Catch2)
1679
+ add_subdirectory(externals/Catch2)
1680
+
1681
+ # Define test executable
1682
+ qt_add_executable(librecad_tests
1683
+ # this is needed to allow testing methods used by main()
1684
+ # main() is excluded when BUILD_TEST=ON
1685
+ ${MAIN_SOURCES}
1686
+ ${LIBRECAD_RES}
1687
+ ### The actual tests
1688
+ librecad/src/lib/engine/document/entities/tests/lc_splinehelper_tests.cpp
1689
+ librecad/src/lib/engine/document/entities/tests/lc_hyperbola_tests.cpp
1690
+ librecad/src/lib/engine/document/entities/tests/rs_ellipse_tests.cpp
1691
+ librecad/src/lib/engine/document/entities/tests/rs_spline_tests.cpp
1692
+ librecad/src/lib/math/tests/rs_math_tests.cpp
1693
+ librecad/src/lib/math/tests/lc_quadratic_tests.cpp
1694
+ )
1695
+
1696
+ # Include directories for rs_math.h and other dependencies
1697
+ target_include_directories(librecad_tests PRIVATE
1698
+ ${SHARED_INCLUDES}
1699
+ )
1700
+
1701
+ # Link Catch2 and other required libraries (e.g., Boost, Qt)
1702
+ target_link_libraries(librecad_tests PRIVATE
1703
+ librecad_lib
1704
+ Catch2::Catch2WithMain
1705
+ Qt6::Core
1706
+ Qt6::Gui
1707
+ Qt6::Network
1708
+ Qt6::PrintSupport
1709
+ Qt6::Svg
1710
+ Qt6::Widgets
1711
+ )
1712
+
1713
+ # Enable C++17 for the test target (matching LibreCAD's standard)
1714
+ target_compile_features(librecad_tests PRIVATE cxx_std_17)
1715
+ # compiling time defines
1716
+ target_compile_definitions(librecad_tests PRIVATE BUILD_TESTS=1)
1717
+ endif()
CMakePresets.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": 3,
3
+ "cmakeMinimumRequired": { "major": 3, "minor": 21 },
4
+ "configurePresets": [
5
+ {
6
+ "name": "x64-debug",
7
+ "displayName": "Debug-x64",
8
+ "generator": "Ninja",
9
+ "binaryDir": "${sourceDir}/build/${presetName}",
10
+ "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" }
11
+ },
12
+ {
13
+ "name": "x64-relwithdebug",
14
+ "displayName": "Rel-DbgInfo-x64",
15
+ "inherits": "x64-debug",
16
+ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" }
17
+ },
18
+ {
19
+ "name": "x64-release",
20
+ "displayName": "Rel-x64",
21
+ "inherits": "x64-debug",
22
+ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" }
23
+ }
24
+ ],
25
+ "buildPresets": [
26
+ {
27
+ "name": "x64-debug",
28
+ "configurePreset": "x64-debug",
29
+ "jobs": 8
30
+ },
31
+ {
32
+ "name": "x64-relwithdebug",
33
+ "configurePreset": "x64-relwithdebug"
34
+ },
35
+ {
36
+ "name": "x64-release",
37
+ "configurePreset": "x64-release"
38
+ }
39
+ ]
40
+ }
ChangeLogs/ACTIONS_README.md ADDED
@@ -0,0 +1,993 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ This pull request includes several handy actions for entities editing and modification (see below).
3
+
4
+ Actions are:
5
+ 1) Draw Cross (https://youtu.be/H9Lul0J02a0)
6
+ 2) Draw Star (https://youtu.be/bAD7kkAR5wA)
7
+ 3) Draw Rectangle - 1 Point (https://youtu.be/eOscpTiWJMY)
8
+ 4) Draw Rectangle - 2 Points (https://youtu.be/9bjBZAcEmVc)
9
+ 4) Draw Rectangle - 3 Points (https://youtu.be/IJhG3Rz9U5o)
10
+ 5) Draw Line of Points (https://youtu.be/8kDSSKg-vqU)
11
+ 6) Draw Snake Line (https://youtu.be/bXom0IWw4R4)
12
+ 7) Draw Snake (X) Line (https://youtu.be/bXom0IWw4R4)
13
+ 8) Draw Snake (X) Line (https://youtu.be/bXom0IWw4R4)
14
+ 9) Draw Angle From Line (https://youtu.be/ZcnIUXZdSBI)
15
+ 10) Draw Orthogonal From Line (https://youtu.be/sfO2aUeQ_2E)
16
+ 11) Draw Line from Point To Line (https://youtu.be/3bEWIryP6jQ)
17
+ 12) Slice/Divide Line (https://youtu.be/z0I8N73aWFM)
18
+ 13) Slice/Divide Circle/Arc (https://youtu.be/ILACvThv6I4)
19
+ 14) Draw Circle by Arc (https://youtu.be/xSJnC-Mvczw)
20
+ 15) Duplicate entity (https://youtu.be/xSJnC-Mvczw)
21
+ 16) Lines Join (https://youtu.be/NCqodd0i_gE)
22
+ 17) Break/Divide (line, arc, circle) https://youtu.be/_UHawUJXZe0
23
+ 18) Line Gap (https://youtu.be/0Y0YsNSZIJA)
24
+
25
+ ### Action Details
26
+
27
+ The following actions are included:
28
+
29
+ ### Cross Action
30
+
31
+ This action draws cross for selected circle, arc, ellipse or ellipse arc. Intersection of cross lines is located in the center point of entity.
32
+
33
+ Cross is drawn using active pen and layer.
34
+
35
+ #### Example Video: https://youtu.be/H9Lul0J02a0
36
+
37
+ **Options:**
38
+
39
+ 1) **X** - horizontal size value
40
+
41
+ 2) **Y** - vertical size value
42
+
43
+ 3) **Angle** - angle used to rotate the cross (between x-axis and horizontal line)
44
+
45
+ 4) **Type** - defines type of cross size calculation. There are the following size types:
46
+ - **Extension** - cross extends selected entity on specified x and y values (so the lengths of lines is radius + specified x or y)
47
+ - **Total Length** - x and y values are considered as absolute length value
48
+ - **Percentage** - x and y values are considered as percentage of entity's radius
49
+
50
+ #### Existing Pre-Selection:
51
+
52
+ If there are selected entities during action's invocation, cross for each applicable entity type is created based previously on saved settings.
53
+
54
+ #### Command widget
55
+ Action is not fully scriptable, as requires mouse selection of entity.
56
+
57
+ #### Invocation Commands:
58
+
59
+ ```cross``` or ```cx```
60
+
61
+ ##### Action Commands:
62
+
63
+ No additional commands
64
+
65
+ #### Mouse + SHIFT mode:
66
+ No support
67
+
68
+ ---
69
+ ### Star Action
70
+ This action draws a star with given amount of rays. It is possible to create symmetric or non-symmetric star, and specify rounding radiuses for outer and inner vertexes.
71
+
72
+ Star is drawn using active pen and layer.
73
+
74
+ #### Example Video: https://youtu.be/bAD7kkAR5wA
75
+
76
+ #### Options:
77
+
78
+ 1) **Symmetric** - flag that indicates whether star is symmetric
79
+
80
+ 2) **Number** - number of rays (min is 3)
81
+
82
+ 3) **Radius Outer** - Rounding radius for outer vertexes of rays (if any)
83
+
84
+ 3) **Radius Inner**
85
+ Rounding radius for inner vertexes of rays (if any)
86
+
87
+ 4) **Polyline** Flag indicates whether all elements of start should be drawn as individual entities or as single polyline.
88
+
89
+ #### Existing Selection:
90
+
91
+ No support
92
+
93
+ #### Command widget
94
+
95
+ Action is fully scriptable and operations may be performed via command widget only.
96
+
97
+ ##### Invocation Command:
98
+
99
+ ```star``` or ```st```
100
+
101
+ ##### Action Commands:
102
+
103
+ Positions for center of star, outer ray vertex and inner ray vertex may be entered as coordinates.
104
+ Also, the following commands are supported:
105
+
106
+ ```number``` - specified amount of rays
107
+
108
+ ```radius``` - allows to specify rounding radiuses
109
+
110
+ ```sym``` - specified that star is symmetric
111
+
112
+ ```nosym``` - specifies that start is not symmetric
113
+
114
+ ```nopoly``` - do not create polyline
115
+
116
+ ```usepoly``` - draw star as single polyline
117
+
118
+ #### Mouse + SHIFT mode:
119
+ For setting center point of star state of the action, allows snapping center to relative zero point.
120
+
121
+ ----
122
+ ### Draw Rectangle (1 Point) Action
123
+ This action draws a rectangle of specified size and places it into specified insertion point.
124
+
125
+ Rectangle is drawn using active pen and layer.
126
+
127
+ #### Example Video: https://youtu.be/eOscpTiWJMY
128
+
129
+ #### Options:
130
+
131
+ 1) **Width** - width of rectangle
132
+
133
+ 2) **Height** - height of rectangle
134
+
135
+ 3) **Snap** - defines which part of rectangle will be used as as snap point (and so it will be placed into insertion point)
136
+ there are the following options for snap:
137
+ * **Top Left** - top left corner of rect
138
+ * **Top** - middle of top edge
139
+ * **Top-Right** - top-right corner
140
+ * **Left** - middle point of left edge
141
+ * **Middle** - central point of rectangle
142
+ * **Right** - middle point of right edge
143
+ * **Bottom-left** - bottom-left corner
144
+ * **Bottom** - middle of bottom edge
145
+ * **Bottom-Right** - bottom-right corner
146
+ 4) **Base Angle** - rotation angle of rectangle (betwen x-axis and bottom edge)
147
+ 5) **Polyline** - Flag indicates whether all elements of rectangle should be drawn as individual entities or as single polyline.
148
+ 6) **Corners** - Defines now corners of rectangle should be drawn. The following options are available:
149
+ * **Straight** - normal 90 degrees corners
150
+ * **Round** - rounded (arc) corners with specified radius
151
+ * **Bevel** - bevels with specified size
152
+ 7) **Edges** - for _Straight_ corner mode, allows to specify which edges of rectangle should be shown. If not all edges are set, it is possible to draw 2 parallel lines. Options are:
153
+ * **Both** - all edges are draws, so result is rect
154
+ * **Vertical** - only vertical edges are drawn, 2 parallel lines
155
+ * **Horizontal** - only horizontal edges are drawn, 2 parallel lines
156
+ 9) **Radius** - for _Round_ corners mode, radius of rounding corners arcs
157
+ 10) **Snap Shift** - for _Round_ corners mode, flag indicates that normal snap point should be adjusted and be located, say, not at the corner of rect, but in the center point of rounding arc
158
+ 11) **Size inner** - for _Round_ corners mode, if set this flag indicates that size of rectangle should be applied not to outer size of rectangle, but for size between centers of rounding arcs.
159
+ 12) **Length X** - for _Bevel_ corners mode, specifies bevel size by x-axis
160
+ 13) **Length Y** - for _Bevel_ corners mode, specifies bevel size by y-axis
161
+
162
+ #### Existing Selection:
163
+
164
+ No support
165
+
166
+ #### Command widget
167
+
168
+ Action is fully scriptable and operations may be performed via command widget only.
169
+
170
+ ##### Invocation Command:
171
+
172
+ ```rect1``` or ```re1```
173
+
174
+ ##### Action Commands:
175
+
176
+ Position for insertion point may be entered as coordinates.
177
+
178
+ Also, the following commands are supported:
179
+
180
+ ```width``` - initiates entering width
181
+
182
+ ```height``` - initiates entering height
183
+
184
+ ```size``` - initiates entering size of rect (as width, height pair, similar to coordinates)
185
+
186
+ ```pos``` - switches to entering insertion point coordinates
187
+
188
+ ```snap1``` - initiates entering snap mode for insertion point. Commands for snap point type are:
189
+ ```topl, top, topr, left, middle, right, bottoml, bottom, bottomr```
190
+
191
+ ```snapcorner``` - switches to snap to corner mode (opposite to ```snapshift```)
192
+
193
+ ```snapshift``` - switches to snap to center of rounded corner arc mode (opposite to ```snapshift```)
194
+
195
+ ```sizeout``` - switches sizes calculation relating to corners (opposite to ```sizein```)
196
+
197
+ ```sizein``` - switches sizes calculation relating to centers of rounding arcs (opposite to ```sizeout```)
198
+
199
+ ```angle``` - initiates entering of base angle of rect (angle from corner1 to corner2)
200
+
201
+ ```radius``` - initiates entering rounding radius for corners
202
+
203
+ ```bevels``` - initiates entering of bevels or setting bevels corners mode
204
+
205
+ ```corners``` - initiates entering corners mode. Command values for corners are: ```str, round, bevels```
206
+
207
+ ```edges``` - initiates entering corners mode. Command values for corners are: ```both, hor, vert```
208
+
209
+ ```usepoly``` - draw rectangle as single polyline
210
+
211
+ ```usepoly``` - disables drawing rect as polyline (so all elements are individual entities)
212
+
213
+ #### Mouse + SHIFT mode
214
+ If relative zero point is valid, uses it as rectangle insertion point.
215
+
216
+ ----
217
+ ### Draw Rectangle (2 Points) Action
218
+ This action draws a rectangle by specifying positions of two snap points (specified by settings) of rectangle.
219
+ Such customizable snapping mode allows better positioning of created rectangle.
220
+
221
+ Rectangle is drawn using active pen and layer.
222
+
223
+ #### Example Video: https://youtu.be/9bjBZAcEmVc
224
+
225
+ #### Options:
226
+
227
+ 1) **Start Snap** - defines which part of rectangle will be used as a first snap point (and so it will be placed into insertion point)
228
+ there are the following options for snap:
229
+ * **Corner** - corner of rectangle
230
+ * **Mid-Vertical** - middle of vertical edge
231
+ * **Mid-Horizontal** - middle point of horizontal edge
232
+ * **Middle** - central point of rectangle
233
+ 2) **End Snap** - defines which part of rectangle will be used as a first snap point (and so it will be placed into insertion point)
234
+ there are the following options for snap:
235
+ * **Corner** - corner of rectangle
236
+ * **Mid-Vertical** - middle of vertical edge
237
+ * **Mid-Horizontal** - middle point of horizontal edge
238
+ * **Middle** - central point of rectangle
239
+ 4) **Base Angle** - rotation angle of rectangle (between x-axis and bottom edge)
240
+ 5) **Polyline** - Flag indicates whether all elements of rectangle should be drawn as individual entities or as single polyline.
241
+ 6) **Corners** - Defines now corners of rectangle should be drawn. The following options are available:
242
+ * **Straight** - normal 90 degrees corners
243
+ * **Round** - rounded (arc) corners with specified radius
244
+ * **Bevel** - bevels with specified size
245
+ 7) **Edges** - for _Straight_ corner mode, allows to specify which edges of rectangle should be shown. If not all edges are set, it is possible to draw 2 parallel lines. Options are:
246
+ * **Both** - all edges are draws, so result is rect
247
+ * **Vertical** - only vertical edges are drawn, 2 parallel lines
248
+ * **Horizontal** - only horizontal edges are drawn, 2 parallel lines
249
+ 9) **Radius** - for _Round_ corners mode, radius of rounding corners arcs
250
+ 10) **Snap Shift** - for _Round_ corners mode, flag indicates that normal snap point should be adjusted and be located, say, not at the corner of rect, but in the center point of rounding arc
251
+ 12) **Length X** - for _Bevel_ corners mode, specifies bevel size by x-axis
252
+ 13) **Length Y** - for _Bevel_ corners mode, specifies bevel size by y-axis
253
+
254
+
255
+ #### Existing Selection:
256
+
257
+ No support
258
+
259
+ #### Command widget
260
+
261
+ Action is fully scriptable and operations may be performed via command widget only.
262
+
263
+ ##### Invocation Command:
264
+
265
+ ```rect2``` or ```re2```
266
+
267
+ ##### Action Commands:
268
+
269
+ Position for start snap point and end snap point may be entered as coordinates.
270
+
271
+ Also, the following commands are supported:
272
+
273
+ ```snap1``` - starts entering of snap mode for point 1. Options for snap point type are:
274
+ ```corner, mid-vert, mid-hor, middle```
275
+
276
+ ```snap2``` - starts entering of snap mode for point 1. Options for snap point type are:
277
+ ```corner, mid-vert, mid-hor, middle```
278
+
279
+ ```size``` - initiates entering size of rect (as width, height pair, similar to coordinates)
280
+
281
+ ```pos``` - switches to entering insertion point coordinates
282
+
283
+ ```snapcorner``` - switches to snap to corner mode (opposite to ```snapshift```)
284
+
285
+ ```snapshift``` - switches to snap to center of rounded corner arc mode (opposite to ```snapshift```)
286
+
287
+ ```angle``` - initiates entering of base angle of rect (angle from corner1 to corner2)
288
+
289
+ ```radius``` - initiates entering rounding radius for corners
290
+
291
+ ```bevels``` - initiates entering of bevels or setting bevels corners mode
292
+
293
+ ```corners``` - initiates entering corners mode. Command values for corners are: ```str, round, bevels```
294
+
295
+ ```edges``` - initiates entering corners mode. Command values for corners are: ```both, hor, vert```
296
+
297
+ ```usepoly``` - draw rectangle as single polyline
298
+
299
+ ```usepoly``` - disables drawing rect as polyline (so all elements are individual entities)
300
+
301
+ #### Mouse + SHIFT mode
302
+ Depends on state of the action.
303
+
304
+ 1) For setting first snap point - uses relative zero point as first snap point.
305
+ 2) For setting second snap point - draws SQUARE instead of rectangle.
306
+
307
+ ---
308
+ ### Draw Rectangle (3 Points) Action
309
+ This action draws a rectangle or quadrangle by specifying positions of 3 corner points.
310
+
311
+ Rectangle is drawn using active pen and layer.
312
+
313
+ #### Example Video: https://youtu.be/IJhG3Rz9U5o
314
+
315
+ #### Options:
316
+
317
+ 1) **Quadrangle** - flag that indicates that quadrangle (non 90 degree angle between edges) should be created instead of rectangle
318
+ 2) **Fixed inner angle** - for _Quadrangle_ mode - defines (if any) inner angle of quadrangle (angle between edges)
319
+ 3) **Fixed Base Angle** - if specified, base angle (between bottom edge and x-axis) is fixed to specified angle value. If not set, the angle is defined by points for first and second corners.
320
+ 5) **Polyline** - Flag indicates whether all elements of rectangle should be drawn as individual entities or as single polyline.
321
+ 6) **Corners** - for _Rectangle_ mode - Defines now corners of rectangle should be drawn. The following options are available:
322
+ * **Straight** - normal 90 degrees corners
323
+ * **Round** - rounded (arc) corners with specified radius
324
+ * **Bevel** - bevels with specified size
325
+ 7) **Edges** - for _Straight_ corner mode, allows to specify which edges of rectangle should be shown. If not all edges are set, it is possible to draw 2 parallel lines. Options are:
326
+ * **Both** - all edges are draws, so result is rect
327
+ * **Vertical** - only vertical edges are drawn, 2 parallel lines
328
+ * **Horizontal** - only horizontal edges are drawn, 2 parallel lines
329
+ 9) **Radius** - for _Round_ corners mode, radius of rounding corners arcs
330
+ 10) **Snap Shift** - for _Round_ corners mode, flag indicates that normal snap point should be adjusted and be located, say, not at the corner of rect, but in the center point of rounding arc
331
+ 12) **Length X** - for _Bevel_ corners mode, specifies bevel size by x-axis
332
+ 13) **Length Y** - for _Bevel_ corners mode, specifies bevel size by y-axis
333
+
334
+ #### Existing Selection:
335
+
336
+ No support
337
+
338
+ #### Command widget
339
+
340
+ Action is fully scriptable and operations may be performed via command widget only.
341
+
342
+ ##### Invocation Command:
343
+
344
+ ```rect3``` or ```re3```
345
+
346
+ ##### Action Commands:
347
+
348
+ Position for start snap point and end snap point may be entered as coordinates.
349
+
350
+ Also, the following commands are supported:
351
+
352
+ ```pos``` - switches to entering insertion point coordinates
353
+
354
+ ```quad``` - sets quadrangle mode
355
+
356
+ ```noquad``` - sets rectangle mode
357
+
358
+ ```angle_inner``` - starts entering of inner angle for quadrangle (and enables quadrangle mode)
359
+
360
+ ```width``` - starts entering width value
361
+
362
+ ```height``` - starts entering height value
363
+
364
+ ```size``` - initiates entering size of rect (as width, height pair, similar to coordinates)
365
+
366
+ ```snapcorner``` - switches to snap to corner mode (opposite to ```snapshift```)
367
+
368
+ ```snapshift``` - switches to snap to center of rounded corner arc mode (opposite to ```snapshift```)
369
+
370
+ ```angle``` - initiates entering of base angle of rect (angle from corner1 to corner2)
371
+
372
+ ```radius``` - initiates entering rounding radius for corners
373
+
374
+ ```bevels``` - initiates entering of bevels or setting bevels corners mode
375
+
376
+ ```corners``` - initiates entering corners mode. Command values for corners are: ```str, round, bevels```
377
+
378
+ ```edges``` - initiates entering corners mode. Command values for corners are: ```both, hor, vert```
379
+
380
+ ```usepoly``` - draw rectangle as single polyline
381
+
382
+ ```usepoly``` - disables drawing rect as polyline (so all elements are individual entities)
383
+
384
+ #### Mouse + SHIFT mode
385
+ Depends on state of the action.
386
+
387
+ 1) For setting first corner - uses relative zero point as first snap point.
388
+ 2) For setting second corner - uses Angle snap (similar to line) for defining base angle of rectangle
389
+ 2) For setting third corner - draws SQUARE instead of rectangle.
390
+
391
+ ---
392
+ ### Draw Line of Points Action
393
+ This action draws a set of points located on the same line. Distance between points may be either fixed or calculated based on specified number of points.
394
+
395
+ Rectangle is drawn using active pen and layer.
396
+
397
+ #### Example Video: https://youtu.be/8kDSSKg-vqU
398
+
399
+ #### Options:
400
+
401
+ 3) **Angle** - if specified, defines direction angle for the line
402
+ 1) **Number of Points** - amount of inner (non-edge) points to draw (not always applicable).
403
+ 2) **Fixed Distance** - flag that indicates whether distance between points is fixed (otherwise, it's calculated based on length of line and number of points)
404
+ 3) **Fit Line** - for _Fixed Distance_ mode. If enabled, amount of points will be determined dynamically based on the length of line and distance. If disabled - only specified number of points will be created.
405
+ 6) **Edge Points** - defines how to draw points on edge points of line.
406
+ * **None** - no points are in start and end point of line
407
+ * **Both** - points are placed in start and end points of line
408
+ * **Start** - point is in start point, no point in end point
409
+ * **End** - point in end point, no point in start point of line
410
+
411
+ #### Existing Selection:
412
+
413
+ No support
414
+
415
+ #### Command widget
416
+
417
+ Action is fully scriptable and operations may be performed via command widget only.
418
+
419
+ ##### Invocation Command:
420
+
421
+ ```linepoints``` or ```lpoints```
422
+
423
+ ##### Action Commands:
424
+
425
+ Position for start point of line and end point line may be entered as coordinates.
426
+
427
+ The following commands are supported:
428
+
429
+ ```angle``` - initiates entering of line angle
430
+
431
+ ```x``` - fixes direction of line to horizontal and ask for entering line length
432
+
433
+ ```y``` - fixes direction of line to vertical and ask for entering line length
434
+
435
+ ```p``` - switches line to free direction (point) as it is supported by default line drawing action. Default directions mode
436
+
437
+ ```number``` - initiates entering number of points
438
+
439
+ ```dist_fixed``` - switches to fixed distance mode between points
440
+
441
+ ```dist_flex``` - switches to calculated distance mode between points (opposite to _dist_fixed_)
442
+
443
+ ```distance``` - for _Fixed Points Distance_ mode, initiates entering distance between points
444
+
445
+ ```fit``` - for fixed distance mode, ensures that all point are within the line defined by start and end point. Option for number of points is ignored.
446
+
447
+ ```nofit``` - for fixed distance mode, indicates creation of point according to distance between points and number of points starting from start point of line. Endpoint of line is used for specifying line direction only.
448
+
449
+ ```edges``` - initiates entering edge points mode. Command values for corners are: ```none, both, start, end```. There is also shortcuts for edge points mode, single commands as ```edge_none, edge_both, edge_start, edge_end```
450
+
451
+ #### Mouse + SHIFT mode
452
+ Depends on state of the action.
453
+
454
+ 1) For setting first point state - uses relative zero point as first snap point.
455
+ 2) For setting second point state
456
+ - if angle of line is not fixed - uses Angle snap (with 15 degrees step) for defining angle of line
457
+ - if angle of line is fixed - uses angle that is mirrored to specified (180 degrees - angle)
458
+
459
+ ---
460
+ ### Draw Snake Line Action
461
+ This action draws a set of line segments (similar to standard draw line action). The major intent of this action - simpler usage via command widget, as well as support of fixed angle direction.
462
+ Action is the most suitable for drawing the set of horizontal/vertical lines, as it automatically switch direction mode.
463
+
464
+ Rectangle is drawn using active pen and layer.
465
+
466
+ #### Example Video: https://youtu.be/bXom0IWw4R4
467
+
468
+ #### Options:
469
+
470
+ 1) **Direction** - controls direction of line drawing. The following modes are supported:
471
+ * **X** - horizontal line segment will be drawn, and after setting endpoint of it direction will be switched to Y
472
+ * **Y** - vertical line segment will be drawn, and after setting endpoint of it direction will be switched to X
473
+ * **Point** - line segment will be drawn in arbitrary direction (as in default draw line action)
474
+ * **Angle** - line segment will be drawn in specified angle
475
+ 2) * **Rel** - if _Angle_ direction is set, flag indicates whether angle value is absolute or relative to previous segment
476
+
477
+ Also, it's possible to close line, create polyline and perform undo/redo operations via options buttons.
478
+
479
+ #### Existing Selection:
480
+
481
+ No support
482
+
483
+ #### Command widget
484
+
485
+ Action is fully scriptable and operations may be performed via command widget only.
486
+
487
+ ##### Invocation Command:
488
+
489
+ ```sline``` or ```sli``` or ```sl```
490
+
491
+ ##### Action Commands:
492
+
493
+ Position for start point of line and end point of line segment may be entered as coordinates.
494
+
495
+ The following commands are supported:
496
+
497
+ ```x``` - fixes direction of line to horizontal and ask for entering segment length
498
+
499
+ ```y``` - fixes direction of line to vertical and ask for entering segment length
500
+
501
+ ```p``` - switches line to free direction (point) as it is supported by default line drawing action. Default directions mode
502
+
503
+ ```angle``` - initiates entering of line angle
504
+
505
+ ```anglerel``` - specifies that relative angle should be used
506
+
507
+ ```close``` - closes the line if possible (by connecting enpoint of last segment and start point of first segment)
508
+
509
+ ```undo``` - perform undo operation and removes last segment
510
+
511
+ ```redo``` - performs re-do operation if possible
512
+
513
+ ```start``` - switches action to setting new start point of line segment
514
+
515
+ ```polyline```or ```pl``` - creates polyline
516
+
517
+ #### Mouse + SHIFT mode
518
+ Depends on state of the action.
519
+
520
+ 1) For setting start point state - uses relative zero point as first snap point.
521
+ 2) For setting second point state
522
+ - if angle of line is not fixed - uses Angle snap (with 15 degrees step) for defining angle of line
523
+ - if angle of line is fixed - uses angle that is mirrored to specified (180 degrees - angle)
524
+
525
+ ---
526
+ ### Draw Snake (X) Line Action
527
+ This action is actually the same as **Snake Line**, except that it starts new segment series with X-mode
528
+ enabled by default, so it is convenient for drawing horizontal lines.
529
+
530
+ #### Example Video: https://youtu.be/bXom0IWw4R4
531
+
532
+ ##### Invocation Command:
533
+
534
+ ```slinex``` or ```slix``` or ```slx```
535
+
536
+ ---
537
+ ### Draw Snake (Y) Line Action
538
+ This action is actually the same as **Snake Line**, except that it starts new segment series with Y-mode
539
+ enabled by default, so it is convenient for drawing vertical lines.
540
+
541
+ #### Example Video: https://youtu.be/bXom0IWw4R4
542
+
543
+ ##### Invocation Command:
544
+
545
+ ```sliney``` or ```sliy``` or ```sly```
546
+
547
+ ---
548
+ ### Draw Angle From Line Action
549
+ This action draws a line that is directed by specific angle to selected line. In general, it is similar to **Relative Angle** action, however:
550
+ * it has fine-grained support of positioning angle line within base line
551
+ * allows specifying length of angle line by value and by mouse
552
+ * support both absolute and relative angles
553
+ * can create angle line with some offset from base line
554
+ * can divide base line to two segments based on lines intersection points
555
+
556
+ Line is drawn using active pen and layer.
557
+
558
+ #### Example Video: https://youtu.be/ZcnIUXZdSBI
559
+
560
+ #### Options:
561
+
562
+ 1) **Length** - length of angle line
563
+ 2) **Free** - if this flag is enabled, instead of fixed lenght of angle line, the user should specify end point of angle line
564
+ 3) **Angle** - angle value
565
+ 5) **Rel** - Flag that controls whether absolute (from x-axis) or relative (taking into consideration own angle of base line) angle should be used.
566
+ 6) **Line Snap** - defines which snap point on base line should be used. Values are:
567
+ * **Free** - any point within base line, the user should select it
568
+ * **Start** - start point of base line
569
+ * **Middle** - middle point of base line
570
+ * **End** - end point of base line
571
+ 3) **Snap Distance** - distance from snap point on the base line to the point where angle line will intersect with base line. Not applicable for _Free_ Line Snap mode.
572
+ 7) **Tick Snap** - defines which point on angle line should be used as snap (intersection) on base line. Values are:
573
+ * **Start** - start point of angle line will be snapped to base line
574
+ * **Middle** - middle point of angle line will be snapped to base line
575
+ * **End** - end point of angle line will be snapped to base line
576
+ 9) **Offset** - value of offset of the angle line snap point from base line (so it is possible to have a gap between line, if needed)
577
+ 10) **Divide** - if this flag is set, base line will be divided on two line segments, based on intersection point between angle line and base line.
578
+
579
+ #### Existing Selection:
580
+
581
+ No support
582
+
583
+ #### Command widget
584
+
585
+ Action is not scriptable, as it requires selection of base line by mouse.
586
+
587
+ ##### Invocation Command:
588
+
589
+ ```angleline``` or ```aline```
590
+
591
+ ##### Action Commands:
592
+
593
+ No additional commands are supportes.
594
+
595
+ #### Mouse + SHIFT mode
596
+
597
+ Uses alternative mirrored angle (180-angle) instead of specified one.
598
+
599
+ ---
600
+ ### Draw Orthogonal From Line Action
601
+ This action is actually the same as **Angle From Line**, except that angle is fixed and is 90 degrees
602
+ so it is convenient for creation of perpendicular lines.
603
+
604
+ #### Example Video: https://youtu.be/sfO2aUeQ_2E
605
+
606
+ ##### Invocation Command:
607
+
608
+ ```ortline``` or ```oline```
609
+
610
+
611
+ ---
612
+ ### Draw line From Point To Line Action
613
+ This action draws a line from selected point to specified target line, with possibility to specify the angle of intersection of base line and created line.
614
+
615
+ Line is drawn using active pen and layer.
616
+
617
+ #### Example Video: https://youtu.be/3bEWIryP6jQ
618
+
619
+ #### Options:
620
+
621
+ 1) **Orthogonal** - if flag is set, the action will create a line that is perpendicular to target line and that starts in selected point.
622
+ 2) **Angle** - if not perpendicular mode, specifies that angle between created line and target line.
623
+ 3) **Size** - defines which size of created line should be used. Values are:
624
+ * **To intersection** - line will be created from selected point to intersection with target line
625
+ * **Fixed Length** - fixed length line will be created from selected point in direction to intersection with target line
626
+ 4) **Length** - applicable for _Fixed Length_ mode, represents a length of created line.
627
+ 6) **Tick Snap** - applicable for _Fixed Length_ mode, defines which point on created line should be used as snap point (located in initial point). Values are
628
+ * **Start** - start point of created line will be snapped to initial point
629
+ * **Middle** - middle point of created line will be snapped to initial point
630
+ * **End** - end point of created line will be snapped to initial point
631
+ 9) **End Offset** - applicable for _To intersection_ mode, represent offset of end point of created line from target line.
632
+
633
+ #### Existing Selection:
634
+
635
+ No support
636
+
637
+ #### Command widget
638
+
639
+ Action is not scriptable, as it requires selection of target line by mouse.
640
+
641
+ ##### Invocation Command:
642
+
643
+ ```point2line``` or ```p2l```
644
+
645
+ ##### Action Commands:
646
+
647
+ No additional commands are supported.
648
+
649
+ #### Mouse + SHIFT mode
650
+
651
+ Uses alternative mirrored angle (180-angle) instead of specified one (for non-orthogonal mode).
652
+
653
+
654
+ ---
655
+ ### Slice/Divide Line Action
656
+ This is combined action, that allows to draw specified number of tick lines along selected target line using specified length and angle to target line,
657
+ and also optionally divides target line by points of ticks intersections. If tick length is set to 0, may just divide target line to the set of line segments.
658
+
659
+ In general, this action may be also used as a replacement to "Divide" plugin.
660
+
661
+ Tick lines ares drawn using active pen and layer, if entity is divided - original attributes are used for created segments.
662
+
663
+ #### Example Video: https://youtu.be/z0I8N73aWFM
664
+
665
+ #### Options:
666
+
667
+ 1) **Fixed** - flag defines whether distance between tick lines is fixed or should be calculated.
668
+ 2) **Distance** - for **Fixed** tick distance mode, defines distance between individual tick lines
669
+ 3) **Count** - for non-**Fixed** tick distance mode, defines amount of inner (non-edge) ticks to be created.
670
+ 4) **Tick Length** - length of each tick line. If **Tick Length** is 0, it is possible just divide line by tick positions.
671
+ 5) **Angle** - angle value used to draw tick lines
672
+ 6) **Rel** - flag that indicates whether angle is absolute (to x-axis) or relative (to target line)
673
+ 7) **Offset** - offset distance between target line and tick snap point
674
+ 8) **Tick Snap** - defines which point on tick lines should be used as snap point (located on intersection with base line). Values are
675
+ * **Start** - start point of created tick line will be snapped to target line
676
+ * **Middle** - middle point of created tick line will be snapped to target line
677
+ * **End** - end point of created tick line will be snapped to target line
678
+ 9) **Edge Tick** - defines how tick lines should be drawn at endpoints of target line. Values are:
679
+ * **None** - no tick lines at edges of target line
680
+ * **Both** - tick lines are in both edges of target line
681
+ * **Start** - tick line in start point of target line
682
+ * **End** - tick line in end point of target line
683
+ 10) **Divide** - if flag is set, in addition to creation of tick lines, the action will divide target line to the set of line segments. Division points are tick lines snap points.
684
+
685
+ #### Existing Selection:
686
+
687
+ No support
688
+
689
+ #### Command widget
690
+
691
+ Action is not scriptable, as it requires selection of target entity by mouse.
692
+
693
+ ##### Invocation Command:
694
+
695
+ ```slicel``` or ```sll```
696
+
697
+ ##### Action Commands:
698
+
699
+ No additional commands are supported.
700
+
701
+ #### Mouse + SHIFT mode
702
+
703
+ Uses alternative mirrored angle (180-angle) for tick lines instead of specified one.
704
+
705
+ ---
706
+ ### Slice/Divide Circle/Arc Action
707
+ The action is similar to Slice/Divide Line action, yet instead of line it operates with circles and arcs.
708
+ This is combined action, that allows to draw specified number of tick lines along selected target circle or arc using specified length and angle to entity,
709
+ and also optionally divides target line by points of ticks intersections. If tick length is set to 0, may just divide target sentity to the set of arc segments.
710
+
711
+ Line is drawn using active pen and layer.
712
+
713
+ #### Example Video: https://youtu.be/ILACvThv6I4
714
+
715
+ #### Options:
716
+
717
+ 1) **Count** - defines amount of inner (non-edge) ticks to be created.
718
+ 2) **Tick Length** - length of each tick line. If **Tick Length** is 0, it is possible just perform divide
719
+ 3) **Angle** - angle value used to draw tick lines
720
+ 4) **Rel** - flag that indicates whether angle is absolute (to x-axis) or relative (to target entity)
721
+ 5) **Offset** - offset distance between target entity and tick snap point
722
+ 6) **Tick Snap** - defines which point on tick lines should be used as snap point (located on intersection with target entity). Values are
723
+ * **Start** - start point of created tick line will be snapped to target entity
724
+ * **Middle** - middle point of created tick line will be snapped to target entity
725
+ * **End** - end point of created tick line will be snapped to target entity
726
+ 7) **Edge Tick** - defines how tick lines should be drawn at endpoints of target arc (not applicable to circle). Values are:
727
+ * **None** - no tick lines at edges of target arc
728
+ * **Both** - tick lines are in both edges of target arc
729
+ * **Start** - tick line in start point of target arc
730
+ * **End** - tick line in end point of target arc
731
+ 8) **Start Circle Action** - if target entity is circle, defines start angle from which tick line positions will be calculated.
732
+ 9) **Divide** - if flag is set, in addition to creation of tick lines, the action will divide target entity to the set of arc segments. Division points are tick lines snap points.
733
+
734
+ #### Existing Selection:
735
+
736
+ No support
737
+
738
+ #### Command widget
739
+
740
+ Action is not scriptable, as it requires selection of target entity by mouse.
741
+
742
+ ##### Invocation Command:
743
+
744
+ ```slicec``` or ```slc```
745
+
746
+ ##### Action Commands:
747
+
748
+ No additional commands are supported.
749
+
750
+ #### Mouse + SHIFT mode
751
+
752
+ Uses alternative mirrored angle (180-angle) for tick lines instead of specified one.
753
+
754
+ ---
755
+ ### Draw Circle by Arc Action
756
+
757
+ Simple action that creates circle based on selected arc entity (or ellipse by ellipse arc). Center of circle is the same as center of arc, radius of created circle may be either the same of with specified offset to arc's radius.
758
+ Also, it is possible to specify:
759
+ * in which layer (original or active) created circle should be placed to
760
+ * which pen should be used for circle
761
+ * should circle replace arc or not.
762
+
763
+ #### Example Video: https://youtu.be/xSJnC-Mvczw
764
+
765
+ #### Options:
766
+
767
+ 1) **Replace arc** - flag defines whether original arc should be deleted or not
768
+ 2) **Radius Shift** - if arc is not replaced, allows to specify offset to original radius of arc. Thus it is possible to create circle with offset relating to arc.
769
+ 3) **Pen** - defines which pen should be applied to created circle. Options:
770
+ * **Active** - active pen
771
+ * **Original** - original pen of that was used by arc
772
+ * **Original Resolved** - resolved pen that was used by arc (so "By Layer" etc. attributes are not used and actual values are applied)
773
+ 7) **Layer** - defines to which layer created circle will be placed
774
+ * **Active** - active layer
775
+ * **Original** - the same layer as one of arc's layer.
776
+
777
+ #### Existing Selection:
778
+
779
+ If there are selected entities on action's invocation, for arcs creates circles based on previously saved settings.
780
+
781
+ #### Command widget
782
+
783
+ Action is not scriptable, as it requires selection of target arc by mouse.
784
+
785
+ ##### Invocation Command:
786
+
787
+ ```circlebyarc``` or ```cba```
788
+
789
+ ##### Action Commands:
790
+
791
+ No additional commands are supported.
792
+
793
+ #### Mouse + SHIFT mode
794
+
795
+ No support
796
+
797
+ ---
798
+ ### Duplicate Entity Action
799
+
800
+ Creates duplicate of entity with optional offset and possibility to specify which layer and pen should be applied. Action may be considered as a kind of shortcut for copying via "Move/Copy" action.
801
+
802
+ #### Example Video: https://youtu.be/xSJnC-Mvczw
803
+
804
+ #### Options:
805
+
806
+ 1) **In Place** - flag defines whether entity's duplicate will be created in the same coordinates as original entity or whether it should be with offset. The major purpose of creation of in-place entity - make duplicate of entity in the same position as original, but in active layer
807
+ 2) **Offset X** - if duplicate is created not _In Place_, specifies coordinates offset by x-axis for duplicate entity from original entity.
808
+ 2) **Offset Y** - if duplicate is created not _In Place_, specifies coordinates offset by x-axis for duplicate entity from original entity.
809
+ 3) **Pen** - defines which pen should be applied to created duplicate. Options:
810
+ * **Active** - active pen
811
+ * **Original** - original pen of that was used by original entity
812
+ * **Original Resolved** - resolved pen that was used by original entity (so "By Layer" etc. attributes are not used and actual values are applied)
813
+ 7) **Layer** - defines to which layer created duplicate will be placed
814
+ * **Active** - active layer
815
+ * **Original** - the same layer as layer of original entity.
816
+
817
+ #### Existing Selection:
818
+
819
+ If there are selected entities on actions' invocation, duplicates for them will be created based on previously specified settings.
820
+
821
+ #### Command widget
822
+
823
+ Action is not scriptable, as it requires selection of source entities by mouse.
824
+
825
+ ##### Invocation Command:
826
+
827
+ ```duplicate``` or ```dup```
828
+
829
+ ##### Action Commands:
830
+
831
+ No additional commands are supported.
832
+
833
+ #### Mouse + SHIFT mode
834
+
835
+ No support
836
+
837
+ ---
838
+ ### Line Join Action
839
+
840
+ Joins to selected line to their intersection point. Based on options, action may
841
+ * extend lines
842
+ * add additional segments to intersection point
843
+ * trim line.
844
+
845
+ For lines that lies on the same ray, it is possible to merge them into one line.
846
+
847
+ #### Example Video: https://youtu.be/NCqodd0i_gE
848
+
849
+ #### Options:
850
+
851
+ 1) **Line 1** - defines which operation should be performed with first selected line. Values:
852
+ * **Extend/Trim** - the line will be extended or trimmed, thus so its edge will be in intersection point
853
+ * **Add segment** - the line will not be affected, however, line segment will be created from the edge of line to intersection point
854
+ * **No Change** - line will be not affected.
855
+ 2) **Line 2** - defines which operation should be performed with second selected line. Values:
856
+ * **Extend/Trim** - the line will be extended or trimmed, thus so its edge will be in intersection point
857
+ * **Add segment** - the line will not be affected, however, line segment will be created from the edge of line to intersection point
858
+ * **No Change** - line will be not affected.
859
+ 3) **Attributes** - defines how pen and layer attributes should be applied during joining segments. Options are:
860
+ * **Active** - active pen and layer will be used
861
+ * Line 1 - attributes of line 1 will be applied
862
+ * Line 2 - attributes of line 2 will be applied
863
+ * Both lines - attributes from each line will be applied to corresponding line segment.
864
+ 4) **Create polyline** - defines whether polyline that joins two lines (or segments) should be created or whether individual lines should be used.
865
+ 4) **Remove originals** - defines whether original lines should be removed.
866
+
867
+ #### Existing Selection:
868
+
869
+ No support
870
+
871
+ #### Command widget
872
+
873
+ Action is not scriptable, as it requires selection of source entities by mouse.
874
+
875
+ ##### Invocation Command:
876
+
877
+ ```linejoin``` or ```lj```
878
+
879
+ ##### Action Commands:
880
+
881
+ No additional commands are supported.
882
+
883
+ #### Mouse + SHIFT mode
884
+
885
+ No support
886
+
887
+ ---
888
+ ### Break/Divide Action
889
+
890
+ Action allows to break or divide selected line, arc or circle to segments based on intersection points with another entities.
891
+
892
+ #### Example Video: https://youtu.be/_UHawUJXZe0
893
+
894
+ #### Options:
895
+
896
+ 1) **Remove Segments** - if specified, segment of entity will be removed (so original entity will be split to remaining parts). Otherwise, entity will be divided.
897
+ 2) **Remove Selected** - if segments removal is set, this flag determines which segment should be removed. If set, segment of entity that was selected by mouse that that lies between intersection points will be selected. If not set, selected segment will survive, but other parts of entity will be removed.
898
+
899
+ #### Existing Selection:
900
+
901
+ No support
902
+
903
+ #### Command widget
904
+
905
+ Action is not scriptable, as it requires selection of source entities by mouse.
906
+
907
+ ##### Invocation Command:
908
+
909
+ ```breakdivide``` or ```bd```
910
+
911
+ ##### Action Commands:
912
+
913
+ No additional commands are supported.
914
+
915
+ #### Mouse + SHIFT mode
916
+
917
+ No support
918
+
919
+ ---
920
+ ### Line Gap
921
+
922
+ Action creates gap in specified line.
923
+
924
+ #### Example Video: https://youtu.be/0Y0YsNSZIJA
925
+
926
+ #### Options:
927
+
928
+ 1) **Gap Size** - length of the gap
929
+ 2) **Free** - if enabled, length of gap is not fixed and the user should specify end point of gap
930
+ 3) **Line Snap** - defines how gap start point should be snapped to the line
931
+ * **Free** - any point within selected line, the user should select it
932
+ * **Start** - start point of selected line
933
+ * **Middle** - middle point of selected line
934
+ * **End** - end point of selected line
935
+ 4) **Snap Distance** - distance of snap point from line snap point
936
+ 6) **Gap Snap** - if not _Free_ size gap mode, defines how gap should be positioned to snap point.
937
+ * **Start** - start point of gap will be snapped
938
+ * **Middle** - middle point of gap will be snapped
939
+ * **End** - end point of gap will be snapped
940
+
941
+ #### Existing Selection:
942
+
943
+ No support
944
+
945
+ #### Command widget
946
+
947
+ Action is not scriptable, as it requires selection of line by mouse.
948
+
949
+ ##### Invocation Command:
950
+
951
+ ```gapline``` or ```gl```
952
+
953
+ ##### Action Commands:
954
+
955
+ No additional commands are supported.
956
+
957
+ #### Mouse + SHIFT mode
958
+
959
+ If _Line Snap_ is not _Free_, mirrors edges of line (i.e setting for start edge of line are applied to end edge, and vise versa).
960
+
961
+ ---
962
+ ### Other functionality
963
+
964
+ There is convenient base classes with predefined lifecycles and utility methods:
965
+ 1) Basic class for actions (LC_AbstractActionWithPreview)
966
+ 2) Basic class for action options widget (LC_AbstractOptionsWidget)
967
+
968
+ Also, a couple of convenient utility functions were added:
969
+
970
+ 1) Automatic reopening files that were open during last close of application (controlled by the "Open last opened files" setting on "Defaults" tab in Application Preferences). This is good timesaver for development and debugging, yet it might be useful for users too.
971
+ 2) Setting for defining amount of columns for left toolbar (located in Widget Options). Using this setting, it will be possible to address left toolbar size for small resolutions.
972
+
973
+ **Video** for settings is there: https://youtu.be/_f-mgKy449c
974
+
975
+ ### Ideas for generic improvements
976
+
977
+ There are several issues that might be discussed and implemented:
978
+
979
+ 1) Different way of handling action options widgets lifecycle
980
+
981
+ Such approach does not rely on static fields, as action creates and holds the reference to options widget. Examples - actions within pull request.
982
+
983
+ 2) Better support of relative zero with mouse-based operations.
984
+
985
+ In general, there is support for relative zero point in command (via shortcut and relative coordinates settings).
986
+
987
+ However, it is not possible to snap to relative zero point using mouse (say, use existing relative zero as starting point for line etc.)
988
+
989
+ New actions (where practical) lets the user start the action with relative zero point as initial point (if SHIFT is pressed during mouse move) event.
990
+
991
+ Adding such functionality to existing actions may deliver better user experience and be convenient for the user.
992
+
993
+
ChangeLogs/ARCS_AND_SPLINES_README.md ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This merge request includes the following functionality:
2
+
3
+ ### Arc drawing actions
4
+
5
+ Several actions were added for drawing arcs. These arcs-related actions are:
6
+
7
+ 1) **2 points and Angle** - creates the arc using arc's start point, end point and angle of the arc
8
+ 2) **2 points and Length** - creates the arc using arc's start point, end point and length of the arc
9
+ 3) **2 points and Radius** - creates the arc using arc's start point, end point and radius of the arc
10
+ 4) **2 points and Height** - creates the arc using arc's start point, end point and the height of the arc (the distance between chord and middle point of the arc)
11
+
12
+ Also, support of alternative drawing modes (drawing reversed arc) was added to
13
+ 1) **Draw Arc Center, radius** action
14
+ 2) **Draw Arc by 3 points** action
15
+ 3) **Arc Tangential** action
16
+
17
+ ### Points-related actions
18
+ 1) **Lattice of points** - creates XxY lattice of points
19
+ 2) **Select Points** - selects/deselects point entities in specified window (actually, this is a shortcut for "Select Window" action)
20
+ 3) **Insert to points** - a variant of "Paste" action, that uses selected Point objects as reference points for copied data.
21
+
22
+ ### Selection of entities by type
23
+
24
+ **Select/De-select Window** action was expanded and now the user is able to specify which types of entities should be selected/de-selected using actions options widget.
25
+
26
+ Selection of entities by selecting area in default action is not affected by this change and works as before.
27
+
28
+ ### Spline-related actions
29
+
30
+ Operations with splines were extended by the following actions:
31
+
32
+ 1) **Spline from Polyline** - allows to create spline (or spline by points) from selected polyline
33
+ 2) **Append Point** - allows to append start/end point to existing spline/spline by points
34
+ 3) **Insert Point** - allows to insert control/fit point to existing spline.
35
+ 4) **Delete Point** - deleted control/fit point of the spline
36
+ 5) **Delete between 2 points** - deletes control points between two points of the spline
37
+ 6) **Lines from Spline** - replaces spline by polyline/set of lines. Each segment of spline is replaced by specified amount of line segments (either by one extracted from the document's settings, or by one set explicitly)
38
+
39
+ Also, fit points for Spline by Points now are properly restored from DXF (so they are not lost after save and re-open of the drawing).
40
+
41
+ ### Polyline Append Point
42
+
43
+ The action was fixed (or rather completed), so now it supports appending all segment types supported by polyline, not only line as it was before.
44
+
45
+ ### Default Action
46
+ Now it's possible to de-select entities if SHIFT is pressed at the end of the overlay box selection.
47
+
48
+ ### UI changes
49
+ The structure of menu, toolbars and docking widgets with actions wase chaged to be more precise - so now there are separate categories for points, arcs and splines related actions.
50
+
51
+
52
+ ### Bug Fixes ###
53
+ Fixes for the following issues are included:
54
+ 1) LibreCAD#1950
55
+ 2) LibreCAD#1920
56
+ 3) LibreCAD#1951
57
+ 4) Fix for finding intersection with construction lines.
58
+
59
+ ### Sources Re-layout
60
+ The source code for acs/splines actions was re-layouted for better separation and consistency.
ChangeLogs/Arc1Point and Dimensions PR.md ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This pull request includes several new actions as well as minor fixes.
2
+
3
+ ### Ellipse 1 Point action
4
+ Demo - https://youtu.be/tLHZan4BUUY
5
+
6
+ A couple of command were added for drawing actions
7
+
8
+ 1) **Ellipse (1 Point) Action** - This action allows to create an ellipse with specified major and minor radius of specified lengths.
9
+ The user should specify location of ellipse center.
10
+ The angle of major axis may be set either to fixed value, or be selected by the mouse (free mode).
11
+
12
+ 2) **Ellipse Arc (1 Point) Action** - This actions allows to draw elliptic arc using similar logic as Ellipse (1 Point) action.
13
+
14
+ Also, Draw Ellipse Arc (Axis) was improved and now the user may specify whether arc is reversed or not.
15
+
16
+
17
+ ### Dimension Baseline and Continue Actions
18
+ Demo - https://youtu.be/DHluOAF86k0
19
+
20
+ Two handy actions for creating dimensions were added.
21
+
22
+ 1) **Dimension Baseline Action** - the action creates baseline dimensions base on specified source dimension.
23
+
24
+ The distance between dimensions may be fixed or be specified by the mouse.
25
+
26
+ 2) **Dimension Continue Action** - the allows to create several dimensions that continue selected original dimension.
27
+
28
+ So far only linear and aligned dimensions are supported (no support for angular dimensions).
29
+
30
+ Both actions supports keyboard modifiers:
31
+ - for alternating base extension points that will be used as start points (selected either closer or distant point of original dimension to mouse position);
32
+ - for baseline action, for alternating the offset direction for next dimension.
33
+
34
+ ### Radial and Diametric Dimensions Actions
35
+ Demo - https://youtu.be/dOW5O-37gjo
36
+
37
+ The overall flow for creation of radial and diametric dimensions is improved and made shorter (fewer mouse clicks).
38
+
39
+ Also, it is possible to specify the angle for dimensions and so draw dimensions using uniform style.
40
+
41
+ With CTRL keyboard modifier, the user may adjust the position of the dimension if fixed (not free) angle mode is used.
42
+
43
+ ### Minor Fixes
44
+
45
+ There are some minor fixes well as corrections that address the following issues:
46
+
47
+ 1) #1854 - for print preview, white color is used instead of foreground color for color correction and previewing black/white colors
48
+ 2) #1847 - actually, #1847 is just visual effect of more serious bug in settings system, were negative int values were stored in settings incorrectly. That bug was a side effect of #PR1461
49
+ 3) #1858 - subtle improvement for snap point on Modify Scale action for isotropic scaling
50
+
51
+ ### Persistent Dialogs Positions
52
+
53
+ If corresponding setting is enabled in Action Preferences Dialog, position and size of the dialog is saved.
54
+
55
+ On next invocation the dialog will be shown with stored dimensions and (optionally) in previous position.
ChangeLogs/DIM_ORDINATE_README.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This PR adds support of Ordinate dimension.
2
+
3
+ #### Generic support of the Ordinate Dimension
4
+
5
+ Demo: https://youtu.be/56kGlFMSZlg
6
+
7
+ Common functionality related to Ordinate Dimension was added:
8
+
9
+ 1) Ordinate Dimension entity added (for x and y ordinates)
10
+ 2) Support of ordinate dimension entity was added to DXF reading/writing
11
+ 3) Ordinate dimension properties dialog added
12
+ 4) Support of ordinate dimension was added to informational cursor and entity info widget.
13
+
14
+ Ordinate dimensions supports both WCS and UCS.
15
+
16
+ #### Related actions
17
+
18
+ Several actions related to ordinate dimensions were added (located in Dimensions group):
19
+
20
+ 1) Ordinate - the text command is **"dimord"**. Allows to create new ordinate dimension.
21
+ The origin/definition point of the dimension - zero (0,0) point is located in the origin of the current Coordinate System (UCS or WCS).
22
+
23
+ Therefore, before creation of ordinate dimensions, a proper UCS should be set.
24
+
25
+ 2) Select Ordinates by base - allows the user to pick one ordinate dimension and select all ordinate dimensions within drawing with the same defining point and direction of horizontal.
26
+
27
+ 3) Ordinates Re-base - (command is **"dimordrebase"**). Allows to set the defining point for selected ordinate dimensions to the origin point of the current UCS.
28
+
29
+ This command is useful for editing ordinate dimensions, if either base point was changed, or if dimension entities were moved.
30
+
31
+ 4) "Set UCS by Ordinate Dimension" - this action allows the user to set the UCS that corresponds the defining point and horizontal angle of the selected Ordinate Dimension.
32
+
33
+ ### Other changes
34
+
35
+ 1) Small fix for styling of linear dimensions line (if the text is inline of dimension line)
36
+ 2) Very initial support for DIMSTYLES (this is work in progress)
37
+ 3) Very initial support of other dimension-related entities (also WIP)
38
+
39
+ In general, the next PR will include more changes for dimension entities and actions are planned.
40
+
41
+ ### Small Fixes
ChangeLogs/DIM_STYLES_1_README.md ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Dimension Styles and Context Actions
2
+
3
+ This pull request contains the following major functionality:
4
+
5
+ 1. Initial support of dimension styles.
6
+ 2. Changes in dimension-related actions; new actions for dimension styles.
7
+ 3. Support of the "context entity" by actions.
8
+ 4. Reworked default context popup menu for drawing area; support of entity-specific context menus.
9
+ 5. Reworked Custom Toolbar Creator and Custom Menu Creator; wide support of invocation shortcuts for custom menus.
10
+ 6. Added support of the drawing's metadata (author, title, subject, description, etc.).
11
+ 7. Added support of predefined and custom user data for the drawing document.
12
+ 8. Interactive input of action's parameters and entities properties - Measure Instead of Type.
13
+ 9. Keyboard support improvements; moving selected entities by keys.
14
+ 10. Various minor fixes and improvements.
15
+
16
+ ### Dimension Styles
17
+
18
+ The major focus of this PR is to provide full support of dimension styles reading, editing, and storing by adding DXF parsing and writing functionality, as well as adding UI needed for dimension styles management and editing.
19
+
20
+ **NOTE: Support of rendering of dimensions according to dimension style attributes is STILL LIMITED and NOT ALL attributes of dimension style affect created dimensions!**
21
+
22
+ The logic of dimensions creation should be reworked deeper, and full support of dimension style attributes will be included in the next Pull Request.
23
+
24
+ #### Dimensions Styles Management
25
+
26
+ Dimension styles included in the drawing are managed using the Drawing Preferences dialog, in the Dimensions tab.
27
+
28
+ `XXX_IMAGE`
29
+
30
+ Here the list of dimension styles is present, as well as a set of corresponding related commands, such as:
31
+
32
+ * New Style
33
+ * Remove Style
34
+ * Edit Style
35
+ * Rename Style
36
+ * Mark as Active (so it will be used as default for newly created dimensions)
37
+ * Export/Import
38
+
39
+ A live preview of dimensions with the applied dimension style is also available.
40
+
41
+ #### Editing Dimension Style
42
+
43
+ Editing of the dimension style attributes is performed via a new dialog that contains UI for entering attributes and a preview area that reflects dimension style rendering.
44
+
45
+ `XXX_IMAGE`
46
+
47
+ **Demo Video:** https://youtu.be/bYCbS-gcDR8
48
+
49
+ #### Dimension Entity Properties, Style Override
50
+
51
+ The dialog for dimension entity properties now includes functionality for selecting a dimension style.
52
+
53
+ Also, using that dialog, it is possible to specify a dimension style override. A style override is a set of dimension style attributes that is specific for a particular dimension only.
54
+
55
+ `XXX_IMAGE`
56
+
57
+ **Demo Video:** https://youtu.be/aOacuCBkwFA
58
+
59
+ Using style override, it is possible to fine-tune individual dimension entities.
60
+
61
+ #### Specifying Dimension Style During Dimension Entity Creation
62
+
63
+ The dimension options toolbar now includes a style selection combobox.
64
+
65
+ `XXX_IMAGE`
66
+
67
+ ### Dimension Actions
68
+
69
+ Several changes were introduced to actions related to dimensions.
70
+
71
+ #### New Actions
72
+
73
+ Several new actions related to dimensions were added:
74
+
75
+ 1. **Copy Style Action** - allows you to pick the style from one dimension entity and apply it to another one.
76
+ 2. **Regenerate Dimensions Action** - forcefully re-creates a dimension.
77
+ 3. **Dimension Styles Action** - invokes the Dimension Styles manager.
78
+
79
+ `XXX_IMAGE`
80
+
81
+ **Demo Video:** https://youtu.be/lGD_dR25VOU
82
+
83
+ #### Changes in Dimension Related actions - faster dimensioning
84
+
85
+ 1. For linear dimensions, it's possible to select line entity (that might be standalone or a part of polyline) using context menu or pressed CTRL key.
86
+ Linear, Aligned, Horizontal or Vertical dimension will be created with base points that corresponds to the line start and end points.
87
+
88
+ 2. In action used for creation of Horizontal or Vertical dimension, now it is possible to change direction using CTRL key modifier.
89
+
90
+ **Demo Video:** https://youtu.be/Qt2Q3daDQhU
91
+
92
+ ### Support of "Context Entity" in Actions
93
+
94
+ Now all actions support the notion of a "Context" entity - the entity that is passed to the action on action's invocation.
95
+
96
+ If a context entity is available, the action will be executed for that entity only (regardless of whether a selection is present in the drawing). Also, where possible, the initial entity selection state of the action is skipped, and so the user is not prompted to select an entity for the action's execution.
97
+
98
+ At the moment, the context entity is set to the action via the context popup menu (if the user invoked the menu near an entity).
99
+
100
+ `XXX_IMAGE`
101
+
102
+ However, later this concept may be used, for example, in plugins.
103
+
104
+ #### Context Menu
105
+
106
+ The default popup menu that is shown in the drawing area by a right mouse button click was reworked to include more operations and support more efficient drawing operations. The popup menu in the graphic view is now truly context-aware.
107
+
108
+ There are two major modes of the menu's operation:
109
+
110
+ 1. **Generic Popup menu:** Shown when no selected entities are present and the click is not on an entity.
111
+ XXX_IMAGE
112
+
113
+ 2. **Selection Popup menu:** Show it there are selected entities in the drawing and the click point this is outside of drawing entity;
114
+ XXX_IMAGE
115
+
116
+ 3. **Entity Context menu:** Shown when menu is invoked with a click on an entity.
117
+ `XXX_IMAGE`
118
+
119
+ For the context menu, the structure of the menu is adapted to correspond to the clicked entity type, and it reflects operations that are relevant for the selected entity.
120
+
121
+ `XXX_IMAGE`
122
+
123
+ The entity for the context menu is pre-selected and is passed to the invoked action as a "context" entity.
124
+
125
+ Due to this, the user is not required to select the entity again during the action's invocation, and thus the drawing operation is performed in a more convenient and faster way.
126
+
127
+ **Demo Video:** https://youtu.be/Px-JoJdCJg4
128
+
129
+ ### Custom Toolbar and Custom Menu Creator
130
+
131
+ The Custom Toolbar Creator tool was reworked internally; from a UI point of view, it's a small facelift without significant changes to the functionality.
132
+
133
+ `XXX_IMAGE`
134
+
135
+ The Custom Menu Creator tool was also reworked internally, with a couple of important improvements:
136
+
137
+ 1. Added wider support of invocation shortcuts. The user may specify various key modifiers and mouse buttons that are used for the menu invocation.
138
+ `XXX_IMAGE`
139
+ 2. Assigned invocation shortcuts are visible in the list of menus.
140
+ `XXX_IMAGE`
141
+ 3. Automatic invocation of actions in menus that contain only one action. This mechanism allows the invocation of a specified action using an assigned mouse/keys shortcut.
142
+
143
+ Custom menus are also context-aware; if a menu is clicked on an entity, that entity will be passed to the action.
144
+
145
+ Also, it is possible to create several menus for the same shortcut but for different entity types.
146
+
147
+ **Demo Video:** https://youtu.be/m-RyW-Vq8r4
148
+
149
+ ### Support of Metadata for Drawing
150
+
151
+ It is now possible to manage DXF metadata fields in the Drawing Preferences dialog.
152
+
153
+ `XXX_IMAGE`
154
+
155
+ ### Support of User Data
156
+
157
+ User data of the drawing document are manageable in the Drawing Preferences dialog.
158
+
159
+ `XXX_IMAGE`
160
+
161
+ ### Other Changes in Actions
162
+
163
+ In addition to support of context entity, there are small changes in action workflows:
164
+
165
+ 1. "Select Intersecting Entities" action now allows you to specify an entity, and all entities that intersect it will be selected.
166
+ 2. Linear dimensions actions allow you to select a line for faster creation of the dimension.
167
+ 3. Dim Ordinate Action - if invoked with a context, may snap to a line endpoint or circle/arc center.
168
+ 4. Trim and Trim Two actions - if invoked with a context, consider the provided entity as an entity that should be trimmed.
169
+ 5. Draw Arc Tangential action - if invoked with a context, starts arc creation from the nearest endpoint of the selected entity.
170
+ 6. Draw tangential lines actions - state depends on provided context entity type.
171
+
172
+ **Demo Video:**
173
+
174
+ ### Interactive Input
175
+
176
+ This update introduces a new user experience. The user is now able to measure a value on the drawing instead of directly typing that value into an input field. This makes it possible to enter values that are equal to other geometry values present in the drawing.
177
+
178
+ The following types of values are supported:
179
+
180
+ * Position coordinates
181
+ * Linear value (length)
182
+ * Angle value
183
+
184
+ #### Interactive Input in Tool Options Toolbar
185
+
186
+ The Tool Options toolbar may now include buttons that initiate interactive input of values.
187
+
188
+ There is a setting in the Application Preferences dialog that allows you to enable or disable interactive input support for Tool Options.
189
+
190
+ `XXX_IMAGE`
191
+
192
+ #### Entity Properties Dialog
193
+
194
+ The Entity Properties dialog now includes support for interactive input.
195
+
196
+ `XXX_IMAGE`
197
+
198
+ #### Specifics of Measuring Values
199
+
200
+ When interactive input is initiated, the user is prompted to measure the corresponding value on the drawing.
201
+
202
+ Supported functionality depends on the type of value being measured.
203
+
204
+ ##### Pick Point Coordinates
205
+
206
+ For point coordinates, the user should select a location and click on it. The coordinates of that location will be set to the appropriate inputs.
207
+
208
+ ##### Pick Distance
209
+
210
+ For measuring distance, there are several possible modes:
211
+
212
+ 1. **Major flow:** The user specifies positions of the first and second point; the resulting length is calculated as the distance between these points.
213
+ 2. **SHIFT pressed:** Distance is determined based on the geometry of the object under the mouse cursor:
214
+ * Line - the length of the line is selected.
215
+ * Circle, Arc - the radius is selected. With CTRL pressed - the diameter is picked instead of the radius.
216
+ 3. **CTRL pressed:** For a line under the cursor, the length of the line segment between points of intersections with other entities will be used.
217
+
218
+ ##### Pick Angle
219
+
220
+ Picking the angle value also supports several modes:
221
+
222
+ 1. **Major - 3 points angle:** The user specifies 3 points (edge, intersection, second edge) and the angle is measured as the angle between two lines directed from the edge points to the intersection.
223
+ 2. **Angle of Line:** Click on a line with the CTRL key pressed will pick the angle of the line. If SHIFT is pressed during the click, a supplementary angle (the angle that supplements the line's angle to 180 degrees) will be used.
224
+ 3. **Click on Line with SHIFT key:** Allows the user to select two existing lines and measure the angle between them.
225
+ 4. **2 points angle:** If a 3-point angle measurement is started, and the second point is selected with CTRL pressed, the angle between two points will be selected.
226
+
227
+ Based on the angle selection method, it is possible to pick the measured angle value or the value of its supplementary angle.
228
+
229
+ **Demo Video:** https://youtu.be/GvpN6Y6PQsk
230
+
231
+ #### Point Coordinates Info Action
232
+
233
+ An additional Info action was added - **Point Coordinates**. This action allows the user to select a point on the drawing, and its coordinates are added to the command widget.
234
+
235
+ `XXX_IMAGE`
236
+
237
+ ### Keyboard Support Improvement
238
+
239
+ Support for keyboard was slightly improved (though focus management still requires polishing). Changes are:
240
+
241
+ 1. Better visual support of setting Free Snap via the SPACE key (if enabled by settings).
242
+ 2. Scrolling the drawing area by pressing LEFT, RIGHT, UP, or DOWN keys.
243
+ 3. Zoom in/out by + and - keys.
244
+ 4. Moving currently selected entities by keyboard.
245
+
246
+ Keyboard support for scroll and moving selected objects may be enabled/disabled via the appropriate setting in the General Preferences dialog.
247
+
248
+ `XXX_IMAGE`
249
+
250
+ #### Moving Selected Objects by Keyboard
251
+
252
+ If there are selected entities within the drawing, their position may be adjusted via the keyboard. Depending on the used modifiers, the offset for moving entities is calculated differently. The offset depends on the current grid size and meta grid step.
253
+
254
+ The offset is calculated as follows:
255
+
256
+ 1. **SHIFT + DIRECTION_KEY:** Default mode. The offset is the width of the current grid cell in the specified direction.
257
+ 2. **CTRL + DIRECTION_KEY:** Precise mode. The offset is the current grid cell size divided by the meta-grid step value. Used for fine-tuning.
258
+ 3. **CTRL + SHIFT + DIRECTION_KEY:** Fast mode. The offset is the current grid cell size multiplied by the meta-grid step value. Used for faster, rough positioning.
259
+
260
+ Where **DIRECTION_KEY** is one of the **LEFT / RIGHT / UP / DOWN** keys.
261
+
262
+ **Demo Video:** https://youtu.be/frAccXDuTIk
263
+
264
+ ### Various Minor Fixes and Improvements
265
+
266
+ 1. Displaying tooltips with toolbar name (plus setting in General Preferences).
267
+ 2. Support of the user-defined step of the meta-grid (GRIDMAJOR) - with a corresponding setting in General Preferences.
268
+ 3. Default location of custom icons engine is added as library path (directory is APP_DIR + "/iconengines"), so if icon engine dll is located there icon theeming settings should work.
269
+ 3. Lots of small polishings and minor improvements.
270
+
271
+ ### Changes in General Preferences
272
+
273
+ 1. Added option for meta-grid step.
274
+ 2. Added option for displaying tooltips for toolbars.
275
+ 3. Added option for enabling/disabling interactive input controls in tool options toolbars.
276
+ 4. Added option for enabling/disabling moving entities via keyboard.
277
+
278
+ XXX_IMAGE
279
+
280
+ #### Widget Preferences
281
+
282
+ Added an option that controls whether buttons for interactive input should be flat or not.
283
+
284
+ ### Fixed Issues
285
+ 1) LibreCAD#2144
286
+ 2) LibreCAD#2174
287
+ 3) LibreCAD#2177
288
+ 4) LibreCAD#2190
289
+ 5) LibreCAD#2194
290
+ 6) LibreCAD#2197
291
+ 7) LibreCAD#2198
292
+ 8) LibreCAD#2199
293
+ 9) LibreCAD#2203
ChangeLogs/ENTITY_INFO_WIDGET_README.md ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Entity Info Widget
2
+
3
+ This is a small yet handy dockable widget. It is focused on two major functions:
4
+ 1) Displaying properties of selected entity in quick manner;
5
+ 2) Collection of arbitrary coordinates picked from drawing.
6
+
7
+ Thus, the widget operates in two modes.
8
+
9
+ ### Demo Video
10
+
11
+ Small demo clip that illustrates the widget functions is located there: https://youtu.be/H06BQGNLBQ4
12
+
13
+ #### Common operations
14
+ There are several common operations for both modes:
15
+
16
+ 1) Clearing displayed content;
17
+ 2) Copying displayed content to clipboard.
18
+ 3) Setting relative zero for coordinate value
19
+ 4) Highlighting points with specific displayed coordinate in drawing;
20
+ 5) Support of various coordinates modes;
21
+ 6) Support of context popup menu on view widget by right mouse button (additional menu items are shown if menu is invoked on link).
22
+
23
+ ### Entity Info Mode
24
+
25
+ This mode of widget is used for displaying the set of properties for selected entity.
26
+
27
+ #### Entity Selection
28
+
29
+ Properties are shown to one entity only. Entity may be selected either (according to setting):
30
+
31
+ 1) If no specific action is in progress (so default action is executed) - just as entity under mouse cursor;
32
+ 2) For entity under cursor in default action if CTRL/META key is pressed together with mouse move;
33
+ 3) By explicit selection via action provided by the widget.
34
+
35
+ Supported way of entity's selection is controlled by appropriate settings.
36
+
37
+ #### Selected Entity
38
+ As soon as the entity is selected, the widget displays set of entity properties.
39
+
40
+ The list of properties depends on type of selected entity.
41
+
42
+ Using options, it is possible to define whether:
43
+ 1) Entity boundaries (minV, MaxV) should be shown;
44
+ 2) For polyline entity - whether detailed information about polyline segments (lines and arc) should be shown in addition to vertexes.
45
+
46
+ Property values that represent coordinates may be used for setting new position of relative zero.
47
+
48
+ Also, it is possible to insert coordinates and single values of properties to input control of Cmd widget.
49
+
50
+ Additional operations:
51
+ 1) Selection of entity that is used for displaying properties in drawing.
52
+ 2) Invocation of Edit Properties dialog for selected entities.
53
+
54
+ #### Coordinates View Mode
55
+ For the entity, all relevant coordinates may be shown either as:
56
+ * absolute ones
57
+ * relative to relative zero point.
58
+
59
+ #### NOTE: Outdated entity info
60
+ In some cases, displayed properties of entity may be outdated. The most possible reason for this - editing of entity via different operations.
61
+ So far internal technical implementation does various operations on individual actions level, therefore it is technically challenged to insure proper realtime refreshing entity properties.
62
+
63
+ Therefore, in order to see the actual properties of entities after editing operations, it better to select respecting entity again.
64
+
65
+ ### Coordinates Mode
66
+
67
+ This mode of the widget allows to pick the set of coordinates from the drawing for later use.
68
+
69
+ #### Coordinates selection
70
+
71
+ Coordinates selection is performed via appropriate action invoked from the widget interface. For picking the coordinate, the user should do mouse click in specific location.
72
+
73
+ Actually picked coordinate is extracted according to currently used snap mode.
74
+
75
+ If *SHIFT* key is pressed, FREE snap is used.
76
+
77
+ #### Coordinates list
78
+ This mode, the widget displays zero point (that depends on used coordinates mode) and the list of picked coordinates.
79
+ Also, the total length of path between selected points is displayed.
80
+
81
+ Based on settings, the list of coordinates may also include distance and angle from zero point to each picked coordinate.
82
+
83
+ #### Operations with coordinates
84
+ In addition to picking specific coordinate, the following operations are supported:
85
+ 1) Copying all displayed content to the clipboard;
86
+ 2) Removing specific coordinate (available via popup content menu);
87
+ 3) Inserting coordinate in specific position of the list (available via popup content menu);
88
+ 4) Highlighting coordinate on drawing;
89
+ 5) Setting relative zero point in specific coordinate.
90
+
91
+ #### Coordinate View mode
92
+ For coordinates mode, collected coordinates may be displayed in several ways, as:
93
+ * Absolute coordinates;
94
+ * Relative coordinates to relative zero point;
95
+ * Relative coordinates to first picked point in the list;
96
+ * Relative coordinate to previous picked point in the list.
97
+
98
+ ### Settings
99
+ Using settings, it is possible to control:
100
+ 1) Integration of the widget with default action and entity selection way;
101
+ 2) Entity display options (boundary coordinates, polyline details)
102
+ 3) Displaying distance/angel for collected points;
103
+ 4) Preview for collected point;
104
+ 5) Pen used for highlighting coordinate values.
105
+
106
+ ### Misc notes
107
+ At the moment, the content is copied to the clipboard in the same format as it is displayed by the widget.
108
+ However, if it will be useful, support of additional formats (csv, xml etc.) may be added (as well as support of saving it to some file).
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
ChangeLogs/ICONS AND WORKSPACES README.md ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Styled icons and workspaces support
2
+
3
+ This PR is concentrated on generic UI and face-lifting, and includes support of
4
+ 1) Styled icons
5
+ 2) External icons
6
+ 2) User-defined workspaces
7
+ 3) Application preferences exchange (export/import).
8
+
9
+ ### Demo
10
+
11
+ https://youtu.be/mbYkwPAdKJU - icons styling
12
+
13
+ https://youtu.be/FwvXs1eDYBA - workspaces
14
+
15
+ ### 1) Styled Icons
16
+
17
+ Now the user may specify the color scheme of icons. That's convenient for users with non-standard windows color scheme (dark etc.), where default LibreCAD look non-naturl.
18
+
19
+ Now each icon, used by LibreCAD is in SVG format (except splash images and cursors, which are PNG).
20
+
21
+ All SVG icons were reviewed and optimized.
22
+
23
+ #### Colors Substitution
24
+
25
+ It is assumed that each item should include 3 customizable colors:
26
+
27
+ 1) Main - originally black - SVG color value is "#000"
28
+ 2) Accent - originally green - SVG color value - is "#00ff7f"
29
+ 3) Background - originally white - SVG color value is "#fff"
30
+
31
+ #### Icons Styling Setup
32
+
33
+ Using UI in "Widget Options"->"Icons Styling", the user may specify new values of these color.
34
+
35
+ Also, via "Widget Options"->"Advanced Styling", its is possible to specify color values for icons in different Modes (Normal, Active, Disabled, Selected) and states (On, Off).
36
+ This allows to achieve more interactive feedback from icons in different states as well as address icons visibility issues.
37
+
38
+ ### 2) External Items
39
+
40
+ The user may specify location of the folder where external icons may be stored. If icons found in that location, it will **OVERRIDE** default icon.
41
+
42
+ Name of the icon should match the name of the original icons.
43
+
44
+ Support of icons for different modes and styles is performed via naming of images, with generic format of icon name as:
45
+
46
+ **{BASE_NAME}\_{MODE}_{STATE}.{EXT}**
47
+
48
+ Where
49
+ 1) **BASE_NAME** - base name of icon (like "circle")
50
+ 2) **MODE** - suffix for desired icon mode. Supported values are:
51
+ * normal
52
+ * active
53
+ * disabled
54
+ * selected
55
+ 2) **STATE** icon state. Values are:
56
+ *on
57
+ *off
58
+ 3) **EXT** extension. Supported extensions are:
59
+ * svg - ordinary svg file. No colors substitutions will be applied.
60
+ * lci - svg file. However, the same colors substitution as described above will be applied to the icon.
61
+
62
+ *MODE* and *STATE* components are optional. If they omitted, the icon will be applied for all modes and states.
63
+
64
+ It is possible ot override icon via external file only for specific state of the image (say, normal and on (pressed button)).
65
+
66
+ Such scheme allows to replace built-in icons by the user-provided external ones.
67
+
68
+ #### Example of naming:
69
+
70
+ Original built-in image path: ":/icons/angle_3_points.svg"
71
+
72
+ Name of external icon that will override built-in image (for normal and pressed button state):
73
+
74
+ *<OVERRIDES_DIR>/icons/angle_3_points_normal_on.svg*
75
+
76
+ or
77
+
78
+ *<OVERRIDES_DIR>/icons/**angle_3_points_normal_on.lci***
79
+
80
+ Where OVERRIDES_DIR is path to external icons.
81
+
82
+ #### Persistent Icons Styles
83
+
84
+ The set of icons styling settings may be saved as named style.
85
+
86
+ Styles are saved in external files. Internal format is JSON and extension is "**.lcis**".
87
+
88
+ These files are located in icons overrides directory, therefore if directory is not set - support of styles is disabled.
89
+
90
+ It is possible to exchange icons styles between users just by copying style files.
91
+
92
+
93
+ ### 3) Icons Engine - developers note
94
+
95
+ Support of icons styling was implemented via custom implementation of QIconEngine (with internal implementation similar to built-in QSVGIconEngine).
96
+
97
+ That custom IconEngine is packed as standard QT icon engine plugin.
98
+
99
+ That icon engine handles SVG images but with "**.lci**" extensions. Therefore, while in /res directory icons in SVG format are stored, the QT-resources file includes alias for each icon.
100
+
101
+ That alias is name of the icon with "**.lci**" extension. The code that refers to icon resources (.ui files, c++ files) requests icons by alias (i.e. as resource with "**.lci**") extension instead of "**.svg**".
102
+
103
+ Functionality of custom Icon Engine is located in **/libraries/lciconengine**.
104
+
105
+ On deploy/installation, it should be built as DLL for Windows (or shared lib for other platforms) and be installed to the direction where svgiconengine.dll is deployed (i.e *\LibreCAD\iconengines\*").
106
+
107
+ For development purposed, icon engine plugin might be also installed into QT (near to SVGIconEngine plugin).
108
+
109
+ If icon engine plugin is not installed - the '.lci' resources will be handled by standard QT SVG icons plugin - and, of course, colors substitutions will not work.
110
+
111
+ **NOTE:**
112
+
113
+ So far, only QT project support build of icon engine plugin.
114
+
115
+ CMake build - **DOES NOT SUPPORT** creation of DLL/shared libraries.
116
+
117
+ Deployment, installation script - **DOES NOT SUPPORT** proper deployment of icon engine plugin to the installation package.
118
+
119
+ Here an additional support in creation proper buid/deployment scripts is needed.
120
+
121
+ ---
122
+ #### NOTE REGARDING INSTALLATION PACKAGE:
123
+
124
+ Just a couple of ideas how icons styling may affect the installation package (they are not implemented).
125
+
126
+ ##### Source icons as part of installation package
127
+
128
+ It is quite reasonable to add original icons as archive to installation layout.
129
+ That will let the ordinary user to understand the name of each icon and override it, if necessary, without trying to find the icon in sources of the application.
130
+
131
+ ##### Default Styles
132
+
133
+ Potentially, it is possible also to include some template icons override directory into installation as well as add several predefined styles into it.
134
+
135
+ ---
136
+
137
+ #### How to add icons to the codebase
138
+
139
+ Here is the description of adding icons so that colors substitution/external icon override will be supported:
140
+
141
+ 1) Create SVG (as before), ensure that colors within that SVG corresponds to colors used for colors substitution (Main - "**#000**", Accent - "**#00ff7f**", Background - "**#fff**").
142
+ 2) Optimize SVG - for example, using SVGCleaner - https://github.com/RazrFalcon/svgcleaner
143
+ 3) Store icon in needed location under /res directory
144
+ 4) Add icon to resources file (.qrc)
145
+ 5) Add alias for icon (name of file + .lci)
146
+ 6) Refer icon resources from .ui or code using alias.
147
+
148
+ **Important!**
149
+
150
+ Icons should be initialized **AFTER** qApp macro start returning not-null value (in other workds, QCoreApplication::instance() is initialized).
151
+
152
+ If initialization is performed earlier - loading icons from external direction will not work.
153
+
154
+
155
+ ### 5) Icons size control
156
+
157
+ Using "Preferences->Widget options" dialog, the user may preform fune-tuning sizes of buttons that are shown in:
158
+
159
+ 1) Toolbars
160
+ 2) Left Sidebar Panel (Dock widget with commands)
161
+ 3) Toolbars in Docking widgets that are docked to right (like Layer list, Block list etc.)
162
+
163
+ Also, it's possible to specify whether buttons in left sidebar and buttons in doc widgets on right should be flat (auto-rise) or not.
164
+
165
+ ### 6) Support of Workspaces
166
+
167
+ Support of workspaces was added.
168
+
169
+ Workspace represents just a named configuration of window size as well as positions of widgets that are visible on the screen.
170
+
171
+ Workspaces allows the user to optimise UI of the application and make it more suitable for specific tasks (i.e - editing, inspecting drawings, adding dimensions etc.).
172
+
173
+ ### 6) Support of extended main menu
174
+
175
+ Now the user may control the state of the main menu and select between 3 forms of the menu
176
+ 1) default one (with lots of commands packed to "Tools" menu
177
+ 2) expanded compact - where instead of using single "Tools" menu, all commands are grouped into more focused "Draw", "Modify", "Dimensions" and "Info" menus.
178
+ 3) expanded to entity group - as previous, yet command in "Draw" menu are expanded to individual menus that corresponds to the entity's type.
179
+
180
+ The type of the manin menu to be shown is controlled by settings in Application Preferences -> Defaults tab.
181
+
182
+ Widgets and Drawings menus were combined into "Workspaces" menu.
183
+
184
+ ### 7) Settings Exchange
185
+
186
+ Now it's possible to export Application Preferences to external file and import them back.
187
+
188
+ Format for file is human-readable, it's just an ordinary JSON.
189
+
190
+ This functionality is located in Application Preferences -> Paths.
191
+
192
+ ### 8) Issues addressed
193
+
194
+ The following issues were addressed by PR:
195
+
196
+ LibreCAD#102
197
+
198
+ LibreCAD#752
199
+
200
+ LibreCAD#1144
201
+
202
+ LibreCAD#1929
ChangeLogs/INFO_CURSOR_README.md ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This pull requests is focused mostly on adding more interactivity and information to drawing operations.
2
+
3
+ ### Informational Cursor
4
+ Well, while the term may be not the most straightforward one, the idea behind it is quite simple - provide the user with additional context aware feedback.
5
+
6
+ That feedback displayed by overlay, that is associated with current cursor position.
7
+
8
+ That functionality should assist new users understand the functionality of specific actions.
9
+
10
+ Also, it allows to save some space on the screen by disabling several duplicated widgets (Coordinates Widget, Mouse Widget) from status bar (if status bar is in floating mode).
11
+
12
+ #### Zones and shown information
13
+
14
+ Informational cursor includes several zones:
15
+
16
+ 1) Zone 1 - current coordinates of snap point
17
+ 2) Zone 2 - displays information about current snap mode/restrictions, as well as properties of caught entity, properties of entity to be created or action-specific information.
18
+ 3) Zone 3 - displays relative coordinates of snap point
19
+ 4) Zone 4 - displays name of active action, command prompt and information about modifiers keys.
20
+
21
+ #### Settings
22
+ The content and appearance of informational cursor is controlled by settings in Application Preferences.
23
+ It is possible to disable either specific zones or the complete informational cursor displaying.
24
+
25
+ #### Informational cursor toolbar
26
+ For the convenience of quick enabling/disabling specific zones of informational cursor, an additional toolbar was added.
27
+
28
+ #### Quick object properties
29
+ An action was added that allows to display properties of the object in informational toolbar.
30
+
31
+ ### Other Features
32
+
33
+ There are several other features that are included into this merge request:
34
+
35
+ 1) Added option for controlling whether text/mtext should be drawn as draft during panning operations or not
36
+ 2) Flip Horizontally / Flip Vertically was added to Mirror Operation (available if "mirror to line" is selected)
37
+
38
+ ### Bug fixes
39
+ The following issues were fixed
40
+ LibreCAD#1983 (and probably LibreCAD##1984)
41
+ LibreCAD#1973 - Changing of relative point position is now undoable
42
+ LibreCAD#1972 - regressing for PDF export
ChangeLogs/LAYER_TREE_VIEW.md ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Layer Tree View Widget Overview
2
+
3
+ ### The Problem
4
+
5
+ Some complex drawings may include lots of layers. Also, one layer may be used for single part/view, and separate layers
6
+ may be used for dimensions, alternative position of part or for some additional meta information (notes, sketches and so on).
7
+
8
+ If some parts belong to some units, it is convenient to name layers for such parts in uniform way, or, what is even
9
+ better, organize hierarchy of layers.
10
+
11
+ Unfortunately, DXF format does not support hierarchy of layer as well as LibreCAD (so far).
12
+
13
+ Even with plain list of layers it is possible to use logical grouping or layers - by relying on some common
14
+ logical prefix in their names. However, while artificial naming of layers simplifies layers related operations a bit,
15
+ it is still limited.
16
+
17
+ ### The Solution
18
+
19
+ In order to provide more convenient way of working with layers, support of hierarchical layers was added and implemented
20
+ in Layer Tree widget. The widget is similar to standard Layer List widget, yet brings a bit more functions.
21
+
22
+ Layers hierarchy is built purely based on naming convention, which assumes that some uniform substring is used as separator
23
+ of layer's levels).
24
+
25
+ In addition to support of hierarchical view of layers, the widget adds some additional features that are listed below.
26
+
27
+ ### Features
28
+
29
+ Here is a brief list of features, implemented in widget
30
+
31
+ ### General
32
+ * Two modes of layers displaying - hierarchical (tree) and flat (list)
33
+ * Regexp-based filter, that allows to filter layers OR highlight layers that matches regexp string
34
+ * Drag&Drop restructure
35
+ * Group operations on layers hierarchy
36
+
37
+ Several predefined layer types are supported:
38
+ * Normal (ordinary layer)
39
+ * Dimensional (stores dimensions for corresponding normal layer)
40
+ * Informational (for notes and sketches)
41
+ * Alternative position (same part but located in different position)
42
+ * Virtual - holder for layers of other types, may be considered as something similar to folder
43
+
44
+ #### Toolbar Actions
45
+ * Show all Layers
46
+ * Hide all Layers
47
+ * Show/Hide Secondary layers
48
+ * Show Active layer Only
49
+ * Expand All Items (Tree mode)
50
+ * Collapse All Items (Tree Mode)
51
+ * Collapse Secondary Layers (Tree Mode)
52
+ * Lock All Layers
53
+ * Unlock All Layers
54
+ * Add layer
55
+ * Add Dimensional layer
56
+ * Remove Active Layer
57
+ * Edit Active Layer
58
+
59
+ #### Filtering Box
60
+ * If Highlight Mode check is selected, items that matches provided regexp will be highlighted in the list.
61
+ * Otherwise - only layer items that matches regexp will be shown in the list.
62
+
63
+ #### Layers Tree View
64
+ * Displaying logical structure of layers based on naming convention
65
+ * Icons that display type of layer
66
+ * Columns for layers flags (frozen, locked, print enabled, construction)
67
+ * Support of **GROUP operations** on flags - i.e. click on top layer flag also is applied on descendant layers
68
+ * Drag&Drop for restructuring hierarchy
69
+ * Double-click on virtual layer item - expands children
70
+ * Double-click on actual layer item - invokes Layer Edit dialog
71
+ * Item-aware context menu
72
+ * Customizable appearance (colors, items displaying)
73
+ * Showing full layer name as tooltip
74
+ * Optional indentation of layer names according to the level in hierarchy
75
+
76
+ #### Operations With Layers
77
+ * Layer creation (with support of **default pen** for specific layer type)
78
+ * Layer editing
79
+ * Hierarchy-aware layers rename (mass rename of descendent children based on parent layer)
80
+ * Single layer removal
81
+ * Hierarchy-aware layers removal (layer and its children, or children only)
82
+ * Add child layers with predefined type
83
+ * Change of layer type
84
+ * Freeze all layers **except** selected
85
+ * **Copy** of layer (hierarchy aware) - copies the structure of layers with attributes copy)
86
+ * **Duplicate** Layer (hierarchy aware) - copies the structure of layers with attributes copy **AND** copies entities from
87
+ source levels to their copies
88
+ * Removing empty layers without entities
89
+
90
+ #### Operations with entities
91
+ * Select layer entities (hierarchy aware)
92
+ * Move current entities selection to layer
93
+ * Copy current entities selection to layer
94
+
95
+ #### Customization options
96
+ * Naming convention, that defines string used as separator of layer levels and set of prefixes that are used to identify
97
+ particular layer type
98
+ * Prefix and suffix for autogenerated names that may occur in order to prevent layer name's duplication
99
+ * Colors (highlighted matched item, grid, background for virtual layer, background for selected item, background for active layer)
100
+ * Minor UI adjustments options (tooltips, drag&drop support, names indentation, layer type options)
101
+ * **DEFAULT PEN** for each layer type - that pen will be set in layer creation dialog
102
+
103
+ #### Implementation notes
104
+
105
+ This is pure UI implementation that does not affect internal structures of layers or underlying storage format. Original
106
+ plain layers list is not affected and two widgets may be used in parallel.
107
+
108
+ The current implementation tried to affect existing codebase as minimal as it is possible and minimize refactoring of the
109
+ existing codebase in order to avoid introducing regression issues.
110
+
111
+ No additional libraries or dependencies were added, it's just plain C++/QT code with comments.
112
+
113
+ While such approach allows to have quite isolated and self-contained implementation, it is not clear how does it fit in
114
+ general architecture of the existing code.
115
+
116
+ Possible candidates for further refactorings (if it will be reasonable) - classes for actions, code for working with
117
+ entities, original layers list (RS_LayersList).
118
+
119
+ #### Localization
120
+ All strings used are localizable, yet it is necessary to create actual language-specific values for them.
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
ChangeLogs/MORE_ACTIONS_AND_FIXES.md ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This pull requests is focused mostly on adding drawing modification actions and fixing bugs.
2
+
3
+ ### Modification actions
4
+
5
+ There are several nice actions, which are quite simple but which are very helpful and convenient for positioning entities.
6
+
7
+ #### Align
8
+
9
+ A really handy action that allows aligning selection vertically and horizontally to entity, coordinate or drawing.
10
+
11
+ #### Align Single
12
+
13
+ Another variation of entities align that allows to align individual entities one by one to designed base entity or point.
14
+
15
+ #### Align Reference Points
16
+
17
+ Powerful transformation action, allows to move\rotate\scale selected entities transforming them based mapping 2 source points to 2 target points.
18
+
19
+ ### Drawing Actions
20
+
21
+ Several utility drawing actions were added:
22
+
23
+ #### Middle Point
24
+ Creates point in the middle of line between start and end point. Might be considered as a shortcut for Snap Middle Manual, except that it a bit simpler to invoke and allows to specify the amount of middle points.
25
+ The major purpose for such action - use points as corner snaps for further drawings.
26
+
27
+ #### Middle Line
28
+ Simple action that draws line that connects middle points of lines between endpoints of two lines (with specified offset of endpoints). The major purpose for this action is to simplify drawing axis for parallel lines (say, for bi-section of the hole or cylinder), however, it may be also used for other geometrical drawings.
29
+
30
+ #### Bounding Box
31
+ Simple action that allows to draw either bonding box around entity or selection (with specified offset), or just draw a points in the corners of the box.
32
+
33
+ ### Polygon Actions
34
+ All actions that draws polygons now supports:
35
+ 1) Rounded corners of created polygon;
36
+ 2) Entire polygon drawn by polyline.
37
+
38
+ Also, the action that allows creation of polygon by 2 points (either Side/Side of edge Or by Vertex/Vertex) was added.
39
+
40
+ ### Creation of entities COPIES in default action
41
+
42
+ If CTRL is pressed during mouse button release after dragging selected entities in default action, instead of moving original entities (which is normal behavior), a copies of them will be created in new location.
43
+
44
+ ### More natural positioning for Text/MText
45
+ Now it's possible to move these entities using insertion points/second point which now are used as first-class handles. This allows to position texts that use different text alignment easily.
46
+
47
+ ### Other changes
48
+
49
+ 1) Draw method is added for construction line entity, reference construction line for preview is supported.
50
+ 2) Layout of some source files was changed.
51
+ 3) All entities modification actions that allows the user to select entities first, now supports bulk window selection mode in addition to individual entity selection mode.
52
+ 4) Setting was added to the Application Preferences that controls whether entities that were modified should stay selected after modification or not.
53
+ 5) Preview mode for snap middle manual operation was improved.
54
+
55
+ ### Issues fixed
56
+ #1937
57
+ #1944
58
+ #1949
59
+ #1948
60
+ #1952
61
+ #1957
62
+ #1959
63
+ #1968
64
+ #1969
ChangeLogs/NAMED VIEWS README.md ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This pull request is focused on adding initial support of persistent named views as well as some minor improvements.
2
+ They ara listed below:
3
+
4
+ ### Named Views
5
+ The following functionality was added:
6
+
7
+ 1) Support of VIEW table on DXF level (read/write)
8
+ 2) Dockable widget "Named Views" for views management
9
+ 3) "Named Views" toolbar for saving/restoring views
10
+ 4) Actions for quick restoring of 5 top views via shortcuts (default shortcuts were not set for them, however)
11
+
12
+ Of course, only 2D views are supported (no 3D).
13
+
14
+ So far, named views for paper space are supported partially - if they are created outside LibreCAD, they are parsed, shown in the widget and saved back to DXF.
15
+ However, so far they can't be created within LibreCAD and there is no navigation to paper space view.
16
+
17
+ Implementation of named views on DXF level is interoperable at least with QCAD (so QCAD and LibreCAD can properly open files with named views).
18
+
19
+ Interoperability with other CAD software (AutoCAD, Draftsight etc.) for named views should be tested.
20
+
21
+ ### Action Icon in Options Widget
22
+
23
+ Now it's possible to specify via application preferences that the icon for active action should be shown in options widget too.
24
+ This allows to hide Mouse Widget (if status bar is not in "classic" mode) if needed, as its functionality is duplicated by bottom status bar and options widget.
25
+
26
+ ### Variables Viewer
27
+
28
+ Drawing Preferences dialog was extended and "Variables" tab was added. On that tab there is a table that lists all variables of the drawing as well as their values.
29
+
30
+ ### Localization
31
+
32
+ Localization files were regenerated to reflect latest changes in the codebase.
33
+
34
+ ### Source Code layout
35
+ The additional sub-directories were added for source code in /lib/engine in order to have more specific and focused source code files hierarchy.
ChangeLogs/PEN_PALETTE_README.md ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Pen Palette Widget
2
+
3
+ The small yet nice widget improves way of dealing with pen attributes.
4
+
5
+ It provides possibility to manage a list of named pens and perform various operations related to them, as well as selecting entities and applying pen attributes to selection.
6
+
7
+ In addition to this, feature contains improvements for current color comboboxes, allowing better displaying of current (and user-picked color).
8
+
9
+ Demo for the widget is located on YouTube here: https://youtu.be/YSU0K3-PfbI
10
+
11
+ ### Widget Structure
12
+ The widget is standard dockable widget. UI of it includes several sections:
13
+
14
+ 1) toolbar with set of actions
15
+ 2) pen editor area (pressing Enter in pen's name saves pen)
16
+ 3) filter section with regexp expression (that is used for items filtering/or highlighting according to provided regexp)
17
+ 4) table view with list of items.
18
+
19
+ ### Major Features
20
+
21
+ 1) Managing list of named pens (creation, editing, remove or multi-remove of pens);
22
+ 2) Persistent storage of created pens;
23
+ 3) Filtering or highlighting pens in the list according to provided regexp string (with optional case-insensitive match);
24
+ 4) Support of "Unchanged" value for pen attributes as "any value", allowing partial pen match operations.
25
+ 5) Support of "By Layer" and "By Block" pen attributes
26
+
27
+ #### Operations supported
28
+ 1) Selection of entities - by specified pen attributes by matching entity's pen attributes and specified pen attributes. Logical AND operations is used and particular match via "unchanged" values of pen's attributes that are considered as "any matched" is supported.
29
+ 2) Selection of entities - by specified **DRAWING** pen attributes (i.e - by actual appearance of the entity described by "resolved" pen)
30
+ 3) Picking pen - from selected entity's attributes for further editing or storing;
31
+ 4) Picking DRAWING pen - from selected entity for further pen's editing or storing;
32
+ 5) Applying pen - to selected entities (this is similar to "Modify Attributes" action, yet probably is a bit more convenient);
33
+ 6) Picking pen - from active pen (Pen Tool Bar) for editing or storing;
34
+ 7) Setting active pen - in Pen Toolbar by pen from widget (from pen's editor or from table item);
35
+ 8) Setting active pen - pen from active layer is applied to current pen in Pen Tool Bar
36
+ 9) Picking pen - from active layer (for editing or storing);
37
+ 10) Setting pen - for active layer;
38
+ 11) Creation, Editing, Removing individual named pens.
39
+ 12) Operations may be invoked either from widget's toolbar or via context menu on pens table.
40
+
41
+ ##### Various features
42
+
43
+ Options dialog that supports:
44
+
45
+ 1) Customizable columns in table view;
46
+ 2) Various ways of displaying color names (rbg, hex, color names);
47
+ 3) Optional tooltip with pen info for table view;
48
+ 4) Customizable double-click on pen item operation;
49
+ 5) Customizable UI colors for widget table
50
+ 6) Customizable path for pen's storage
51
+
52
+ ### Implementation
53
+
54
+ Standard QT/C++, no additional dependencies/libraries are introduced. During implementation, one of the goals was minimization of existing codebase affecting in order to eliminate possible regressions.
55
+ Strings withing code are localizable via ::tr(), specific translations for languages are needed.
56
+
57
+
ChangeLogs/RELATIVE_POINT_ETC_README.md ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This pull request includes various functionality in different areas, as well as fixes, improvements and new actions.
2
+
3
+ Most notable changes are below.
4
+
5
+ ### Entities Highlighting
6
+
7
+ Demo - https://youtu.be/5w2fVDpUGQQ
8
+
9
+ Highlighting of entities on mouse move or mouse selection was expanded.
10
+
11
+ There are new options in options dialog, that controls whether:
12
+ 1) entities are highlighted on mouse move;
13
+ 2) start/stop endpoint indicators should be shown for highlighted entities.
14
+
15
+ Overlay-based highlighting was added in addition to the original one.
16
+
17
+ Due to that, highlighting may be applied to individual entities within containers (like segments of polyline) as well as have better visual appearance of highlighted entities (especially, with large line widths).
18
+
19
+ ### Support of keyboard modifiers in actions
20
+
21
+ Demo - https://youtu.be/wDSFxoWt1gw
22
+
23
+ All drawing actions now have additional support of keyboard modifiers (SHIFT, CTRL).
24
+
25
+ The functionality of action is extended, if keyboard modifier is pressed during mouse-move or mouse click events.
26
+
27
+ However, some specific actions processes keyboard modifiers in their own specific way (like performing lengthen operation or repeating paste operation).
28
+
29
+ For providing the user with additional hint that keyboard operations are available for currently executed action, UI of the Mouse Widget is extended.
30
+
31
+ If support of keyboard modifier is supported by the current state of active action, appropriate icon is shown as part of Mouse Widget.
32
+
33
+ Hint on that icon provides description for details of operation that may be performed with corresponding pressed key.
34
+
35
+ ### Support of Snap to Relative Point and Angle Snap
36
+
37
+ Demo - https://youtu.be/wDSFxoWt1gw
38
+
39
+ Now most actions allows to perform where it is reasonable by the action's context:
40
+ 1) Snap to relative point position;
41
+ 2) Perform angle snap to context-specific point (say, start of line). The value of single step for angle snap is defined by options (1,3,5,15 degrees).
42
+
43
+ In order to perform such snaps, specific keyboard modifier (CTRL or SHIFT key) should be pressed together with mouse operation (move, click);
44
+
45
+ ### Preview With Reference entities
46
+
47
+ Demo - https://youtu.be/9ti4LW-XTA0
48
+
49
+ Preview mode for all actions was extended by drasing additional reference points and entities that are part of drawing operation. The puprpose is to make drawing operations more intuitive and understandable to the user (especially new one) and to provide the user with:
50
+ 1) Better visual feedback for already performed operation (say, previously specified points);
51
+ 2) Indication of interim calculations which are part of the action (like axes and reference points of ellipse to be created);
52
+ 3) Projected results of action's execution (like expected positions of reference points or created entities positions);
53
+
54
+ An additional options were added to the Application Options dialog for:
55
+
56
+ 1) Enabling/disabling displaying reference entities on preview;
57
+ 2) Specifying shape/size for temporary reference points shown during preview;
58
+ 3) Specifying color for reference entities;
59
+
60
+ Highlighting of entities in preview mode also takes into account whether the entity that the user tries to select is suitable for current operation. Only entities that are valid for the current context are highlighted.
61
+
62
+ ### Drawing Actions
63
+
64
+ Demo - https://youtu.be/N0OEmWbzElM
65
+
66
+ Preview for drawing actions may include additional important points that are used for building specific entity (centers of circles, tangent points, user selections points etc.).
67
+ Support of key modifiers is action and context (action state) dependent.
68
+
69
+ Some improvements for actions:
70
+
71
+ 1) "chordlen" command for DrawArc - creation of arch with specified horde
72
+ 2) Parallel Through Point option - now it's possible to create parallels that are placed in both sides symmetrically to selected entity.
73
+
74
+ ### Polyline Actions
75
+
76
+ Demo - https://youtu.be/KI6C7FkLRpg
77
+
78
+ Preview for polyline editing actions improved and allows to perform such operations like deleting node, delete between nodes in more visual and understandable way.
79
+
80
+ ### New Info Actions
81
+
82
+ Demo - https://youtu.be/aBu8AP-f95M
83
+
84
+ New simple yet handy info actions were added. They are:
85
+
86
+ 1) **Distance from Point to Entity** - allows to check the distance from specified point to selected action
87
+ 2) **Angle between 3 points** - allows to measure the angle set by 3 points that defines 2 crossed lines. Points are line 1 edge, lines intersection point, line 2 edge. By its logic, the action is similar to "Angle Between Lines" action, except that it does not require that lines should exist.
88
+
89
+ Output for info commands was slightly improved.
90
+
91
+ ### Modify operations
92
+
93
+ Demo (quick overview) - https://youtu.be/7ioHtLuqXfA
94
+
95
+ Modify operations were reworked and dialogs were replaced by options widgets, so now dialogs are not part of action's flow. The code for dialogs is still present and there is a flag that allows old way of options operations, yet, in general, the value of showing dialogs is unclear now.
96
+
97
+ Preview now includes multiple copies (if specific action supports that if multiple copies are requested).
98
+
99
+ Other improvements:
100
+ 1) **Modify Mirror** - now it's possible select existing line that used as mirror axis;
101
+ 2) **Rotate** - the flow is changed, the user should select reference point first and rotation center is selected after that. However, the setting for enabling old mode (center-first) may be added, if needed.
102
+ 2) **Rotate** - allows to specify second rotation angle (so entity is rotated first via specified center, and rotated copy is rotated on second angle)
103
+ 3) **Lengthen** - allows to do symmetric lengthen (so needed length change is applied to both ends of the line);
104
+
105
+ Also, various small improvements for specific actions are added.
106
+
107
+
108
+ ### New Copy/Paste Actions
109
+
110
+ Demo - https://youtu.be/KFKRDoV8KJc
111
+
112
+ New actions were added:
113
+
114
+ 1) **Copy/Cut** operations - if CTRL is pressed during selection of reference point, paste operation is invoked immediately after copy;
115
+ 2) **Paste** Operation - if CTRL is pressed during paste, paste operation is repeated (**multiple paste**);
116
+ 3) **Copy Quick/Cut Quick** - current selection is copied, and the user is not asked for specifying reference point. The reference point is calculated as center point of copied selection.
117
+ 4) **Paste Transform** - actions allows to paste copied entities with **transformation** (scale, rotate) and create **array** of copies with specified number of columns, rows and rotation angle
118
+
119
+ ### Dimensions Snapping
120
+
121
+ Demo - https://youtu.be/PEJG_3Q54hs
122
+
123
+ Snapping for adjacent linear dimensions was added, so now it's simpler to draw continuous dimensions.
124
+
125
+ ### Default Action Changes
126
+ Demo - https://youtu.be/kBHrHpn12i0
127
+
128
+ Functionality of dimension action improved. Now it's possible lengthen line and arc by mouse (by moving endpoint with pressed CTRL key).
129
+
130
+ Also, generic moving of entities and endpoints now include visual reference line, and move/angle distance is reflected by coordinates widget.
131
+
132
+ ### Snap options
133
+
134
+ Demo - https://youtu.be/MOG1ctOK6r4
135
+
136
+ Settings for position of options widgets for Snap Middle and Snap Distance was added to Application Options dialog. Based on settings value, options may be shown either in options toolbar (as before) or within Snap Toolbar.
137
+
138
+ ### UI in Print Preview Mode
139
+
140
+ Demo - https://youtu.be/I0M7W51SbqQ
141
+
142
+ Minor improvements were added to Print Preview:
143
+ 1) Not applicable actions and widgets are now disabled in Print Preview mode;
144
+ 2) Quick buttons added on options toolbar for setting page orientation and print settings;
145
+ 3) Added ability to zoom to print area (paper);
146
+ 4) Added explicit settings for number of pages in tiled print.
147
+
148
+ While print preview is operational, most probably it requires an additional improvements in order to make it more convenient.
149
+
150
+ ### Keyboard Shortcuts Editing Dialog, Tooltips with Shortcuts
151
+
152
+ Demo - https://youtu.be/DTn0lCbrPn8
153
+
154
+ Support of keyboard was slightly improved, so:
155
+
156
+ 1) Now the user may assign keyboard shortcuts to actions via UI - using Keyboard Shortcuts options dialog. Withing this dialog, now it is possible to manage shortcuts, as well as export and import them.
157
+ 2) An option was added to Application Preferences dialog that allows to control whether keyboard shortcuts should be shown as part of the action's tooltip or not.
158
+
159
+ While this functionality is quite operational, some actions may be not invoked by keyboard.
160
+
161
+ The overall application-wise processing of keyboard shortcuts and keyboard support requires additional review and improvements.
162
+ It will be added later.
163
+
164
+ ### Other
165
+
166
+ In addition to visible changes mentioned above, there are lots of minor improvements of existing actions (like support of symmetric mode for "Line Parallel Through Point" and "Lengthen" actions) as well as various bugfixes.
167
+
168
+ #### Action Option widgets
169
+
170
+ Action options widgets were reviewed, missing tooltips and options were added.
171
+
172
+ The internal implementation of action options subsystem was reworked, memory leak for Option Widgets UI fixed, ownership of all Options Widgets instances is passed to corresponding actions.
173
+
174
+ #### Some minor changes
175
+ 1) **Active Action on Tab Switch** - Now switching tab or creation of new drawing finishes current active action, so no confusion by action that is active in other tab.
176
+ 2) **Selection in selection widget** - Selected entities count/length is updated on layer hiding/displaying to reflect only visible selected entities.
177
+
178
+ ### Implementation notes
179
+ The existing code base (for actions) historically contains lots of code duplications and therefore there are not needed redundancy and verbosity.
180
+ Actions code was refactored, and repeating code and obvious copy/paste blocks were eliminated.
181
+ In addition, reusable and glue code was extracted to base methods of action classes and additional base methods for overriding/usage were added.
182
+
183
+ The major intents for such refactoring are:
184
+ 1) making implementation of specific actions more lightweight, less verbose and easier to read;
185
+ 2) removing glue code and repetitive code and focus on action-specific logic;
186
+ 3) improving/cleaning code;
187
+ 4) using consistent code style and common approaches across the codebase;
188
+
189
+ Areas which are mostly affected are /actions and /ui.
190
+
191
+ The overall layout of source files was also affected. Historically, the amount of files within the same directory reached huge numbers that makes navigation within codebase quite complicated.
192
+
193
+ Layout of source files was changed to achieve more granular separation of functionality and simpler navigation. Git history of changes for source files was saved during source code reallocation.
194
+
195
+ I'm not aware of any functional regressions, so end users should be not affected by refactoring.
196
+
197
+ The functionality is stable enough and may be a good candidate at least for night build for wide user testing.
198
+
199
+ However, the changes in the code base are, well, quite significant, so most probably the process of comparing/reviewing changes may be challenging.
200
+
201
+ It might be also practical to make a new tag for this PR.
ChangeLogs/RENDERING README.md ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Rendering pipeline optimization
2
+ It possible to find mentions that LibreCAD is not suitable for large drawings due to slow rendering speed.
3
+ It was not clear for me why LibreCAD renders drawing slower than other similar programs, so I've decided to deep into this deeper.
4
+
5
+ Rendering pipeline ("paintEvent") was reviewed as optimized (by eliminating not needed/duplicated checks, pre-calculating values needed for paining, avoiding extra calls and so on).
6
+
7
+ The primary goal was to achieve good/acceptable performance, especially for large drawings.
8
+
9
+ While internally the code in some places now is less elegant, the reason for that was optimization of painting speed.
10
+
11
+ As result, depending on specific entities included into drawing, the performance of rendering (on Windows machine) as increased.
12
+
13
+ In my environment, rendering is up **to 7 times faster** comparing to previous AppImage (measurements for painting time may be enabled by DEBUG_RENDERING define in rs_graphicview.h:42).
14
+ On other machines/operating systems, of course, results may be different.
15
+
16
+ NOTE: As changes in rendering are sensitive, despite that various cases were tested, it still might be that some painting issues/glitches may occur (as they may depend on actual data).
17
+
18
+ Files for testing (opening time for them is long):
19
+
20
+ lines_large.dxf - 190084 entities in drawing (mostly lines)
21
+ circles_large.dxf - 720409 circles
22
+ arcs_large.dxf - 180100 arcs
23
+ ellipse_large.dxf - 165747 ellipses
24
+ polyline.dxf - 16402 polylines (each polyline has 16 lines/arc)
25
+ ellipse_solid - 39631 entities, solid fill
26
+ spline_points_large.dxf - 162020 spline point entities
27
+ splines.dxf - 3474 splines
28
+ solid.dxf - 60024 leaders
29
+ lorem_one.dxf - 10 large mtext entities
30
+
31
+ Archive is attached
32
+
33
+ #### Other changes
34
+
35
+ 1) Better preview for MText/Text entities (baselines for text lines are shown instead of boundary rectangle on preview)
36
+ 2) Additional button that allows to render entities with default length in non-draft mode.
37
+ 3) Restored snapping to grid if grid is not shown.
38
+ 4) New version check improvement
39
+
40
+ #### Changes in settings
41
+ ##### General Settings
42
+ 1) Added settings to control colors/linetype/fill for selection overlay box
43
+ 2) Added settings for minimum values that affects rendering
44
+ 3) Added "no grid" default value for new drawings
45
+ 4) Added setting for default zoom factor used for scroll zoom
46
+
47
+ ##### Drawing Settings
48
+ 1) Added settings for specifying line joins and line caps.
49
+
50
+ ### Issues addressed:
51
+
52
+ #1916
53
+
54
+ #1917
55
+
56
+ #1921
ChangeLogs/UCS.md ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## User Coordinates System and Angles Basis
2
+
3
+ This pull request includes relatively small amount of new functionality (yet affects the codebase quite significantly).
4
+
5
+ It introduced a couple of concepts, that are new for LibreCAD.
6
+
7
+ ### Angles Basis
8
+
9
+ Not it is possible to specify positive direction for angles as well as where angle 0 is located.
10
+
11
+ In terms of DXF variables, now LC supports both ___ANGDIR___ and ___ANGBASE___ variables. These variables are stored in drawing.
12
+
13
+ It is possible to edit settings in Drawing Preferences on Units tab.
14
+
15
+ By default, **ANGDIR** is counterclockwise and **ANGBASE** is 0 (so zero angle is at 3 pm) - standard basis of angles used by LibreCAD.
16
+
17
+ Values of variables affects (all over the codebase, for all actions and ui):
18
+
19
+ 1) Handling values of angles, entered by the user for commands via command line or action options.
20
+ 2) Handling values of angles that are parts of polar coordinates.
21
+ 3) Displaying angles in UI (in informational cursor, informational actions, entity info widget etc.)
22
+ 4) Displaying relative polar coordinates.
23
+ 5) Snapping via "Snap to Angle"
24
+
25
+ It is assumed that the user enters angles in currently active angles basis, and such angle values are translated to internal angles in LC default angles system (counterclockwise, 0 at 3pm).
26
+
27
+ #### Angles Basic Overlay
28
+
29
+ For providing the user with information about currently active angles basis, an overlay that displays what is possible direction of angles as well as direction of basis zero angle.
30
+
31
+ The appearance of that overall customizable via Application Preferences Dialog.
32
+
33
+ #### Angles Basis Toolbar
34
+
35
+ Also, informational toolbar "Angles Basis" was added. That toolbar also includes information about direction and zero angle value.
36
+
37
+ Click on that toolbar invokes Drawing Settings dialog that allows to edit angles basis.
38
+
39
+ #### Settings
40
+
41
+ Appropriate settings related to angles basis were added to Application Preferences and Drawing Options.
42
+
43
+ ### Angles and Polar coordinates Input formats
44
+
45
+ Now it's possible to enter angles (and so, polar coordinates) in several formats:
46
+
47
+ 1) Decimal degrees (as it was before)
48
+ 2) **Surveyor** e.g. N21d33'19.9"E
49
+ 3) **Radiant** - e.g. 2.7r
50
+ 4) **Grad** - e.g. 231g
51
+ 5) **Degrees** - e.g. 85d23'3
52
+ 6) **Bearing** - e.g. 83b24'7"
53
+
54
+ Also, there is an option in Application Preferences that allows to disable input in all formats except decimal degrees.
55
+
56
+ ### User Coordinates System (UCS)
57
+
58
+ Previously LibreCAD supported only one fixed coordinates system, with origin located in 0,0 and angle of X axis equal to 0 in coordinates of model space of the drawing.
59
+
60
+ This coordinate system is still supported and is considered as World Coordinates System (**WCS**).
61
+
62
+ Now, a support of the user-defined coordinate systems (**UCS**) was added. The user is able dynamically specify new zero point of the coordinate system (in WCS coordinates) and direction of X axis.
63
+
64
+ As soon as such UCS will be applied, the content of drawing will be rotated on rendering (if necessary) and all coordinates that are entered by the user or be shown to the user will be considered as ones, specified in newly-defined UCS.
65
+
66
+ Such approach simplifies creating of non-orthogonal parts of the drawing.
67
+
68
+ #### Coordinates Mapping
69
+
70
+ Internally, all coordinates data are stored in WCS coordinates (as before).
71
+
72
+ If custom UCS is active:
73
+
74
+ 1. All necessary translations of coordinates are performed either during processing of the user's input or as part of rendering process.
75
+
76
+ 2. While the user performs drawing in local UCS coordinates, the drawing data is still in WCS.
77
+
78
+ 3. Displaying of user's coordinates (in info actions, entity info widget, informational cursor, coordinates toolbars etc.) is performed in UCS coordinates.
79
+
80
+ If non-default Angles Basis is active, this is also properly handled, so it's absolutely fine to combine custom UCS and Angles Basis.
81
+
82
+ Information about UCS is stored in DXF using standard tag of DXF (so parsing/generation of DXF was extended too).
83
+
84
+ #### Entering WCS coordinates
85
+
86
+ If UCS is active, it is possible to enter absolute coordinate in WCS using command line widget.
87
+
88
+ WCS coordinates should start with exclamation mark which is __!__.
89
+
90
+ Format of WCS coordinate:
91
+ 1. For cartesian coordinates: __!X,Y__ (like !200,100)
92
+ 2. For polar coordinates : **!dist<angle** (like !100<45)
93
+
94
+ If WCS is active - it still possible to use this format, yet it is not clear what for...
95
+
96
+ #### Coordinates System Marker Overlay
97
+
98
+ Overlay that draws position of UCS and WCS is shown. Which markers are shown as well as their visual appearance is controlled by options in Application Preferences.
99
+
100
+ #### UCS Toolbar
101
+
102
+ A UCS toolbar was added. It provides the user with information about currently active coordinates system.
103
+
104
+ #### UCS widget
105
+
106
+ A dock widget was added for managing the list of UCS of drawing.
107
+
108
+ #### Named View widget
109
+
110
+ Named views widget was extended to provide the information about UCS related to named view. When view is restored, appropriate saved UCS is applied too.
111
+
112
+ If UCS is active when VIEW is created, information about that view is stored as part of view.
113
+
114
+ #### Settings
115
+
116
+ Related settings were added to Application Preferences and settings of UCS list widget.
117
+
118
+ #### UCS Limitations
119
+
120
+ At the moment, there are several limitations in current implementation of UCS support. Mostly, they are related to determining the bounding box of entities within active UCS.
121
+ So far, the entire WCS bounding box is rotated for UCS (instead of proper recalculation of the bounding box for new basis).
122
+
123
+ 1. If UCS is rotated to WCS, selection of entities by window may work not always correctly (and some additional entities outsider of selecting box may be selected).
124
+ This is due to current selection logic that assumes that selection region represent rectangle parallel to x.
125
+ 2. Bounding box action creates bounding box in WCS only.
126
+ 3. Align and Align Single actions does not support UCS.
127
+
128
+ ### Internal Refactorings
129
+
130
+ Several internal refactorings were performed.
131
+
132
+ #### Mouse event handling methods in actions.
133
+
134
+ More generic and uniform processing of mouse events was added to base actions. Due to this, implementation of mouse hanlding events in inherited actions now is more iniform and simpler.
135
+ The major reason there was to ensure that mouse events are handled by all actions using the same generic flow.
136
+
137
+ #### RS_GraphicView refactoring
138
+
139
+ Historically, this class was over-complicated and has too many responsibilities.
140
+
141
+ Now the code of it was separated to more focused notions:
142
+
143
+ * UI-agnostic LC_GraphicViewport class, that may be considered as part of the model.
144
+ * a set of LC_GraphicViewportRenderer classes, what are responsible for drawing the content of viewport
145
+ * RS_GraphicView, that represents a widget that controls viewport and uses renderer for painting.
146
+
147
+ With such decomposition, lots of appropriate code now does not depend on objects of UI layer and widgets (like RS_Modification).
148
+ Where possible, dependencies to RS_GraphicView were replaced by LC_GraphicViewport.
149
+
150
+ RS_Painter was also refactored, both for support of UCS/WCS coordinates translations, and for making rendering to be not dependent on RS_GraphicView.
151
+
152
+ In general, the major goal for such refactoring (aside of code separation and simplification, of course) - is to achieve more independent rendering.
153
+
154
+ Later, this concept could be extended further - to support several viewports in paper space and layouts.
155
+
156
+ Thus, this refactoring may be considered rather as a preparation step for later functionality.
157
+
158
+ ### Other changes
159
+
160
+ * Option that allows to disable marking the drawing as "modified" if zoom or pan was performed only was added to the Application Preferences (inspired by johnfound)
161
+ * Layout of Application Preferences dialog was changed (again :( ), several pages were added to use more focused groupping of settings.
162
+ * Settings that allows to control rendering of arc/circles were added, and now it's possible to define whether arcs should be drawn natively by QT or be interpolated by line segments.
163
+ * Added option that allows to ignore "Snap To Grid" mode during snapping if the grid is not visible (inspired by johnfound)
164
+ * Added options for fine-tuning of snap constants (inspired by johnfound)
165
+ * Line Horizontal/Vertical actions - if there is non-standard UCS basis, options added that allows to create lines, orthogonal to angles basis axis
166
+ * Added ability to customize "Draft" mode marker
167
+
168
+ ### Bugfixes
169
+ A couple of issues were fixed:
170
+
171
+ * LibreCAD#1978
172
+ * LibreCAD#1992
173
+ * LibreCAD#2002
174
+ * LibreCAD#2012
ChangeLogs/VARIOUS_FIXES_1.md ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This is just interim PR, that does not bring some notable new functionality - it is rather focused on internal code cleanup and bugfixing.
2
+
3
+ ### Generic refactoring
4
+
5
+ Some generic refactorings were performed:
6
+
7
+ 1) initialization of the application (QC_ApplicationWindow) was reviewed and initialization/assembling logic was extracted to specialized classes.
8
+ 2) documents reading/writing logic was encapsulated and moved outside RS_Document (and inherited) entities (partially so far);
9
+ 3) the logic of working with drawings in QC_ApplicationWindow was reviewed and refined (events for opening, activation, closing etc.)
10
+ 4) several invalid/bad dependencies from model entities to view/ui, static references were removed
11
+ 5) all connections were modernized to modern reference-based form of signals and slots (SIGNAL()/SLOT() were almost fully eliminated)
12
+ 6) not used classes were removed (old CAD Toolbars/widgets)
13
+ 7) refactoring for actions invocations, QG_ActionHandler refactoring, separate factory for actions creation, actions adjustments
14
+ 8) bugfixes
15
+ 9) generic code cleanup, fields renaming to conform m_ naming pattern (WIP)
16
+ 10) Includes optimization, using forward declarations where possible
17
+ 11) Entity's layer actions
18
+
19
+
20
+ ### Widget Options
21
+ The Widget Options dialog was expanded so now it's possible to control specifics of docking better - set nested docking mode and allow vertical title bars
22
+
23
+ ### Block/Library widgets
24
+ Inserting block and drawing from library was corrected so now they properly supports rotation angle if UCS is active.
25
+
26
+ ### Command widget
27
+ Command widget may be activated by focus action even if the widget is not visible (it will be shown)
28
+
29
+ ### Application Preference
30
+ 1) added settings for naming of auto-save file (Librecad#2061)
31
+ 2) added setting for font files rendering if they are open as file - controls how many columns should be used for rendering letters in the opened font's file.
32
+
33
+ ### Layers export
34
+ Generic refactoring, more export options in the save dialog, ability to save also UCSs and Named Views as part of export.
35
+
36
+ ### 2092 - commands for layers
37
+ Two simple commands were added to let management of layers via script file.
38
+
39
+ 1) cslayer - activates layer with specified name
40
+ 2) cnlayer - creates and activates layer with given name
41
+
42
+ ### Entity's layer actions
43
+ Several small actions (and toolbar for them) where added for layer-related operations based on the entity.
44
+
45
+ Using them the user is able to select some entity, and for the layer of this selected entity:
46
+ * activate layer
47
+ * make layer invisible
48
+ * lock layer
49
+ * toggle layer's printing and construction flag.
50
+
51
+ Thus, these actions allows the user to perform quick invocation of some common operations without switching to the Layers List or Layers Tree widgets.
52
+
53
+ ### Other
54
+
55
+ * Support of creation of sharing library for LC_IconEngine in cmake build. So now the dll/shared lib is created.
56
+ * Build of plugins for WIN is updated to include plugin-specific RC file
57
+ * *.llf and *.cxf files may be also opened by drag&drop them to main window
58
+ * copy&paste and generic entities selection functionality improvements
59
+
60
+ ### Fixed Issues
61
+ * LibreCAD#2111
62
+ * LibreCAD#2110
63
+ * LibreCAD#2108
64
+ * LibreCAD#2103
65
+ * LibreCAD#2098
66
+ * LibreCAD#2092
67
+ * LibreCAD#2090
68
+ * LibreCAD#2086 (?)*
69
+ * LibreCAD#2082
70
+ * LibreCAD#2075
71
+ * LibreCAD#2074
72
+ * LibreCAD#2071
73
+ * LibreCAD#2062
74
+ * LibreCAD#2061
75
+ * LibreCAD#2043
76
+ * LibreCAD#2041
77
+ * LibreCAD#2013
78
+ * LibreCAD#2004
79
+ * LibreCAD#1986
ChangeLogs/germar.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2017-02-16 Germar <github.com/Germar>
2
+
3
+ * rs.h (LinearFormat)
4
+ * rs_dimaligned.cpp (getMeasuredLabel)
5
+ * rs_dimdiametric.cpp (getMeasuredLabel)
6
+ * rs_dimlinear.cpp (getMeasuredLabel)
7
+ * rs_dimradial.cpp (getMeasuredLabel)
8
+ * rs_graphic.cpp (getLinearFormat)
9
+ * rs_units.cpp (formatLinear)
10
+ * rs_units.h (public):
11
+ added ArchitecturalMetric using DIN 406 (issue #861)
12
+
13
+ * qg_dlgoptionsdrawing.cpp (validate):
14
+ add warning about unit for length format 'ArchitecturalMetric' must be 'Meter'
ChangeLogs/obsole_issues.md ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ***Issues To Close***
2
+
3
+ This issues in GitHub seems to be obsolete and not actual, please review:
4
+
5
+ #359 - functionality is included into Entity Info widget (pick coordinates)
6
+
7
+ #399 - implemented in LayerTree Widget
8
+
9
+ #458 - supported by LayerTree Widget
10
+
11
+ #586 - supported by LayerTree Widget
12
+
13
+ #597 - fixed
14
+
15
+ #648 - seems to be fixed already
16
+
17
+ #731 - supported by Line from Point to Line action
18
+
19
+ #795 - PenPalette widget?
20
+
21
+ #874 - supported either by plugin, or by Entity Info Widget
22
+
23
+ #939 - not relevant anymore, persistent positions of dialogs are supported
24
+
25
+ #959 - supported by plugin, supported by Slice/Divide action
26
+
27
+ #960 - PR merged to master already
28
+
29
+ #1047 - fixed already (in my previous PR)
30
+
31
+ #1124 - implemented already
32
+
33
+ #1173 - implemented already
34
+
35
+ #1192 - implemented by Slice/Divide action
36
+
37
+ #1509 - supported via *chordlen* command
38
+
39
+ #1338 - supported already added to Scale command
40
+
41
+ #1340 - seems to be fixed?
42
+
43
+ #1352 - break of polyline, break of line are supported
44
+
45
+ #1374 - partially supported via Line Gap action
46
+
47
+ #1210 - supported by Line Snake command
48
+
49
+ #1480 - merged already
50
+
51
+ #1614 - supported by Entity Info Widget
52
+
53
+ #1631 - fixed already?
54
+
55
+ #1805 - fixed
56
+
57
+ #1787 - fixed
58
+
59
+ #1762 - fixed
60
+
61
+ #1736 - fixed
62
+
63
+ #1858 - fixed
64
+
65
+ #1846 - fixed
66
+
67
+ #1813 - supported by Layer Tree Widget
68
+
69
+ ***Implemented in this PR***
70
+
71
+ This MR includes the following major changes:
72
+
73
+ 1) Proper rendering of X,Y-axis in drawing, options for them;
74
+ 2) Rework of grid rendering, support of lines grid in isometric view, grid-related options
75
+ 3) Restructured Application Preferences Dialog
76
+ 4) Dockable status bar components (enabled by options) + widget with relative point position (so now they may be mixed up with toolbars);
77
+ 5) Indication of currently active action in MouseWidget
78
+ 6) Check for New Version functionality (on startup and explicit), rework of About dialog. NOTE: during preparing public build, in addition to LC_VERSION it's necessary to set LC_PRERELEASE define (true for pre-release version, false - for release ones). Also, it's better use unique release versions even for "latest" updates (like 2.2.2.1-latest, 2.2.2.2-latest etc. instead of one generic 2.2.2-latest), otherwise it might be hard to distinguish fresher updates.
79
+ 7) Changes for draft mode for text/mtext rendering - now instead of rectangle around the text, baselines for text lines are drawn.
80
+ 8) Bugfixes
81
+
82
+ The following list of issues were addressed by this MR:
83
+
84
+ #1550
85
+
86
+ #1688
87
+
88
+ #1477
89
+
90
+ #1852
91
+
92
+ #1728
93
+
94
+ #1849
95
+
96
+ #1861
97
+
98
+ #1870
99
+
100
+ #1875
101
+
102
+ #1877
103
+
104
+ #1878
105
+
106
+ #1879
107
+
108
+ #1881
109
+
110
+ #1864
111
+
112
+ #1885
113
+
114
+ #1896
115
+
116
+
117
+ **Issues to consider (sand):**
118
+
119
+ #601
120
+
121
+ #606
122
+
123
+ #467
124
+
125
+ #599
126
+
127
+ #584
128
+
129
+ #614 - as focus on field in widget option, focus
130
+
131
+ #570
132
+
133
+ #712 - may be fixed already, check
134
+
135
+ #710 - ordinal dimensions
136
+
137
+ #626 - text improvement by counter
138
+
139
+ #622 - action in tb? and close
140
+
141
+ #825 - individual dimensions format
142
+
143
+ #853 - Feature Request: Provide Mapping Angular Layout - review in details
144
+
145
+ #846 -[feature] Changing fonts of all texts
146
+
147
+ #951 - Huge dxf: delete all (unused) blocks
148
+
149
+ #949 - Dogbone?
150
+
151
+ #910 - metadata
152
+
153
+ #906 - Snap on entity does not work in front of imported image - bug?
154
+
155
+ #1033 - implemented already, yet not completely
156
+
157
+ #1005 - tooltip for command improvement (Command Line Commands in Tooltips, Menus)
158
+
159
+ #1110 - new position for grip by command (Grip points, a small improvement
160
+ #1090 - Feature Request: Filter selection by properties #1090
161
+
162
+ #1082 ??
163
+
164
+ #1127 - dimension scale should apply to measurement tools too
165
+ #1129 - groupping
166
+
167
+ ##1131 - apply colors from prefs?
168
+
169
+ #1627
170
+ #1651
171
+ #1648
ChangeLogs/r-a-v-a-s.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ 2016-10-31 ravas <github.com/r-a-v-a-s>
2
+
3
+ * rs_actionlayerstoggleview.cpp (trigger):
4
+ added calculateBorders (issue #784)
ChangeLogs/readme.md ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ A ChangeLog file is for describing all the changes made to the source files.
2
+
3
+ Developers can keep their ChangeLog in ChangeLogs/github_username.txt
4
+
5
+ - <https://www.gnu.org/prep/standards/html_node/index.html>
6
+ - <https://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs>
LICENSE ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## LibreCAD and the GPLv2 ##
2
+
3
+ LibreCAD is free software; you can redistribute it and/or modify
4
+ it under the terms of the GNU General Public License version 2 (GPLv2)
5
+ as published by the Free Software Foundation.
6
+
7
+ This program is distributed in the hope that it will be useful,
8
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ See the GNU General Public License for more details.
11
+
12
+ The GPLv2 can be found in the `licenses` folder as `gpl-2.0.txt`.
13
+
14
+ - <https://github.com/LibreCAD/LibreCAD/tree/master/licenses>
15
+ - <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>
16
+
17
+ ### History ###
18
+
19
+ QCAD community edition version 2.0.5.0 was released under the GPLv2.
20
+ > Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
21
+
22
+ - <http://www.ribbonsoft.com>
23
+
24
+ LibreCAD is a fork of QCAD community edition version 2.0.5.0;
25
+ therefore, any modifications of or additions to the program
26
+ are also released under the GPLv2.
27
+
28
+ The project's first commit on Github was Aug 16, 2010.
29
+
30
+ - <http://librecad.org/>
31
+ - <https://github.com/LibreCAD/LibreCAD>
32
+
33
+ ### Rights holders of the code ###
34
+
35
+ Some of the following may be composites of multiple copyright notices.
36
+
37
+ Copyright (C):
38
+
39
+ - 1999, 2001, 2007 Frank Warmerdam
40
+ - 2001-2003 RibbonSoft. All rights reserved.
41
+ - 2004-2014 Ingo Berg
42
+ - 2010, 2011, 2012, 2015 R. van Twisk (librecad@rvt.dds.nl)
43
+ - 2011-2015 Dongxu Li (dongxuli2011@gmail.com)
44
+ - 2011-2015 José F. Soriano (rallazz@gmail.com)
45
+ - 2014 cgrzemba (cgrzemba@opencsw.org)
46
+ - 2014 Pavel Krejcir (pavel@pamsoft.cz)
47
+ - 2014-2015 Christian Luginbühl (dinkel@pimprecords.com)
48
+ - 2015 A. Stebich (librecad@mail.lordofbikes.de)
49
+ - 2015-2016 ravas (github.com/r-a-v-a-s)
50
+
51
+ ### Rights holders of the fonts ###
52
+
53
+ Copyright (C):
54
+
55
+ - 2002 Yoshimune Kobayashi (cfg47520@syd.odn.ne.jp)
56
+ - 2004 by Saka.N (Saka.N.06@b3.mnx.ne.jp)
57
+ - 2010-2013 Khaled Hosny (khaledhosny@eglug.org)
58
+ - 2011, 2012 Rallaz (rallazz@gmail.com)
59
+ - 2014 stranger573 (stranger573@mail.ru)
60
+ - 2015 AZO (typesylph@gmail.com)
61
+
62
+ ### Rights holders of the art ###
63
+
64
+ Copyright (C):
65
+
66
+ - 2011 Diego Alejandro Torres M. "Daltom Designer" (http://daltom.2082studio.com)
67
+ - 2011 Pablo Ramrez Alem (www.librecad.com.ar)
68
+
69
+ ### Honorable mention ###
70
+
71
+ These are known contributors whose copyright notice could not be found.
72
+
73
+ - Claude Sylvain | <csylvain@electro-technica.com>
74
+ - Scott Howard | <showard@debian.org>
75
+ - Lisandro Damián Nicanor Pérez Meyer | <perezmeyer@gmail.com>
76
+
77
+ A list of contributors to the LibreCAD repository can be found at:
78
+ <https://github.com/LibreCAD/LibreCAD/graphs/contributors>
79
+
80
+ ## Licenses of bundled content ##
81
+
82
+ The LibreCAD source code is released as a whole under the GPLv2.
83
+ The following refers to the licenses used by these resources,
84
+ when they were released independently from LibreCAD.
85
+
86
+ The SVG icons in `librecad/res/icons` were all released under the CC0 license.
87
+
88
+ - <https://github.com/LibreCAD/Resources>
89
+ - <https://creativecommons.org/publicdomain/zero/1.0/>
90
+
91
+ libdxfrw was released under GPLv2 "or any later version".
92
+
93
+ - <https://sourceforge.net/projects/libdxfrw/>
94
+
95
+ muParser was released under the MIT license.
96
+
97
+ - <http://beltoforion.de/article.php?a=muparser&hl=en&p=licence>
98
+
99
+ Shapelib was released under a "MIT Style" license or LGPLv2.
100
+
101
+ - <https://github.com/LibreCAD/LibreCAD/tree/master/plugins/importshp/shapelib>
102
+
103
+ The AZOmix fonts were released under the KST32B version 2.0 license.
104
+
105
+ - <https://github.com/LibreCAD/LibreCAD/blob/master/licenses/KST32B_v2.txt>
106
+ - <http://domisan.sakura.ne.jp/article/cadfont/cadfont.html>
107
+
108
+ The Amiri font was released under the Open Font License.
109
+
110
+ - <http://www.amirifont.org/>
111
+ - <https://github.com/khaledhosny/amiri-font/blob/0.108/OFL.txt>
112
+
113
+ The Hershey Fonts were originally created by Dr. A. V. Hershey
114
+ while working at the U. S. National Bureau of Standards.
115
+ The format of the Font data in this distribution was originally created by:
116
+ > James Hurt
117
+ > Cognition, Inc.
118
+ > 900 Technology Park Drive
119
+ > Billerica, MA 01821
120
+
README.md ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # LibreCAD [![Build Status](https://travis-ci.org/LibreCAD/LibreCAD.svg?branch=master)](https://travis-ci.org/LibreCAD/LibreCAD)
2
+
3
+ [→ **Download** ←](https://github.com/LibreCAD/LibreCAD/wiki/Download)
4
+
5
+ [LibreCAD](https://www.librecad.org) is a 2D CAD drawing tool
6
+ based on the community edition of [QCAD](https://www.qcad.org).
7
+ LibreCAD uses the cross-platform framework [Qt](https://www.qt.io/download-open-source/),
8
+ which means it works with most operating systems.
9
+ The user interface is translated in over 30 languages. https://translate.librecad.org
10
+
11
+ LibreCAD is free software; you can redistribute it and/or modify
12
+ it under the terms of the [GNU General Public License version 2](https://www.gnu.org/licenses/gpl-2.0.html) (GPLv2)
13
+ as published by the Free Software Foundation.
14
+ Please read the [LICENSE](LICENSE) file for additional information.
15
+
16
+ The master branch represents the latest pre-release code.
17
+ The 2.2.2 branch requires Qt 6.4.0 or newer.
18
+ The 2.2.1 branch requires Qt 5.15.0 or newer.
19
+ The 2.2 branch requires Qt 5.2.1 or newer.
20
+ The 2.1 branch will be the last to support Qt4.
21
+ The 2.0 branch will be the last to support the QCAD toolbar.
22
+ ![Build Status](https://travis-ci.org/LibreCAD/LibreCAD.svg?branch=2.0)](https://travis-ci.org/LibreCAD/LibreCAD)
23
+
24
+ ## DXF Converter
25
+
26
+ LibreCAD can be used as DXF to a PDF, PNG, or SVG converter. For example, to convert a `foo.dxf` to `foo.pdf`, `foo.png`, or `foo.svg`:
27
+
28
+ ```bash
29
+ $ librecad dxf2pdf foo.dxf
30
+ $ librecad dxf2png foo.dxf
31
+ $ librecad dxf2svg foo.dxf
32
+ ```
33
+
34
+ ## Releases and Milestones
35
+
36
+ - [Releases and Prereleases](https://github.com/LibreCAD/LibreCAD/releases)
37
+ - [Milestones](https://github.com/LibreCAD/LibreCAD/milestones)
38
+
39
+ For macOS arm64 builds, the app is __NOT__ signed. To workaround the "damaged" error ([#2162](https://github.com/LibreCAD/LibreCAD/issues/2162)):
40
+ ```bash
41
+ xattr -rc LibreCAD.app
42
+ sudo codesign --force --deep --sign - LibreCAD.app
43
+ ```
44
+
45
+
46
+ ## Built with libdxfrw
47
+ [`libdxfrw`](https://github.com/LibreCAD/libdxfrw) is an associated project that allows LibreCAD to read DXF and DWG files.
48
+
49
+
50
+ ## Requests and Bug Reports
51
+
52
+ - [GitHub Issues (preferred)](https://github.com/LibreCAD/LibreCAD/issues)
53
+ - [SourceForge tickets (disabled)](https://sourceforge.net/p/librecad/_list/tickets?source=navbar)
54
+
55
+
56
+ ## Users Documentation
57
+
58
+ - [Users Manual](https://librecad.readthedocs.io/)
59
+ - [Wiki Main Page](https://dokuwiki.librecad.org/)
60
+
61
+
62
+ ## Questions or Comments
63
+
64
+ - [LibreCAD's Forum](https://forum.librecad.org/)
65
+ - IRC: [#librecad](https://web.libera.chat/#librecad) at libera.chat
66
+
67
+
68
+ ## Building
69
+
70
+ ### Requirements
71
+
72
+ - [Qt](https://www.qt.io/download-open-source/) 6.4.0+ (MinGW version on Windows)
73
+ - [Boost](https://www.boost.org/) 1.55.0+
74
+
75
+ More information: [Build from source](https://github.com/LibreCAD/LibreCAD/wiki/Build-from-source)
76
+
77
+ ### Building Unit Tests
78
+
79
+ To build unit tests (e.g., for `rs_math.cpp`), enable the `BUILD_TESTS` flag:
80
+
81
+ ```bash
82
+ cmake -DBUILD_TESTS=ON ..
83
+ make
84
+ ./build/librecad_tests
85
+ ```
86
+
87
+
88
+ ## Contributing
89
+
90
+ [Git and GitHub](https://github.com/LibreCAD/LibreCAD/wiki/Git-and-GitHub)
91
+
92
+ [Becoming a developer](https://github.com/LibreCAD/LibreCAD/wiki/Becoming-a-developer)
93
+
94
+ There is a [resources repository](https://github.com/LibreCAD/Resources) for people that want to indirectly
95
+ contribute to the project by supplying icons, stylesheets, documentation, templates...
96
+
97
+ Associated downloads: <https://sourceforge.net/projects/librecad/files/Resources/>
common.pri ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # include user-defined things in every qmake project
3
+ exists( custom.pro ):include( custom.pro )
4
+ exists( custom.pri ):include( custom.pri )
5
+
6
+ include( settings.pri )
7
+
8
+ # Store intermedia stuff somewhere else
9
+ isEmpty(GENERATED_DIR){
10
+ GENERATED_DIR = generated
11
+ }
12
+ # Store intermedia stuff somewhere else
13
+ OBJECTS_DIR = $${GENERATED_DIR}/obj
14
+ MOC_DIR = $${GENERATED_DIR}/moc
15
+ RCC_DIR = $${GENERATED_DIR}/rcc
16
+ UI_DIR = $${GENERATED_DIR}/ui
17
+ UI_HEADERS_DIR = $${GENERATED_DIR}/ui
18
+ UI_SOURCES_DIR = $${GENERATED_DIR}/ui
19
+
20
+
21
+ # Copy command
22
+ win32 {
23
+ COPY = copy /y
24
+ } else {
25
+ COPY = cp
26
+ }
27
+
28
+ # use c++ only
29
+ QMAKE_CC = g++
30
+ QMAKE_CFLAGS = -std=c++17
31
+
32
+ # Windows compiler settings
33
+ win32 {
34
+ QMAKE_CXXFLAGS += -U__STRICT_ANSI__
35
+ QMAKE_CFLAGS_THREAD -= -mthreads
36
+ QMAKE_CXXFLAGS_THREAD -= -mthreads
37
+ QMAKE_LFLAGS_THREAD -= -mthreads
38
+ #qt version check for mingw
39
+ win32-g++ {
40
+ contains(QT_VERSION, ^4\\.8\\.[0-4]) {
41
+ DEFINES += QT_NO_CONCURRENT=0
42
+ }
43
+ # Silence warning: typedef '...' locally defined but not used [-Wunused-local-typedefs]
44
+ # this was caused by boost headers and g++ 4.8.0 (Qt 5.1 / MinGW 4.8)
45
+ greaterThan( QT_MAJOR_VERSION, 4 ) {
46
+ QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
47
+ }
48
+ }else{
49
+ !build_pass:verbose:message(Setting up support for MSVC.)
50
+ # define the M_PI etc macros for MSVC compilers.
51
+ DEFINES += _USE_MATH_DEFINES
52
+ }
53
+
54
+ # The .NET 2003 compiler (at least) is touchy about its own headers ...
55
+ win32-msvc2003 {
56
+ # Silence "unused formal parameter" warnings about unused `_Iosbase`
57
+ # in the header file `xloctime` (a Vc7 header after all!).
58
+ QMAKE_CXXFLAGS += /wd4100
59
+ }
60
+ }
61
+
62
+ unix|macx|win32-g++ {
63
+ # no such option for MSVC
64
+ QMAKE_CXXFLAGS_DEBUG += -g
65
+ QMAKE_CXXFLAGS += -g
66
+ }
67
+
68
+ # fix for GitHub Issue #880
69
+ # prevent QMake from using -isystem flag for system include path
70
+ # this breaks gcc 6 builds because of its #include_next feature
71
+ QMAKE_CFLAGS_ISYSTEM = ""
72
+
73
+ # svg support
74
+ QT += svg
75
+
76
+ greaterThan( QT_MAJOR_VERSION, 5) {
77
+ CONFIG += c++17
78
+ }else{
79
+ unix|macx|win32-g++ {
80
+ # no such option for MSVC
81
+ QMAKE_CXXFLAGS += -std=c++17
82
+ QMAKE_CXXFLAGS_DEBUG += -std=c++17
83
+ }
84
+ }
85
+
86
+ DEFINES += MUPARSER_STATIC
87
+ # RVT July 12 2015, I believe we need these here
88
+ #macx{
89
+ # QMAKE_CXXFLAGS_DEBUG += -mmacosx-version-min=10.8
90
+ # QMAKE_CXXFLAGS += -mmacosx-version-min=10.8
91
+ #}
desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 16x16.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 24x24.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 256x256.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 32x32.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon 48x48.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/LibreCAD_Icon All Sizes.ico ADDED
desktop/graphics_icons_and_splash/Icon LibreCAD/README.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ **DEPRECATED**
2
+
3
+ This folder and its files may be deleted in future.
4
+
5
+ The contained files were copied to:
6
+ [LibreCAD-ROOT]/desktop/media/icons
7
+
8
+ Please use these files from their new location.
desktop/graphics_icons_and_splash/Logo LibreCAD/Logo LibreCAD.svg ADDED
desktop/graphics_icons_and_splash/Logo LibreCAD/LogoLibrecad_335x33_bgw.png ADDED