mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-06-09 12:03:13 +02:00
Compare commits
197 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bbf156c489 | |||
| 946aa37e78 | |||
| b8c85f9e96 | |||
| ee8114d42c | |||
| 0abfecd891 | |||
| a434575857 | |||
| fc7d8f5f6f | |||
| 1d451a6490 | |||
| 0118d94d4e | |||
| b80875c583 | |||
| b54327e649 | |||
| e046b8289d | |||
| 941efe6405 | |||
| 07e11ea659 | |||
| 387f96b556 | |||
| 0832ef47a8 | |||
| bc7f852f79 | |||
| d1e10afd61 | |||
| 8aa384d305 | |||
| b321460116 | |||
| 416ec501fe | |||
| 145810f33a | |||
| 4f70468a29 | |||
| f60acad3b3 | |||
| ee65142b65 | |||
| 03bb97b529 | |||
| a4b90f3cc7 | |||
| d57a219977 | |||
| 03afa9e318 | |||
| 37cec4afce | |||
| 12f04a7b08 | |||
| ba77b3dabb | |||
| 2e6953bbd0 | |||
| c4e05f817c | |||
| eb8f859038 | |||
| 16650ed6af | |||
| 3b3171dc93 | |||
| 500c42c86b | |||
| 2f3e46e488 | |||
| 290ef97ec2 | |||
| f0923e7560 | |||
| b32de35afd | |||
| 8aad1c0cab | |||
| d365e19619 | |||
| 27b977e9f3 | |||
| 54e19f4074 | |||
| 8af1fd708f | |||
| a64e414d63 | |||
| 2ed8d76e2d | |||
| 679647f52a | |||
| a82f6de23b | |||
| 6452e03cdc | |||
| 51725d9d8e | |||
| a45a7d4e4d | |||
| bc9173d726 | |||
| 19712d72ef | |||
| f23ec620dc | |||
| 47d2107d99 | |||
| 0a4c3f4601 | |||
| ab24b74c72 | |||
| 380d12e675 | |||
| d0d3194afa | |||
| b18f5f5e41 | |||
| 8a1b0575ab | |||
| 67ec648706 | |||
| 9b77b4d4fa | |||
| 225edec091 | |||
| 62dbaddab2 | |||
| f5857bb1fd | |||
| 825eeb77e4 | |||
| 780cf8b054 | |||
| 605392cf9b | |||
| 3795ddb1f5 | |||
| ecee2209e6 | |||
| 246dd0a42f | |||
| 89a4aaac28 | |||
| 79edc3fbb7 | |||
| 52f61ab500 | |||
| 1bbb374094 | |||
| c220d84fcb | |||
| 4834d41432 | |||
| 378aa8899f | |||
| 0cd71cbe16 | |||
| 9344515d2a | |||
| 9149128f7a | |||
| 5296c1b478 | |||
| b4c8af55d3 | |||
| cb47094a1f | |||
| 3f1db24d6d | |||
| 1af0c1ca8b | |||
| bea1fb4353 | |||
| 2f69716e3c | |||
| 277fa087bc | |||
| 9693df4252 | |||
| 6b80fbb08d | |||
| 7425c83231 | |||
| 815e959a2d | |||
| 97f113d333 | |||
| de91ab0a4b | |||
| 84c755a0c8 | |||
| e9e11635d8 | |||
| 2e684471a9 | |||
| 61889f4c17 | |||
| c946df8588 | |||
| 33da828035 | |||
| 6515827f34 | |||
| 536315ebc0 | |||
| baec0a4afb | |||
| 4b19a88f2d | |||
| 248b3a04d2 | |||
| 40f7889849 | |||
| 430ead5674 | |||
| e52e42af45 | |||
| b7b131f619 | |||
| accc92ef90 | |||
| 89be949201 | |||
| fe52babc34 | |||
| f4ff6b1b60 | |||
| 23b5aa9f14 | |||
| bd84f8749d | |||
| d7c032f977 | |||
| 478f753b92 | |||
| 42b6678c00 | |||
| c74d68c082 | |||
| 9482d11238 | |||
| e62f7cf056 | |||
| c4b35fc426 | |||
| 1209b175a3 | |||
| 4af52e79a0 | |||
| efbfaa08d9 | |||
| 3f1a46f865 | |||
| 9a1f93c5fc | |||
| 5d36436df2 | |||
| 406fbe6e0c | |||
| a3a5cd1e87 | |||
| 1b449686a8 | |||
| d5eeed1aec | |||
| 7982989b59 | |||
| 6b6668a8bc | |||
| 03c1e4666f | |||
| 8fcc9b9b6b | |||
| e9a053179e | |||
| 5bf11a3a02 | |||
| c17a914896 | |||
| 0c62f291f0 | |||
| 534de377d3 | |||
| f92992be79 | |||
| 4a05550731 | |||
| bd5d8f3d55 | |||
| d29cac51b4 | |||
| 4044d04cc5 | |||
| 62431aff57 | |||
| 130eede517 | |||
| bd89d3a1b7 | |||
| 8307008daa | |||
| a9b30ff71e | |||
| 87c2480ebc | |||
| 5e41ec415e | |||
| fa6e3d31eb | |||
| 72bd4803e6 | |||
| 47d391c26b | |||
| 033c92257e | |||
| 2b18d93d43 | |||
| 36463542ab | |||
| 152b20899c | |||
| 765f0087fc | |||
| 42037f7f9a | |||
| 7df37ab9b5 | |||
| f47143dd6f | |||
| 0d5373d640 | |||
| 506565489f | |||
| 8a2e0a585c | |||
| 40744ba41a | |||
| 94269afc76 | |||
| 73e673ef8a | |||
| fb41b50e37 | |||
| 2ebc3a6054 | |||
| bb74f822d7 | |||
| 70dbc9cbad | |||
| bd5f4f4f96 | |||
| 179a9db0cb | |||
| 34ee4ebf49 | |||
| da661b0d4f | |||
| 1625692ddd | |||
| 4fc2ce8d9e | |||
| 0663aa55e8 | |||
| 67185f173e | |||
| 2c5e5c6b78 | |||
| 689b101c55 | |||
| 3aa760e3cd | |||
| 82f3167d40 | |||
| 5b2c861d02 | |||
| ca8f4650a3 | |||
| e7f55ee843 | |||
| cdc747548d | |||
| 6038db5c40 | |||
| a9632600b6 |
@@ -0,0 +1 @@
|
||||
*.qch filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -0,0 +1,68 @@
|
||||
name: Auto-build doxygen docs
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
|
||||
|
||||
jobs:
|
||||
doxygen:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/master'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
show-progress: ''
|
||||
- name: Setup and run doxygen
|
||||
run: sudo apt update && sudo apt install doxygen graphviz qhelpgenerator-qt5 -y
|
||||
- name: Set up Git LFS
|
||||
run: |
|
||||
git lfs install
|
||||
git lfs track "*.qch"
|
||||
- name: Run doxygen
|
||||
run: doxygen Doxyfile
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v8
|
||||
with:
|
||||
token: ${{ secrets.MR_TOKEN }}
|
||||
commit-message: update QCH file
|
||||
committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
|
||||
title: Update QCH Help file
|
||||
body: |
|
||||
- Updating QT Help file following commit ${{ github.sha }}.
|
||||
- Auto-generated by [create-pull-request][1]
|
||||
|
||||
[1]: https://github.com/peter-evans/create-pull-request
|
||||
branch: update-qch
|
||||
labels: |
|
||||
qch
|
||||
cicd
|
||||
delete-branch: true
|
||||
add-paths: doc/*.qch
|
||||
- uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ${{ github.workspace }}/doc/html/
|
||||
deploy:
|
||||
# Add a dependency to the build job
|
||||
needs: doxygen
|
||||
|
||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
||||
permissions:
|
||||
pages: write # to deploy to Pages
|
||||
id-token: write # to verify the deployment originates from an appropriate source
|
||||
|
||||
# Deploy to the github-pages environment
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
# Specify runner + deployment step
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4 # or specific "vX.X.X" version tag for this action
|
||||
+3
-1
@@ -3,5 +3,7 @@
|
||||
# Qt build output
|
||||
*.user
|
||||
# doxygen Doxyfile output
|
||||
doc/
|
||||
doc/*
|
||||
!doc/QElectroTech.qch
|
||||
QElectroTech.tag
|
||||
!doc/doc-utils
|
||||
@@ -8,3 +8,6 @@
|
||||
path = elements
|
||||
url = https://github.com/qelectrotech/qelectrotech-elements.git
|
||||
|
||||
[submodule "doxygen-awesome-css"]
|
||||
path = doxygen-awesome-css
|
||||
url = https://github.com/jothepro/doxygen-awesome-css.git
|
||||
|
||||
@@ -266,3 +266,35 @@ Dank aan Chipsterjulien voor de pakkette Archlinux AUR
|
||||
Dank aan Elbert voor de pakkette OS/2
|
||||
Dank aan Zloidemon fvoor de pakkette (port GCC)
|
||||
Dank aan Mrbit van ebuild voor de pakkette Gentoo
|
||||
|
||||
[ko]
|
||||
Qt 라이브러리(Qt Software, http://www.qtsoftware.com/)를 제공해 주신 Qt Software에 감사드립니다. (GNU/GPL 라이선스)
|
||||
KDE 프로젝트 ( http://www.kde.org/ )에 감사드립니다.
|
||||
수학적인 설명을 제공해 주신 Loic에게 감사드립니다.
|
||||
Fedora 패키지를 제공해 주신 Remi Collet에게 감사드립니다.
|
||||
Debian 패키지를 제공해 주신 Laurent Trinques에게 감사드립니다.
|
||||
Mandriva 패키지를 제공해 주신 `trem`에게 감사드립니다.
|
||||
프로젝트 호스팅을 지원해 주신 TuxFamily ( http://tuxfamily.org/ )에 감사드립니다.
|
||||
요소 제공 및 지원을 해주신 `Nishiki`에게 감사드립니다.
|
||||
SingleApplication 클래스를 제공해 준 qtcentre.org에 감사드립니다.
|
||||
스페인어 번역 및 번역 수정에 기여해 주신 Alfredo Carreto ( http://electronicosmx.net )에게 감사드립니다.
|
||||
이탈리아어 번역에 기여해 주신 'Dr.Slump'와 Silvio에게 감사드립니다.
|
||||
포르투갈어 번역에 기여해 주신 Jose Carlos Martins에게 감사드립니다.
|
||||
체코어 번역에 기여해 주신 Pavel Fric에게 감사드립니다.
|
||||
폴란드어 번역에 기여해 주신 Pawel Smiech에게 감사드립니다.
|
||||
러시아어 번역에 기여해 주신 Yuriy Litkevich에게 감사드립니다.
|
||||
카탈로니아어 번역에 기여해 주신 Youssef Ouamalkran에게 감사드립니다.
|
||||
루마니아어 번역에 기여해 주신 Gabi Mandoc에게 감사드립니다.
|
||||
독일어 번역에 기여해 주신 Markus Budde, Jonas Stein, Noah Braden에게 감사드립니다.
|
||||
아랍어 번역에 기여해 주신 Mohamed Souabni에게 감사드립니다.
|
||||
슬로베니아어 번역에 기여해 주신 Uroš Platiše에게 감사드립니다.
|
||||
크로아티아어 번역에 기여해 주신 Antun Marakovic에게 감사드립니다.
|
||||
그리스어 번역에 기여해 주신 Nikos Papadopoylos와 Yannis Gyftomitros에게 감사드립니다.
|
||||
한국어 번역에 기여해 주신 정광호 님께 감사드립니다.
|
||||
Gentoo 패키지를 제공해 주신 Markos Chandras에게 감사드립니다.
|
||||
Slackware 패키지를 제공해 주신 David에게 감사드립니다.
|
||||
Arch Linux AUR 패키지를 제공해 주신 Chipsterjulien에게 감사드립니다.
|
||||
OS/2 패키지를 제공해 주신 Elbert에게 감사드립니다.
|
||||
FreeBSD(GCC 포트) 패키지를 제공해 주신 zloidemon에게 감사드립니다.
|
||||
Gentoo ebuild 패키지를 제공해 주신 Mrbit에게 감사드립니다.
|
||||
|
||||
|
||||
@@ -1,3 +1,128 @@
|
||||
# QElectroTech - CHANGELOG
|
||||
|
||||
## Version 0.100
|
||||
|
||||
_Compiled from provided commit logs and contributor notes._
|
||||
|
||||
## Overview
|
||||
|
||||
This release (v0.100) collects a large set of new features, UI and editor improvements, element and symbol updates, build and packaging fixes, dependency upgrades, translations, and a broad set of bug fixes and stability improvements. It is intended as a stable, feature-rich stepping stone toward the next major workflows for symbol editing, terminal/strip handling and export improvements.
|
||||
|
||||
## Highlights / Key Features
|
||||
|
||||
- **Terminal Strip / Terminal Strip Editor**
|
||||
- New TerminalStripItem type and related editor workflow added.
|
||||
- Support for drawing and displaying terminal bridges and links in the editor.
|
||||
- Full editor support (layout preview, save/load into .qet files) and undo support for terminal strip operations.
|
||||
- **New Example Projects**
|
||||
- Several new example projects included, notably photovoltaic (PV) examples to help users getting started with PV designs.
|
||||
- **Improved Export / Print Handling**
|
||||
- Export limits adjusted and better handling of QPainter/printing boundaries to avoid export artefacts and out-of-range errors.
|
||||
- Export dialog updated to allow larger pixel limits where appropriate.
|
||||
- **Element & Symbol Additions**
|
||||
- New elements and symbols added (including vendor-specific elements and additional sensors/Arduino components).
|
||||
- Improvements to element import & metadata handling.
|
||||
- **Packaging & Multi-arch Support**
|
||||
- Updated packaging scripts for AppImage, Flatpak, Snap and macOS deployment. Improved aarch64/arm64 support.
|
||||
|
||||
## Detailed Changes
|
||||
|
||||
### Editor & UX
|
||||
|
||||
- Better handling for **rotation, flip and mirror** operations in the element editor:
|
||||
- Primitives and text rotation behavior improved.
|
||||
- Finer rotation increments and predictable text orientation after flips/rotations.
|
||||
- **Wiring and conductor behavior**:
|
||||
- More robust creation and movement of wires and conductor bundles.
|
||||
- Improved text attachment and positioning for wires and improved stability while editing complex conductor networks.
|
||||
- **TerminalStrip editor**: see Highlights - includes drawing, preview, layout editing, persistent storage in the project file and undo support.
|
||||
- **Element Editor & Symbol Trim/Sort**:
|
||||
- Improved trimming/normalization of element metadata.
|
||||
- Better sorting and error handling for element imports (DXF and other formats).
|
||||
- Small UI improvements: About dialog updates, autosave spinbox ranges, improved tooltips and mouse-hover help for dynamic texts.
|
||||
|
||||
### New & Updated Elements
|
||||
|
||||
- New elements added for industrial and automation workflows (including Siemens-related elements, logic elements, sensors and Arduino components).
|
||||
- Symbol library additions and cleanup; improved defaults for newly added symbols.
|
||||
- Element meta-data cleanup: article numbers, descriptions, and manufacturer fields were normalized and trimmed on import.
|
||||
|
||||
### Export / Printing / PDF
|
||||
|
||||
- Adjusted internal export limits to avoid hitting QPainter size restrictions; users can now export larger, high-resolution images/prints in more cases.
|
||||
- Better handling of page sizes and printer-related geometry using QRectF improvements.
|
||||
- PDF export improvements to increase reliability of exported vector content.
|
||||
|
||||
### Build, Dependencies, Packaging
|
||||
|
||||
- Upgrades of core test and build dependencies:
|
||||
- Catch2 upgraded to v2.13.10.
|
||||
- googletest upgraded to v1.17.0.
|
||||
- CMake fixes and i18n handling corrected for nl_BE and other locales.
|
||||
- Packaging scripts updated across platforms (AppImage/Flatpak/Snap/macOS deploy) including fixes for aarch64/arm64.
|
||||
- Submodule updates (e.g., qelectrotech-elements, pugixml, SingleApplication) synchronized where needed.
|
||||
|
||||
### Internationalization & Translations
|
||||
|
||||
- Large translation updates across many languages: German (DE), French (FR), Dutch (NL, including nl_BE), Swedish (SV), Italian (IT), Polish (PL), Portuguese-BR (PT-BR), Serbian (SR), Chinese (Simplified) and others.
|
||||
- Fixes and corrections for many UI strings and localized resources.
|
||||
|
||||
### Tests, QA & Logging
|
||||
|
||||
- Improved logging and machine/config-path reporting; Git revision display refined to only show a revision when available.
|
||||
- Unit test updates and fixes to align with updated testing frameworks.
|
||||
|
||||
## Bug Fixes (selected)
|
||||
|
||||
- Fixed crashes and various null pointer access issues discovered by static and dynamic testing.
|
||||
- Resolved multiple reported bugs that caused build failures on some platforms (FTBFS fixes for macOS and others).
|
||||
- Fixed issues with automatic conductor/strand numbering in several edge cases (referenced Bug 293 in the commit logs).
|
||||
- Resolved text/summary headline issues in the German-language summary generator.
|
||||
- Fixes for a number of visually incorrect renderings and layout corner-cases during element transformation (rotate/flip/mirror).
|
||||
- Fixed issues that affected export sizes and caused export artifacts (referenced fixes for bug IDs around #329/#330 in commit notes).
|
||||
|
||||
## Developer & Contributor Notes
|
||||
|
||||
- Reworked parts of the codebase to use QRectF consistently for better compatibility with QPrinter and export pipelines.
|
||||
- Code-style cleanups and comment improvements applied throughout the project.
|
||||
- Expanded test coverage and dependency refresh to keep CI builds stable.
|
||||
|
||||
## Contributors (selected)
|
||||
|
||||
Thanks to the many contributors who made this release possible. Selected contributors mentioned in the commit logs include:
|
||||
|
||||
- Laurent Trinques
|
||||
- joshua
|
||||
- plc-user
|
||||
- Achim
|
||||
- Pascal Sander
|
||||
- Andre Rummler
|
||||
- Magnus Hellströmer
|
||||
- Martin Marmsoler
|
||||
- Remi Collet
|
||||
|
||||
(See the full commit history for the complete contributor list.)
|
||||
|
||||
## Upgrade / Migration Notes
|
||||
|
||||
- No database or project file format breaking changes were reported in the provided logs. As always, back up projects before opening them with a new version.
|
||||
- If you rely on custom element libraries or third-party submodules, verify submodule synchronization after upgrading.
|
||||
- If you are using custom packaging pipelines, review the updated packaging scripts for any changes required by new dependency versions, especially on aarch64/arm64.
|
||||
|
||||
## Known Issues & Limitations
|
||||
|
||||
- Some very large exports may still be limited by platform-specific rendering restrictions; the export dialog now allows larger pixel limits but extreme sizes may still hit system-level limits.
|
||||
- If you use niche element-import workflows (DXF → element import), occasionally metadata normalization may alter whitespace/trim rules - verify newly imported elements in the element editor.
|
||||
|
||||
## How to get help / report bugs
|
||||
|
||||
- Use the project issue tracker (see repository) to report regressions or new bugs with detailed reproduction steps and example .qet files where possible.
|
||||
- Include the output of Help → About (application version and Git revision) when reporting build/packaging issues.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
====== ChangeLog from 0.8 to 0.9 ======
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- error in doxygen action code [\#414](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/414)
|
||||
- "NoName" is automatically inserted into empty text cells in title block [\#407](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/407)
|
||||
- Apple silicon download is not working [\#400](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/400)
|
||||
- Apple silicon download is not working [\#394](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/394)
|
||||
- Differenciating connector for proper labeling [\#390](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/390)
|
||||
@@ -35,12 +37,16 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update QCH Help file [\#416](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/416) ([Int-Circuit](https://github.com/Int-Circuit))
|
||||
- no random hashes to have more constant order of XML-tags [\#415](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/415) ([plc-user](https://github.com/plc-user))
|
||||
- Delete outdated QET docs [\#412](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/412) ([Int-Circuit](https://github.com/Int-Circuit))
|
||||
- Fixing translation file list in CMake [\#404](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/404) ([arummler](https://github.com/arummler))
|
||||
- Update dependencies to fix compilation errors [\#403](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/403) ([arummler](https://github.com/arummler))
|
||||
- Minor corrections to prevent crashes [\#401](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/401) ([Evilscrack](https://github.com/Evilscrack))
|
||||
- Correct compositeText alignment on copying [\#399](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/399) ([ChuckNr11](https://github.com/ChuckNr11))
|
||||
- Better handling of conductors when moving [\#398](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/398) ([ChuckNr11](https://github.com/ChuckNr11))
|
||||
- A few small improvements [\#395](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/395) ([ChuckNr11](https://github.com/ChuckNr11))
|
||||
- Added updated automatic doxygen build on push + theme to make it fit with docs page [\#389](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/389) ([Int-Circuit](https://github.com/Int-Circuit))
|
||||
- qet\_de updated [\#388](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/388) ([Bisku](https://github.com/Bisku))
|
||||
- only calculate grid-point-size, when min != max [\#387](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/387) ([plc-user](https://github.com/plc-user))
|
||||
- Mouse hover text for dynamic text items [\#386](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/386) ([elevatormind](https://github.com/elevatormind))
|
||||
|
||||
+2535
File diff suppressed because it is too large
Load Diff
@@ -214,3 +214,20 @@ QElectroTech と一緒に提供される要素コレクションは現状のま
|
||||
ライセンスのコピーを見るには http://creativecommons.org/licenses/by/3.0/ にアクセスするか、
|
||||
「Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.」に
|
||||
手紙を送ってください。
|
||||
|
||||
[ko]
|
||||
QElectroTech와 함께 제공되는 요소 컬렉션은 “있는 그대로(as is)” 제공되며,
|
||||
특정 목적에 대한 적합성이나 정상 동작에 대한 어떠한 보증도 제공되지 않습니다.
|
||||
요소의 사용, 수정 및 전기 도면에의 통합은 도면의 최종 라이선스와 관계없이
|
||||
아무런 조건 없이 허용됩니다.
|
||||
|
||||
본 소프트웨어 또는 관련 파일을 기계 학습(machine learning) 모델을 구축하기 위한
|
||||
샘플 데이터로 사용하는 것은 허용되지 않습니다.
|
||||
|
||||
전기 도면과 분리된 형태로 QElectroTech 요소 컬렉션의 전부 또는 일부를,
|
||||
수정 여부와 관계없이 재배포하는 경우에는 CC-BY 라이선스 조건을 준수해야 합니다.
|
||||
본 저작물은 Creative Commons Attribution 3.0 라이선스에 따라 제공됩니다.
|
||||
라이선스 사본은 다음 주소에서 확인할 수 있습니다.
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
또는 다음 주소로 서신을 보내실 수 있습니다.
|
||||
Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
|
||||
|
||||
@@ -15,10 +15,10 @@ The main goal of the developers is to provide a libre, easy to use and effective
|
||||
|
||||
### Version
|
||||
|
||||
The current stable version is 0.90 and was released on 2023.01.06.
|
||||
The current stable version is 0.100 and was released on 2026.01.25.
|
||||
Once it has been officially released, the stable version is always frozen and is no longer developed.
|
||||
|
||||
New functionalities, bug and issue fixings are further made in the development version (currently 0.100), which can also be [downloaded](https://qelectrotech.org/download.php).
|
||||
New functionalities, bug and issue fixings are further made in the development version (currently 0.100.1 or 0.200.0 if based on new Qt6 port), which can also be [downloaded](https://qelectrotech.org/download.php).
|
||||
|
||||
Users who want to test and take benefits from the last software implementations should use the development version. But... use it at your own risk, since things are sometimes broken or only partially implemented until they are done!
|
||||
|
||||
@@ -48,8 +48,8 @@ Here are the technical choices made for the software development:
|
||||
* Coding language: [C++](https://en.wikipedia.org/wiki/C%2B%2B)
|
||||
* GUI translations: [Qt Linguist](http://doc.qt.io/qt-5/qtlinguist-index.html)
|
||||
* Version control: [GIT](https://github.com/qelectrotech/qelectrotech-source-mirror.git)
|
||||
* Doxygen documentation :[Doxygen](https://download.qelectrotech.org/qet/doxygen/html/)
|
||||
* QtCreator qch doxygen :[QElectroTech.qch](https://download.qelectrotech.org/qet/doxygen/)
|
||||
* Doxygen documentation :[Doxygen](https://qelectrotech.github.io/qelectrotech-source-mirror/)
|
||||
* QtCreator qch doxygen :[QElectroTech.qch](https://github.com/qelectrotech/qelectrotech-source-mirror/blob/master/doc/QElectroTech.qch)
|
||||
* File format for projects, elements and titleblocks: [XML](http://www.w3schools.com/xml/xml_whatis.asp)
|
||||
* Main development platform: [GNU/Linux](http://getgnulinux.org/en/linux/)
|
||||
* Targeted platforms: Windows, GNU/Linux, Mac OS X, BSDs
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"id": "org.qelectrotech.QElectroTech",
|
||||
"base-version": "5.15-23.08",
|
||||
"runtime": "org.kde.Platform",
|
||||
"runtime-version": "5.15-23.08",
|
||||
"runtime-version": "5.15-25.08",
|
||||
"sdk": "org.kde.Sdk",
|
||||
"command": "qelectrotech",
|
||||
"rename-desktop-file": "org.qelectrotech.qelectrotech.desktop",
|
||||
@@ -18,51 +17,17 @@
|
||||
"--socket=cups",
|
||||
"--filesystem=host"
|
||||
],
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/man",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"name": "tkinter",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --prefix=${FLATPAK_DEST} ."
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/iwalton3/tkinter-standalone",
|
||||
"commit": "23c793bad2429f4a81eee9f50e2d07ae845b7785"
|
||||
}
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"name": "tcl",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://sourceforge.net/projects/tcl/files/Tcl/8.6.11/tcl8.6.11-src.tar.gz",
|
||||
"sha256": "8c0486668586672c5693d7d95817cb05a18c5ecca2f40e2836b9578064088258"
|
||||
}
|
||||
],
|
||||
"subdir": "unix",
|
||||
"post-install": [
|
||||
"chmod +w ${FLATPAK_DEST}/lib/libtcl8.6.so"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tk",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://sourceforge.net/projects/tcl/files/Tcl/8.6.11/tk8.6.11-src.tar.gz",
|
||||
"sha256": "5228a8187a7f70fa0791ef0f975270f068ba9557f57456f51eb02d9d4ea31282"
|
||||
}
|
||||
],
|
||||
"subdir": "unix",
|
||||
"post-install": [
|
||||
"chmod +w ${FLATPAK_DEST}/lib/libtk8.6.so"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"tkinter.json",
|
||||
"pypi-dependencies.json",
|
||||
{
|
||||
"name": "qelectrotech",
|
||||
"buildsystem": "qmake",
|
||||
@@ -76,37 +41,11 @@
|
||||
},
|
||||
{
|
||||
"type": "patch",
|
||||
"path": "patches/0001-build-Fix-the-installation-paths.patch"
|
||||
"paths": [
|
||||
"patches/fix-the-installation-paths.patch"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python3-PySimpleGUI",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} PySimpleGUI"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/d0/c3/c1ce811a1e48d5e0f2df0b393ff189fae4842ec840bb6e4db79c8da55e74/PySimpleGUI-4.41.2.tar.gz",
|
||||
"sha256": "cf42d9f61f28c8e790a9c031ce900a9cee5fd2f950da2f055ed36bbc487dcf11"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python3-qet-tb-generator",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} qet-tb-generator"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/70/aa/ebde0dddfbde799a4e8cf0564e52f95089105a7f562739ee1d16ff5a495a/qet_tb_generator-1.3.1.tar.gz",
|
||||
"sha256": "52c9836387d54bc30ea29272068ec156fc65c3905e0cb863afd9418abc3c0907"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
From 5cb80674cec7363ed00bab5248b3674ca5241c2f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Sabri=20=C3=9Cnal?= <yakushabb@gmail.com>
|
||||
Date: Fri, 20 Feb 2026 22:56:52 +0300
|
||||
Subject: [PATCH] Fix appdata paper cuts
|
||||
|
||||
---
|
||||
misc/qelectrotech.appdata.xml | 26 ++++++++++++++++++++------
|
||||
1 file changed, 20 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/misc/qelectrotech.appdata.xml b/misc/qelectrotech.appdata.xml
|
||||
index dd06ab7..eb02119 100644
|
||||
--- a/misc/qelectrotech.appdata.xml
|
||||
+++ b/misc/qelectrotech.appdata.xml
|
||||
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2006-2023 The QElectroTech Team -->
|
||||
-<application>
|
||||
- <id type="desktop">qelectrotech.desktop</id>
|
||||
+<component type="desktop-application">
|
||||
+ <id>org.qelectrotech.QElectroTech</id>
|
||||
+ <launchable type="desktop-id">qelectrotech.desktop</launchable>
|
||||
<metadata_license>MIT</metadata_license>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<name>QElectroTech</name>
|
||||
@@ -83,9 +84,22 @@
|
||||
QET は要素と回路図に XML 形式を利用し、回路図エディタ、要素エディタ、表題欄エディタを含みます。
|
||||
</p>
|
||||
</description>
|
||||
- <url type="homepage">http://qelectrotech.org</url>
|
||||
+ <url type="homepage">https://qelectrotech.org</url>
|
||||
+ <url type="bugtracker">https://qelectrotech.org/bugtracker</url>
|
||||
+ <url type="vcs-browser">https://github.com/qelectrotech/qelectrotech-source-mirror</url>
|
||||
+ <developer id="org.qelectrotech">
|
||||
+ <name>QElectroTech</name>
|
||||
+ </developer>
|
||||
<screenshots>
|
||||
- <screenshot type="default">http://download.tuxfamily.org/qet/screens/qelectrotech5.png</screenshot>
|
||||
+ <screenshot type="default">
|
||||
+ <image>https://qelectrotech.org/screenshots/qet_overview04.png</image>
|
||||
+ </screenshot>
|
||||
+ <screenshot>
|
||||
+ <image>https://qelectrotech.org/screenshots/qet_overview06.png</image>
|
||||
+ </screenshot>
|
||||
+ <screenshot>
|
||||
+ <image>https://qelectrotech.org/screenshots/qet_overview09.png</image>
|
||||
+ </screenshot>
|
||||
</screenshots>
|
||||
- <updatecontact>qet@lists.tuxfamily.org</updatecontact>
|
||||
-</application>
|
||||
+ <update_contact>qet@lists.tuxfamily.org</update_contact>
|
||||
+</component>
|
||||
--
|
||||
2.53.0
|
||||
|
||||
+3
-16
@@ -1,16 +1,6 @@
|
||||
From 14f0685ddcf3a7d64bb85a3e9a9ac97c369bb508 Mon Sep 17 00:00:00 2001
|
||||
From: Laurent Trinques <scorpio@qelectrotech.org>
|
||||
Date: Sat, 26 Sep 2020 22:52:52 +0200
|
||||
Subject: [PATCH] build: Fix the installation paths
|
||||
|
||||
---
|
||||
qelectrotech.pro | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/qelectrotech.pro b/qelectrotech.pro
|
||||
index 7baddbb08..5dcda04b6 100644
|
||||
--- a/qelectrotech.pro
|
||||
+++ b/qelectrotech.pro
|
||||
diff -ruN a/qelectrotech.pro b/qelectrotech.pro
|
||||
--- a/qelectrotech.pro 2023-04-20 11:47:07.695847458 +0200
|
||||
+++ b/qelectrotech.pro 2023-04-20 11:51:14.843611898 +0200
|
||||
@@ -5,18 +5,18 @@
|
||||
# Chemins utilises pour la compilation et l'installation de QET
|
||||
unix {
|
||||
@@ -35,6 +25,3 @@ index 7baddbb08..5dcda04b6 100644
|
||||
QET_APPDATA_PATH = 'share/appdata'
|
||||
}
|
||||
win32 {
|
||||
--
|
||||
2.35.1
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
commit 3bbb09a0598fc976d2bf8dac932b27740086c1bd
|
||||
Author: Hubert Figuière <hub@figuiere.net>
|
||||
Date: Sun Dec 21 17:49:43 2025 -0500
|
||||
|
||||
Port to Python 3.13
|
||||
|
||||
Signed-off-by: Hubert Figuière <hub@figuiere.net>
|
||||
|
||||
diff --git a/_tkinter.c b/_tkinter.c
|
||||
index e537707..dfc5789 100644
|
||||
--- a/_tkinter.c
|
||||
+++ b/_tkinter.c
|
||||
@@ -21,7 +21,6 @@ Copyright (C) 1994 Steen Lumholt.
|
||||
|
||||
*/
|
||||
|
||||
-#define PY_SSIZE_T_CLEAN
|
||||
#ifndef Py_BUILD_CORE_BUILTIN
|
||||
# define Py_BUILD_CORE_MODULE 1
|
||||
#endif
|
||||
@@ -32,6 +31,9 @@ Copyright (C) 1994 Steen Lumholt.
|
||||
# include "pycore_fileutils.h" // _Py_stat()
|
||||
#endif
|
||||
|
||||
+#include "pycore_long.h" // _PyLong_IsNegative()
|
||||
+#include "pycore_sysmodule.h" // _PySys_GetOptionalAttrString()
|
||||
+
|
||||
#ifdef MS_WINDOWS
|
||||
#include <windows.h>
|
||||
#endif
|
||||
@@ -135,7 +137,7 @@ _get_tcl_lib_path()
|
||||
struct stat stat_buf;
|
||||
int stat_return_value;
|
||||
|
||||
- prefix = PyUnicode_FromWideChar(Py_GetPrefix(), -1);
|
||||
+ (void) _PySys_GetOptionalAttrString("base_prefix", &prefix);
|
||||
if (prefix == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -143,9 +145,11 @@ _get_tcl_lib_path()
|
||||
/* Check expected location for an installed Python first */
|
||||
tcl_library_path = PyUnicode_FromString("\\tcl\\tcl" TCL_VERSION);
|
||||
if (tcl_library_path == NULL) {
|
||||
+ Py_DECREF(prefix);
|
||||
return NULL;
|
||||
}
|
||||
tcl_library_path = PyUnicode_Concat(prefix, tcl_library_path);
|
||||
+ Py_DECREF(prefix);
|
||||
if (tcl_library_path == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -959,7 +963,8 @@ AsObj(PyObject *value)
|
||||
(unsigned char *)(void *)&wideValue,
|
||||
sizeof(wideValue),
|
||||
PY_LITTLE_ENDIAN,
|
||||
- /* signed */ 1) == 0) {
|
||||
+ /* signed */ 1,
|
||||
+ /* with_exceptions */ 1) == 0) {
|
||||
return Tcl_NewWideIntObj(wideValue);
|
||||
}
|
||||
PyErr_Clear();
|
||||
@@ -1988,7 +1993,7 @@ _tkinter_tkapp_getboolean(TkappObject *self, PyObject *arg)
|
||||
int v;
|
||||
|
||||
if (PyLong_Check(arg)) { /* int or bool */
|
||||
- return PyBool_FromLong(Py_SIZE(arg) != 0);
|
||||
+ return PyBool_FromLong(!_PyLong_IsZero((PyLongObject *)arg));
|
||||
}
|
||||
|
||||
if (PyTclObject_Check(arg)) {
|
||||
diff --git a/clinic/_tkinter.c.h b/clinic/_tkinter.c.h
|
||||
index 9103565..f43510d 100644
|
||||
--- a/clinic/_tkinter.c.h
|
||||
+++ b/clinic/_tkinter.c.h
|
||||
@@ -2,6 +2,8 @@
|
||||
preserve
|
||||
[clinic start generated code]*/
|
||||
|
||||
+#include "pycore_modsupport.h" // _PyArg_BadArgument()
|
||||
+
|
||||
PyDoc_STRVAR(_tkinter_tkapp_eval__doc__,
|
||||
"eval($self, script, /)\n"
|
||||
"--\n"
|
||||
@@ -426,7 +428,7 @@ _tkinter_tkapp_createfilehandler(TkappObject *self, PyObject *const *args, Py_ss
|
||||
goto exit;
|
||||
}
|
||||
file = args[0];
|
||||
- mask = _PyLong_AsInt(args[1]);
|
||||
+ mask = PyLong_AsInt(args[1]);
|
||||
if (mask == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
@@ -490,7 +492,7 @@ _tkinter_tkapp_createtimerhandler(TkappObject *self, PyObject *const *args, Py_s
|
||||
if (!_PyArg_CheckPositional("createtimerhandler", nargs, 2, 2)) {
|
||||
goto exit;
|
||||
}
|
||||
- milliseconds = _PyLong_AsInt(args[0]);
|
||||
+ milliseconds = PyLong_AsInt(args[0]);
|
||||
if (milliseconds == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
@@ -524,7 +526,7 @@ _tkinter_tkapp_mainloop(TkappObject *self, PyObject *const *args, Py_ssize_t nar
|
||||
if (nargs < 1) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- threshold = _PyLong_AsInt(args[0]);
|
||||
+ threshold = PyLong_AsInt(args[0]);
|
||||
if (threshold == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
@@ -558,7 +560,7 @@ _tkinter_tkapp_dooneevent(TkappObject *self, PyObject *const *args, Py_ssize_t n
|
||||
if (nargs < 1) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- flags = _PyLong_AsInt(args[0]);
|
||||
+ flags = PyLong_AsInt(args[0]);
|
||||
if (flags == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
@@ -741,29 +743,29 @@ _tkinter_create(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
||||
if (nargs < 4) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- interactive = _PyLong_AsInt(args[3]);
|
||||
- if (interactive == -1 && PyErr_Occurred()) {
|
||||
+ interactive = PyObject_IsTrue(args[3]);
|
||||
+ if (interactive < 0) {
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 5) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- wantobjects = _PyLong_AsInt(args[4]);
|
||||
- if (wantobjects == -1 && PyErr_Occurred()) {
|
||||
+ wantobjects = PyObject_IsTrue(args[4]);
|
||||
+ if (wantobjects < 0) {
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 6) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- wantTk = _PyLong_AsInt(args[5]);
|
||||
- if (wantTk == -1 && PyErr_Occurred()) {
|
||||
+ wantTk = PyObject_IsTrue(args[5]);
|
||||
+ if (wantTk < 0) {
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 7) {
|
||||
goto skip_optional;
|
||||
}
|
||||
- sync = _PyLong_AsInt(args[6]);
|
||||
- if (sync == -1 && PyErr_Occurred()) {
|
||||
+ sync = PyObject_IsTrue(args[6]);
|
||||
+ if (sync < 0) {
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 8) {
|
||||
@@ -814,7 +816,7 @@ _tkinter_setbusywaitinterval(PyObject *module, PyObject *arg)
|
||||
PyObject *return_value = NULL;
|
||||
int new_val;
|
||||
|
||||
- new_val = _PyLong_AsInt(arg);
|
||||
+ new_val = PyLong_AsInt(arg);
|
||||
if (new_val == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
diff --git a/setup.py b/setup.py
|
||||
index f379305..cf7b6ad 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -3,11 +3,11 @@ from distutils.core import setup, Extension
|
||||
module1 = Extension('_tkinter',
|
||||
libraries=['tcl8.6', 'tk8.6'],
|
||||
sources=['_tkinter.c'],
|
||||
- include_dirs=['/app/include/'])
|
||||
+ include_dirs=['/app/include/', '/usr/include/python3.13/internal/'])
|
||||
|
||||
setup(
|
||||
name='tkinter-standalone',
|
||||
- version='3.11',
|
||||
+ version='3.13',
|
||||
description='Tkinter packaged as an external package for flatpak.',
|
||||
ext_modules=[module1],
|
||||
packages=["tkinter"]
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "pypi-dependencies",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [],
|
||||
"modules": [
|
||||
{
|
||||
"name": "python3-PySimpleGUI",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"PySimpleGUI\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4d/d9/3de4b7ca71a7779e4f4a160088621b072a29d9b814a7fa9b5411571f4849/pysimplegui-5.0.8.3-py3-none-any.whl",
|
||||
"sha256": "67e35ad6dd76e9369051261114f4711308e87815a0488f7fa28b37c29a546f8b"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python3-qet-tb-generator",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"qet-tb-generator\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4d/d9/3de4b7ca71a7779e4f4a160088621b072a29d9b814a7fa9b5411571f4849/pysimplegui-5.0.8.3-py3-none-any.whl",
|
||||
"sha256": "67e35ad6dd76e9369051261114f4711308e87815a0488f7fa28b37c29a546f8b"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/63/d6/81de49a3ccec259583241fec4d79c668eff4acf9eb4d0226db36e1399f2d/qet_tb_generator-1.3.1-py3-none-any.whl",
|
||||
"sha256": "80fb4af229edfd5774e61f96fa387ff394d5060abd0ca45c3c74d29de1ce9b53"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"//note": "The `tkinter` module is missing from the Freedesktop Sdk's Python installation",
|
||||
"name": "tkinter",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --prefix=${FLATPAK_DEST} --no-build-isolation ."
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/iwalton3/tkinter-standalone",
|
||||
"commit": "88aa05075d90d393a29a484bce676e237d311082"
|
||||
},
|
||||
{
|
||||
"type": "patch",
|
||||
"path": "patches/tkinter-build.patch"
|
||||
}
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"name": "tcl",
|
||||
"buildsystem": "autotools",
|
||||
"subdir": "unix",
|
||||
"post-install": [
|
||||
"chmod 755 /app/lib/libtcl*.so"
|
||||
],
|
||||
"cleanup": [
|
||||
"/bin"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://prdownloads.sourceforge.net/tcl/tcl8.6.17-src.tar.gz",
|
||||
"sha256": "a3903371efcce8a405c5c245d029e9f6850258a60fa3761c4d58995610949b31"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tk",
|
||||
"buildsystem": "autotools",
|
||||
"subdir": "unix",
|
||||
"post-install": [
|
||||
"chmod 755 /app/lib/libtk*.so"
|
||||
],
|
||||
"cleanup": [
|
||||
"/bin",
|
||||
"/lib/tk*/demos"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://prdownloads.sourceforge.net/tcl/tk8.6.17-src.tar.gz",
|
||||
"sha256": "e4982df6f969c08bf9dd858a6891059b4a3f50dc6c87c10abadbbe2fc4838946"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,191 +0,0 @@
|
||||
# Header, don't edit
|
||||
NLF v6
|
||||
# Start editing here
|
||||
# Language ID
|
||||
2067
|
||||
# Font and size - dash (-) means default
|
||||
-
|
||||
-
|
||||
# Codepage - dash (-) means ANSI code page
|
||||
1252
|
||||
# RTL - anything else than RTL means LTR
|
||||
-
|
||||
# Translation by Ronny Desmedt (any credits should go here)
|
||||
# ^Branding
|
||||
Nullsoft Install System %s
|
||||
# ^SetupCaption
|
||||
$(^Name) Installatie
|
||||
# ^UninstallCaption
|
||||
$(^Name) Deïnstallatie
|
||||
# ^LicenseSubCaption
|
||||
: Licentie overeenkomst
|
||||
# ^ComponentsSubCaption
|
||||
: Installatie Opties
|
||||
# ^DirSubCaption
|
||||
: Installatie Map
|
||||
# ^InstallingSubCaption
|
||||
: Installeren
|
||||
# ^CompletedSubCaption
|
||||
: Voltooid
|
||||
# ^UnComponentsSubCaption
|
||||
: Deïnstallatie Opties
|
||||
# ^UnDirSubCaption
|
||||
: Deïnstallatie Map
|
||||
# ^ConfirmSubCaption
|
||||
: Bevestigen
|
||||
# ^UninstallingSubCaption
|
||||
: Deïnstalleren
|
||||
# ^UnCompletedSubCaption
|
||||
: Voltooid
|
||||
# ^BackBtn
|
||||
< &Terug
|
||||
# ^NextBtn
|
||||
&Volgende >
|
||||
# ^AgreeBtn
|
||||
Ik ben &Akkoord
|
||||
# ^AcceptBtn
|
||||
Ik &Accepteer de licentie overeenkomst
|
||||
# ^DontAcceptBtn
|
||||
Ik &Accepteer de licentie overeenkomst niet
|
||||
# ^InstallBtn
|
||||
&Installeer
|
||||
# ^UninstallBtn
|
||||
&Deïnstalleer
|
||||
# ^CancelBtn
|
||||
Afbreken
|
||||
# ^CloseBtn
|
||||
&Sluiten
|
||||
# ^BrowseBtn
|
||||
B&laderen...
|
||||
# ^ShowDetailsBtn
|
||||
Toon &details
|
||||
# ^ClickNext
|
||||
Klik op volgende om verder te gaan.
|
||||
# ^ClickInstall
|
||||
Klik op installeren om de installatie te starten.
|
||||
# ^ClickUninstall
|
||||
Klik op deïnstalleren om de installatie te verwijderen.
|
||||
# ^Name
|
||||
Naam
|
||||
# ^Completed
|
||||
Voltooid
|
||||
# ^LicenseText
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te installeren. Als u akkord bent met de licentie overeenkomst, klik op akkoord.
|
||||
# ^LicenseTextCB
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te installeren. Als u akkord bent met de licentie overeenkomst, klik op onderstaande selectievakje. $_CLICK
|
||||
# ^LicenseTextRB
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te installeren. Als u akkord bent met de licentie overeenkomst, selecteer de eerste onderstaande optie. $_CLICK
|
||||
# ^UnLicenseText
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te deïnstalleren. Als u akkord bent met de licentie overeenkomst, klik op akkoord.
|
||||
# ^UnLicenseTextCB
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te deïnstalleren. Als u akkord bent met de licentie overeenkomst, klik op onderstaande selectievakje. $_CLICK
|
||||
# ^UnLicenseTextRB
|
||||
Gelieve de licentie overeenkomst te lezen alvorens $(^NameDA) te deïnstalleren. Als u akkord bent met de licentie overeenkomst, selecteer de eerste onderstaande optie. $_CLICK
|
||||
# ^Custom
|
||||
Aangepast
|
||||
# ^ComponentsText
|
||||
Selecteer de onderdelen die u wilt installeren en deselecteer de onderdelen die u niet wilt installeren. $_CLICK
|
||||
# ^ComponentsSubText1
|
||||
Selecteer een installatie type:
|
||||
# ^ComponentsSubText2_NoInstTypes
|
||||
Selecteer de onderdelen om te installeren:
|
||||
# ^ComponentsSubText2
|
||||
Of, selecteer optionelen onderdelen die u wilt installeren:
|
||||
# ^UnComponentsText
|
||||
Selecteer de onderdelen die u wilt deïnstalleren en deselecteer de onderdelen die u niet wilt deïinstalleren. $_CLICK
|
||||
# ^UnComponentsSubText1
|
||||
Selecteer een deïnstallatie type:
|
||||
# ^UnComponentsSubText2_NoInstTypes
|
||||
Selecteer de onderdelen om te deïnstalleren:
|
||||
# ^UnComponentsSubText2
|
||||
Of, selecteer optionelen onderdelen die u wilt deïnstalleren:
|
||||
# ^DirText
|
||||
De installatie van $(^NameDA) wordt in volgende map uitgevoerd. Om in een andere map te installeren, klik op bladeren om een andere map te selecteren. $_CLICK
|
||||
# ^DirSubText
|
||||
Installatie map
|
||||
# ^DirBrowseText
|
||||
Selecteerd de map om $(^NameDA) in te installeren:
|
||||
# ^UnDirText
|
||||
De deïnstallatie van $(^NameDA) in de volgende map. Om een andere map te deïnstalleren, klik op bladren om een andere map te selecteren. $_CLICK
|
||||
# ^UnDirSubText
|
||||
""
|
||||
# ^UnDirBrowseText
|
||||
Selecteer en map om $(^NameDA) van te deînstalleren:
|
||||
# ^SpaceAvailable
|
||||
"Beschikbare ruimte: "
|
||||
# ^SpaceRequired
|
||||
"Benodigde ruimte: "
|
||||
# ^UninstallingText
|
||||
$(^NameDA) wordt gedeïnstalleerd uit volgende map. $_CLICK
|
||||
# ^UninstallingSubText
|
||||
Deïnstalleren van:
|
||||
# ^FileError
|
||||
Fout bij openen van bestand om te schrijven: \r\n\r\n$0\r\n\r\nKlik op afbreken om de installatie te stoppen,\r\nOpnieuw om te proberen, of\r\nNegeren om dit bestand over te slaan.
|
||||
# ^FileError_NoIgnore
|
||||
Fout bij openen van bestand om te schrijven: \r\n\r\n$0\r\n\r\nOpnieuw om te proberen, of\r\nAfbreken om de installatie te stoppen.
|
||||
# ^CantWrite
|
||||
"Kan niet schrijven: "
|
||||
# ^CopyFailed
|
||||
Kopieren mislukt
|
||||
# ^CopyTo
|
||||
"Copier naar "
|
||||
# ^Registering
|
||||
"Registreren: "
|
||||
# ^Unregistering
|
||||
"Deregistreren: "
|
||||
# ^SymbolNotFound
|
||||
"Kan symbool niet vinden: "
|
||||
# ^CouldNotLoad
|
||||
"Kan niet laden: "
|
||||
# ^CreateFolder
|
||||
"Map maken: "
|
||||
# ^CreateShortcut
|
||||
"Snelkoppeling maken: "
|
||||
# ^CreatedUninstaller
|
||||
"Doe deïnstallatie: "
|
||||
# ^Delete
|
||||
"Verwijder bestanden: "
|
||||
# ^DeleteOnReboot
|
||||
Verwijder bij herstarten: "
|
||||
# ^ErrorCreatingShortcut
|
||||
"Fout bij maken snelkoppeling: "
|
||||
# ^ErrorCreating
|
||||
"Fout bij maken: "
|
||||
# ^ErrorDecompressing
|
||||
Fout bij uitpakken gegevens! Beschadigd bestand?
|
||||
# ^ErrorRegistering
|
||||
Fout bij registreren DLL
|
||||
# ^ExecShell
|
||||
"ExecShell: "
|
||||
# ^Exec
|
||||
"Uitvoeren: "
|
||||
# ^Extract
|
||||
"Extract: "
|
||||
# ^ErrorWriting
|
||||
Fout: fout bij schrijven naar bestand "
|
||||
# ^InvalidOpcode
|
||||
Installie beschadigd: niet toegestane opcode
|
||||
# ^NoOLE
|
||||
"Geen OLE voor: "
|
||||
# ^OutputFolder
|
||||
"Bestemmings map: "
|
||||
# ^RemoveFolder
|
||||
"Verwijder mapr: "
|
||||
# ^RenameOnReboot
|
||||
"Hernoem bij opstarten: "
|
||||
# ^Rename
|
||||
"Hernoem: "
|
||||
# ^Skipped
|
||||
Overgeslagen: "
|
||||
# ^CopyDetails
|
||||
Copier details naar klembord
|
||||
# ^LogInstall
|
||||
Log instaltie proces
|
||||
# ^Byte
|
||||
B
|
||||
# ^Kilo
|
||||
K
|
||||
# ^Mega
|
||||
M
|
||||
# ^Giga
|
||||
G
|
||||
@@ -1,128 +0,0 @@
|
||||
;Language:Dutch_Belgium (2067)
|
||||
;By Ronny Desmedt
|
||||
|
||||
!insertmacro LANGFILE "Dutch_Belgium" "Dutch_Belgium"
|
||||
|
||||
!ifdef MUI_WELCOMEPAGE
|
||||
${LangFileString} MUI_TEXT_WELCOME_INFO_TITLE "Welkom bij $(^NameDA) installatie Wizard"
|
||||
${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Deze wizard zal u begeleiden bij de installatie van $(^NameDA).$\r$\n$\r$\nHet is aanbevol dat u alle andere programmas afsluit voordat u deze installatie uitvoerd. Dit geeft de mogelijkheid om relevante systeem bestanden bij te werken zonder dat uw systeem terug moet opstarten.$\r$\n$\r$\n$_CLICK"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNWELCOMEPAGE
|
||||
${LangFileString} MUI_UNTEXT_WELCOME_INFO_TITLE "Welkom bij de $(^NameDA) deïnstallatie wizard"
|
||||
${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Deze wizard zal u begeleiden bij de deïnstallatie van $(^NameDA).$\r$\n$\r$\nControleer of $(^NameDA) is afgesloten alvorens de deïnstallatie te starten.$\r$\n$\r$\n$_CLICK"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_LICENSEPAGE
|
||||
${LangFileString} MUI_TEXT_LICENSE_TITLE "Licentie overeenkomst"
|
||||
${LangFileString} MUI_TEXT_LICENSE_SUBTITLE "Gelieve de licentie te lezen alvorens U $(^NameDA) installeert."
|
||||
${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM "Klik op akkoord om de overeenkomst te aanvaarden. U moet de overeenkomst aanvaarden om $(^NameDA) te installeren."
|
||||
${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX "Als u de voorwaarden van de overeenkomst aanvaard, Klik op onderstaande selectievakje. U moet de overeenkomst aanvaarden om $(^NameDA) te installeren. $_CLICK"
|
||||
${LangFileString} MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Als u de voorwaarden van de overeenkomst aanvaard, selecteer de eerste onderstaande optie. U moet de overeenkomst aanvaarden om $(^NameDA) te installeren. $_CLICK"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNLICENSEPAGE
|
||||
${LangFileString} MUI_UNTEXT_LICENSE_TITLE "Licentie overeenkomst"
|
||||
${LangFileString} MUI_UNTEXT_LICENSE_SUBTITLE "Gelieve de licentie overeenkomst te herlezen alvorens met de deïnstallatie van $(^NameDA) verder te doen."
|
||||
${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM "Klik op akkoord om de overeenkomst te aanvaarden. U moet de overeenkomst aanvaarden om $(^NameDA) te deïnstalleren."
|
||||
${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_CHECKBOX "Als u de voorwaarden van de overeenkomst aanvaard, Klik op onderstaande selectievakje. U moet de overeenkomst aanvaarden om $(^NameDA) te deïnstalleren. $_CLICK"
|
||||
${LangFileString} MUI_UNINNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS "Als u de voorwaarden van de overeenkomst aanvaard, selecteer de eerste onderstaande optie. U moet de overeenkomst aanvaarden om $(^NameDA) te deïnstalleren. $_CLICK"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_LICENSEPAGE | MUI_UNLICENSEPAGE
|
||||
${LangFileString} MUI_INNERTEXT_LICENSE_TOP "Gebruik pagina neer om de rest van de overeenkomst te lezen."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_COMPONENTSPAGE
|
||||
${LangFileString} MUI_TEXT_COMPONENTS_TITLE "Kies onderdelen"
|
||||
${LangFileString} MUI_TEXT_COMPONENTS_SUBTITLE "Kies de onderdelen van $(^NameDA) die u wilt installeren."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNCOMPONENTSPAGE
|
||||
${LangFileString} MUI_UNTEXT_COMPONENTS_TITLE "Kies onderdelen"
|
||||
${LangFileString} MUI_UNTEXT_COMPONENTS_SUBTITLE "Kies de onderdelen van $(^NameDA) die u wilt deïnstalleren."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_COMPONENTSPAGE | MUI_UNCOMPONENTSPAGE
|
||||
${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Beschrijving"
|
||||
!ifndef NSIS_CONFIG_COMPONENTPAGE_ALTERNATIVE
|
||||
${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beweeg de muisaanwijzer over de onderdelen om de beschrijving te zien."
|
||||
!else
|
||||
${LangFileString} MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Beweeg de muisaanwijzer over de onderdelen om de beschrijving te zien."
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!ifdef MUI_DIRECTORYPAGE
|
||||
${LangFileString} MUI_TEXT_DIRECTORY_TITLE "Kies een installatie locatie"
|
||||
${LangFileString} MUI_TEXT_DIRECTORY_SUBTITLE "Kies een map waar U $(^NameDA) wilt installeren."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNDIRECTORYPAGE
|
||||
${LangFileString} MUI_UNTEXT_DIRECTORY_TITLE "Kies een deïnstallatie locatie"
|
||||
${LangFileString} MUI_UNTEXT_DIRECTORY_SUBTITLE "Kies een map waar U $(^NameDA) wilt deïnstalleren."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_INSTFILESPAGE
|
||||
${LangFileString} MUI_TEXT_INSTALLING_TITLE "Installeren"
|
||||
${LangFileString} MUI_TEXT_INSTALLING_SUBTITLE "Even gedult terwijl $(^NameDA) wordt geinstalleerd."
|
||||
${LangFileString} MUI_TEXT_FINISH_TITLE "Installatie voltooid"
|
||||
${LangFileString} MUI_TEXT_FINISH_SUBTITLE "De installatie is succesvol afgerond."
|
||||
${LangFileString} MUI_TEXT_ABORT_TITLE "Installatie is afgebroken"
|
||||
${LangFileString} MUI_TEXT_ABORT_SUBTITLE "De installatie is niet voltooid."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNINSTFILESPAGE
|
||||
${LangFileString} MUI_UNTEXT_UNINSTALLING_TITLE "DeïnEven geduld terwijl $(^NameDA) wordt gedeïnstalleerd."
|
||||
${LangFileString} MUI_UNTEXT_FINISH_TITLE "Deïnstallatie voltooid"
|
||||
${LangFileString} MUI_UNTEXT_FINISH_SUBTITLE "Deïnstallatie succesvol afgerond."
|
||||
${LangFileString} MUI_UNTEXT_ABORT_TITLE "Deïnstallatie onderbroken"
|
||||
${LangFileString} MUI_UNTEXT_ABORT_SUBTITLE "Deïnstallatie is niet voltooid."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_FINISHPAGE
|
||||
${LangFileString} MUI_TEXT_FINISH_INFO_TITLE "Voltooien van de $(^NameDA) installatie Wizard"
|
||||
${LangFileString} MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) is geinstalleerd op uw computer.$\r$\n$\r$\nKlik op einde om de installatie wizard af te sluiten."
|
||||
${LangFileString} MUI_TEXT_FINISH_INFO_REBOOT "Uw computer moet herstarten op de installatie van $(^NameDA) te voltooien. Wilt u nu opnieuw opstarten?"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNFINISHPAGE
|
||||
${LangFileString} MUI_UNTEXT_FINISH_INFO_TITLE "Voltooien van de $(^NameDA) deïnstallatie wizard"
|
||||
${LangFileString} MUI_UNTEXT_FINISH_INFO_TEXT "$(^NameDA) is gedeïnstalleerd op uw computer.$\r$\n$\r$\nKlik op einde om de installatie wizard af te sluiten."
|
||||
${LangFileString} MUI_UNTEXT_FINISH_INFO_REBOOT "Uw computer moet herstarten op de deïnstallatie van $(^NameDA)te voltooien. Wilt u nu opnieuw opstarten?"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_FINISHPAGE | MUI_UNFINISHPAGE
|
||||
${LangFileString} MUI_TEXT_FINISH_REBOOTNOW "Nu herstarten"
|
||||
${LangFileString} MUI_TEXT_FINISH_REBOOTLATER "Ik wil later herstarten"
|
||||
${LangFileString} MUI_TEXT_FINISH_RUN "&Starten $(^NameDA)"
|
||||
${LangFileString} MUI_TEXT_FINISH_SHOWREADME "&Toon leesmij"
|
||||
${LangFileString} MUI_BUTTONTEXT_FINISH "&Einde"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_STARTMENUPAGE
|
||||
${LangFileString} MUI_TEXT_STARTMENU_TITLE "Kies start menu map"
|
||||
${LangFileString} MUI_TEXT_STARTMENU_SUBTITLE "Kies een map in start menu voor de snelkoppeling van $(^NameDA)."
|
||||
${LangFileString} MUI_INNERTEXT_STARTMENU_TOP "Kies een map in start menu waar u de programma snelkoppelingen wilt aanmaken. U kan ook de naam van een nieuwe map opgeven."
|
||||
${LangFileString} MUI_INNERTEXT_STARTMENU_CHECKBOX "Maak geen snelkoppelingen"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNCONFIRMPAGE
|
||||
${LangFileString} MUI_UNTEXT_CONFIRM_TITLE "Deïnstalleer$(^NameDA)"
|
||||
${LangFileString} MUI_UNTEXT_CONFIRM_SUBTITLE "Verwijder $(^NameDA) van uw computer."
|
||||
!endif
|
||||
|
||||
!ifdef MUI_ABORTWARNING
|
||||
${LangFileString} MUI_TEXT_ABORTWARNING "Weet u zeker dat U installatie van $(^Name) wilt afbreken?"
|
||||
!endif
|
||||
|
||||
!ifdef MUI_UNABORTWARNING
|
||||
${LangFileString} MUI_UNTEXT_ABORTWARNING "Weet u zeker dat U de deïnstallatie van $(^Name)wilt afbreken?"
|
||||
!endif
|
||||
|
||||
!ifdef MULTIUSER_INSTALLMODEPAGE
|
||||
${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Kies gebruikers"
|
||||
${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Kies voor welke gebruikers U $(^NameDA) wilt installeren."
|
||||
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Kies of U $(^NameDA) alleen voor u zelf of voor alle gebruikers op deze computer wilt installeren. $(^ClickNext)"
|
||||
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Installeer voor iedereen die deze computer gebruikt"
|
||||
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Installeer alleen voor mij"
|
||||
!endif
|
||||
@@ -0,0 +1,118 @@
|
||||
# Migration NSIS 2.x → 3.x — QElectroTech
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
| Fichier | Changement |
|
||||
|---|---|
|
||||
| `QET64.nsi` | Migration complète (voir détails ci-dessous) |
|
||||
| `lang_extra_fr.nsh` | Réencodé ISO-8859-1 → UTF-8 |
|
||||
| `lang_extra.nsh` | Inchangé (déjà UTF-8) |
|
||||
|
||||
---
|
||||
|
||||
## Détail des changements dans `QET64.nsi`
|
||||
|
||||
### 1. `SetCompressor` déplacé en tête de fichier
|
||||
**NSIS 3 exige** que `SetCompressor` apparaisse avant toute `Section` ou `Function`.
|
||||
Avant il était après les `!include` et `!define` — cela fonctionnait en NSIS 2 mais
|
||||
génère un avertissement/erreur en NSIS 3.
|
||||
|
||||
```nsis
|
||||
; ✅ NSIS 3 — en tout premier
|
||||
SetCompressor /FINAL /SOLID lzma
|
||||
```
|
||||
|
||||
### 2. `XPStyle on` supprimé → remplacé par `ManifestSupportedOS`
|
||||
`XPStyle on` est **retiré en NSIS 3**. Il était utilisé pour activer les styles visuels
|
||||
Windows XP/Vista. NSIS 3 gère cela via le manifeste de l'exécutable :
|
||||
|
||||
```nsis
|
||||
; ✅ NSIS 3
|
||||
ManifestSupportedOS all
|
||||
ManifestDPIAware true
|
||||
```
|
||||
|
||||
### 3. `Var /GLOBAL` déclarées au niveau global
|
||||
En NSIS 2, des `Var /GLOBAL` à l'intérieur d'une `Section` compilaient sans erreur.
|
||||
En NSIS 3, les variables doivent être déclarées **au niveau du script** (avant toute section).
|
||||
|
||||
```nsis
|
||||
; ✅ NSIS 3 — déclaration globale
|
||||
Var final_qet_exe
|
||||
Var final_project_ico
|
||||
Var final_element_ico
|
||||
Var final_titleblock_ico
|
||||
```
|
||||
|
||||
### 4. `SetRegView 64` ajouté dans `.onInit`, section cachée, et `un.onInit`
|
||||
En NSIS 3, sur un système 64 bits, **la redirection de registre WOW6432Node est active
|
||||
par défaut**. Sans `SetRegView 64`, les clés HKLM atterrissent dans
|
||||
`HKLM\SOFTWARE\Wow6432Node\` au lieu de `HKLM\SOFTWARE\`.
|
||||
|
||||
Ajouté à trois endroits :
|
||||
- `Function .onInit` → pour lire la clé d'installation existante
|
||||
- Section cachée (registry/shortcuts) → avant les `WriteRegStr`
|
||||
- `Section "Uninstall"` → pour supprimer les bonnes clés
|
||||
- `Function un.onInit` → cohérence avec l'installation
|
||||
|
||||
### 5. Icônes MUI mises à jour
|
||||
Les icônes `XPUI-install.ico` / `XPUI-uninstall.ico` sont remplacées par les nouvelles
|
||||
icônes NSIS 3 :
|
||||
|
||||
```nsis
|
||||
; ✅ NSIS 3
|
||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico"
|
||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
|
||||
```
|
||||
> Les anciennes icônes XPUI sont encore présentes pour compatibilité ascendante, mais
|
||||
> les nouvelles sont recommandées.
|
||||
|
||||
### 6. `${IfNot} ${RunningX64}` — syntaxe clarifiée
|
||||
Remplacement du bloc `${If}/${Else}/${EndIf}` moins lisible par `${IfNot}` plus concis :
|
||||
|
||||
```nsis
|
||||
; ✅ NSIS 3 — idiome recommandé
|
||||
${IfNot} ${RunningX64}
|
||||
MessageBox MB_OK|MB_ICONSTOP $(wrongArch)
|
||||
Abort
|
||||
${EndIf}
|
||||
```
|
||||
|
||||
### 7. URLs HTTP → HTTPS
|
||||
Les URLs `http://qelectrotech.org/` ont été mises à jour en `https://qelectrotech.org/`
|
||||
(cosmétique, sans impact sur la compilation).
|
||||
|
||||
### 8. `lang_extra_fr.nsh` — Réencodage ISO-8859-1 → UTF-8
|
||||
NSIS 3 est **Unicode natif** : tous les fichiers `.nsh` doivent être encodés en UTF-8
|
||||
(avec ou sans BOM). Le fichier `lang_extra_fr.nsh` était en ISO-8859-1 — il a été
|
||||
converti en UTF-8.
|
||||
|
||||
> **Commande utilisée :** `iconv -f ISO-8859-1 -t UTF-8 lang_extra_fr.nsh`
|
||||
|
||||
---
|
||||
|
||||
## Ce qui N'A PAS changé (déjà compatible NSIS 3)
|
||||
|
||||
- `!include "MUI2.nsh"` — inchangé ✅
|
||||
- `!define MUI_LANGDLL_ALLLANGUAGES` — toujours supporté ✅
|
||||
- `!insertmacro MUI_RESERVEFILE_LANGDLL` — inchangé ✅
|
||||
- `FileFunc.nsh` / macro `Locate` — inchangé ✅
|
||||
- `RequestExecutionLevel admin` — inchangé ✅
|
||||
- `InstallDir "$PROGRAMFILES64\..."` — inchangé ✅
|
||||
- Structure Sections / SubSections — inchangée ✅
|
||||
- `!insertmacro MUI_FUNCTION_DESCRIPTION_*` — inchangé ✅
|
||||
- Toutes les `LangString` — inchangées ✅
|
||||
- `Dutch_Belgium` via `Contrib/` — inchangé ✅
|
||||
|
||||
---
|
||||
|
||||
## Checklist avant compilation avec NSIS 3
|
||||
|
||||
- [ ] NSIS 3.x installé (https://nsis.sourceforge.io/)
|
||||
- [ ] Tous les plugins utilisés sont la version Unicode/NSIS3
|
||||
- `FileFunc.nsh` : fourni avec NSIS 3 ✅
|
||||
- `x64.nsh` : fourni avec NSIS 3 ✅
|
||||
- `MUI2.nsh` : fourni avec NSIS 3 ✅
|
||||
- [ ] `lang_extra.nsh` et `lang_extra_fr.nsh` encodés en UTF-8
|
||||
- [ ] Le fichier `Contrib/Dutch_Belgium.nlf` / `.nsh` est placé dans
|
||||
`%NSIS%\Contrib\Language files\` ou référencé via un chemin relatif
|
||||
+505
-407
@@ -1,407 +1,505 @@
|
||||
; this file is part of installer for QElectroTech
|
||||
; Copyright (C)2015 QElectroTech Team <scorpio@qelectrotech.org>
|
||||
;
|
||||
; This program is free software; you can redistribute it and/or
|
||||
; modify it under the terms of the GNU General Public License
|
||||
; as published by the Free Software Foundation; either
|
||||
; version 2 of the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; if not, write to the Free Software
|
||||
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
; WebSite : http://qelectrotech.org/
|
||||
|
||||
;--------------------------------
|
||||
;Include Modern UI
|
||||
!include x64.nsh
|
||||
!include "MUI2.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
!insertmacro Locate
|
||||
!include FileFunc.nsh
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
|
||||
|
||||
!ifndef PROC
|
||||
!define PROC 32 ;
|
||||
!endif
|
||||
|
||||
|
||||
|
||||
; MUI Settings
|
||||
;--------------------------------
|
||||
;General
|
||||
; General Product Description Definitions
|
||||
!define SOFT_NAME "QElectroTech"
|
||||
!define SOFT_VERSION "0.5-dev_x86_64-win64+4094"
|
||||
!define SOFT_WEB_SITE "http://qelectrotech.org/"
|
||||
!define SOFT_BUILD "1"
|
||||
|
||||
|
||||
SetCompressor /final /solid lzma
|
||||
CRCCheck force
|
||||
XPStyle on
|
||||
BrandingText "${SOFT_NAME}-${SOFT_VERSION}-${SOFT_BUILD}" ; Shows in the Bottom Left of the installer
|
||||
|
||||
|
||||
;Name and file
|
||||
Name "${SOFT_NAME} ${SOFT_VERSION}"
|
||||
OutFile "Installer_${SOFT_NAME}-${SOFT_VERSION}-${SOFT_BUILD}.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES64\${SOFT_NAME}"
|
||||
|
||||
;Get installation folder from registry if available
|
||||
InstallDirRegKey HKCU "Software\${SOFT_NAME}" ""
|
||||
|
||||
;Request application privileges for Windows Vista
|
||||
; we request for admin because we write stuff into the registry
|
||||
RequestExecutionLevel admin
|
||||
|
||||
;--------------------------------
|
||||
;Interface Settings
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\XPUI-install.ico"
|
||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\XPUI-uninstall.ico"
|
||||
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\images\wizard.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
|
||||
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP ".\images\header.bmp" ; optional
|
||||
;--------------------------------
|
||||
;Language Selection Dialog Settings
|
||||
|
||||
;Remember the installer language
|
||||
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_LANGDLL_REGISTRY_KEY "Software\${SOFT_NAME}"
|
||||
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "files\LICENSE"
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
; Finish page and checkbox to run QElectroTech
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\Lancer QET.bat"
|
||||
!define MUI_FINISHPAGE_RUN_NOTCHECKED
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "$(Check)"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
;--------------------------------
|
||||
;Languages
|
||||
;Since NSIS 2.26, the language selection dialog of Modern UI hides languages unsupported by the user's selected codepage by default.
|
||||
;To revert to the old behavior and display all languages, no matter what the user will see when they're selected, use MUI_LANGDLL_ALLLANGUAGES.
|
||||
!define MUI_LANGDLL_ALLLANGUAGES
|
||||
|
||||
; For consistency, we limit the installer to languages supported by QElectroTech itself
|
||||
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "Russian"
|
||||
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||
!insertmacro MUI_LANGUAGE "Czech"
|
||||
!insertmacro MUI_LANGUAGE "Polish"
|
||||
!insertmacro MUI_LANGUAGE "Greek"
|
||||
!insertmacro MUI_LANGUAGE "Arabic"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
!insertmacro MUI_LANGUAGE "Romanian"
|
||||
!insertmacro MUI_LANGUAGE "Catalan"
|
||||
!insertmacro MUI_LANGUAGE "Croatian"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "Dutch_Belgium"
|
||||
!insertmacro MUI_LANGUAGE "Danish"
|
||||
!insertmacro MUI_LANGUAGE "Swedish"
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
|
||||
!include lang_extra.nsh
|
||||
!include lang_extra_fr.nsh
|
||||
|
||||
|
||||
|
||||
SetOverwrite on
|
||||
Section "Main Program"
|
||||
SectionIn RO ; Read only, always installed
|
||||
|
||||
Setoutpath "$INSTDIR\bin\"
|
||||
File "./files/bin/${SOFT_NAME}.exe"
|
||||
|
||||
Setoutpath "$INSTDIR"
|
||||
File "./files/ChangeLog"
|
||||
File "./files/CREDIT"
|
||||
File "./files/ELEMENTS.LICENSE"
|
||||
File "./files/LICENSE"
|
||||
File "./files/qet_uninstall_file_associations.reg"
|
||||
File "./files/README"
|
||||
File "./files/register_filetypes.bat"
|
||||
File "Lancer QET.bat"
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/ico"
|
||||
|
||||
SectionEnd
|
||||
|
||||
;---------------------------
|
||||
SetOverwrite on
|
||||
SubSection "$(Elements)" SEC01
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Electric)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/10_electric"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Logic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/20_logic"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Hydraulic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/30_hydraulic"
|
||||
SectionEnd
|
||||
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Pneumatic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/50_pneumatic"
|
||||
SectionEnd
|
||||
|
||||
|
||||
;---------------------------------
|
||||
SubSection "$(Energy)"
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(water)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/11_water"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Refrigeration)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/21_refrigeration"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Solar_thermal)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/31_solar_thermal"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SubSectionEnd
|
||||
SubSectionEnd
|
||||
;-------------------------------
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Lang)" SEC02
|
||||
SetOutPath "$INSTDIR\lang"
|
||||
File "./files/lang/*.qm"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Titleblocks)" SEC03
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/titleblocks"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Examples)" SEC04
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/examples"
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(var1)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(var2)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(var3)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
;--------------------------------
|
||||
|
||||
;Installer Sections
|
||||
|
||||
Section ""
|
||||
SetOutPath "$INSTDIR"
|
||||
;Store installation folder
|
||||
WriteRegStr HKCU "Software\${SOFT_NAME}" "" $INSTDIR
|
||||
; write uninstall strings
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" "DisplayName" "${SOFT_NAME} (remove only)"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
|
||||
;Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
SetRegView 64
|
||||
|
||||
; get the final path for the icons and the launch script
|
||||
Var /GLOBAL final_qet_exe
|
||||
Var /GLOBAL final_project_ico
|
||||
Var /GLOBAL final_element_ico
|
||||
Var /GLOBAL final_titleblock_ico
|
||||
|
||||
StrCpy $final_qet_exe "$INSTDIR\Lancer QET.bat"
|
||||
StrCpy $final_project_ico "$INSTDIR\ico\application-x-qet-project.ico"
|
||||
StrCpy $final_element_ico "$INSTDIR\ico\application-x-qet-element.ico"
|
||||
StrCpy $final_titleblock_ico "$INSTDIR\ico\application-x-qet-titleblock.ico"
|
||||
|
||||
; write file associations registry keys
|
||||
WriteRegStr HKEY_CLASSES_ROOT "Applications\qelectrotech.exe\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\""
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".qet" "" "qet_diagram_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file" "" "Diagram QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\DefaultIcon" "" "$final_project_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\""
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".elmt" "" "qet_element_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file" "" "Element QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\DefaultIcon" "" "$final_element_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\""
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".titleblock" "" "qet_titleblock_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file" "" "Titleblock QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_titleblock_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_titleblock_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file\DefaultIcon" "" "$final_titleblock_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\""
|
||||
|
||||
SetShellVarContext all ; all users
|
||||
; shortcuts in the start menu
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}"
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}\Manual"
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}\Upgrade"
|
||||
CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\QElectroTech.lnk" "$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico"
|
||||
CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\Uninstall QElectroTech.lnk" "$INSTDIR\Uninstall.exe"
|
||||
; TODO : add the QuickStart Guide (or any other documentation) when available
|
||||
|
||||
; shortcut on the desktop
|
||||
CreateShortCut "$DESKTOP\QElectroTech.lnk" "$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Manual\Manual_English.url" "InternetShortcut" "URL" "https://download.qelectrotech.org/qet/manual_0.7/build/index.html"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Manual\Manual_Russian.url" "InternetShortcut" "URL" "https://download.qelectrotech.org/qet/joshua/html/QET_ru.html"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Upgrade\Download.url" "InternetShortcut" "URL" "https://download.qelectrotech.org/qet/builds/nightly/"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Donate.url" "InternetShortcut" "URL" "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZZHC9D7C3MDPC"
|
||||
|
||||
;changing $INSTDIR\elements\ *.elmt to read-only attribute
|
||||
|
||||
${Locate} "$INSTDIR\elements\" "/L=FD /M=*.elmt" "LocateCallback"
|
||||
IfErrors 0 +2
|
||||
;MessageBox MB_OK "Error"
|
||||
SectionEnd
|
||||
|
||||
Function LocateCallback
|
||||
SetFileAttributes $R9 FILE_ATTRIBUTE_READONLY
|
||||
Push $0
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
;Installer Functions
|
||||
|
||||
Function .onInit
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
${If} ${RunningX64}
|
||||
${Else}
|
||||
|
||||
MessageBox MB_OK|MB_ICONSTOP $(wrongArch)
|
||||
Abort $(wrongArch)
|
||||
${EndIf}
|
||||
|
||||
;Auto-uninstall old before installing new
|
||||
ReadRegStr $R0 HKLM \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" \
|
||||
"UninstallString"
|
||||
StrCmp $R0 "" done
|
||||
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
|
||||
"$(installed)" \
|
||||
IDOK uninst
|
||||
Abort
|
||||
|
||||
;Run the uninstaller
|
||||
uninst:
|
||||
ClearErrors
|
||||
ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
|
||||
|
||||
IfErrors no_remove_uninstaller done
|
||||
;You can either use Delete /REBOOTOK in the uninstaller or add some code
|
||||
;here to remove the uninstaller. Use a registry key to check
|
||||
;whether the user has chosen to uninstall. If you are using an uninstaller
|
||||
;components page, make sure all sections are uninstalled.
|
||||
no_remove_uninstaller:
|
||||
|
||||
done:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
;Descriptions
|
||||
|
||||
;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGAUGE SPECIFIC
|
||||
|
||||
;Assign descriptions to sections
|
||||
;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
; !insertmacro MUI_DESCRIPTION_TEXT ${CopyFiles} "CopyFiles"
|
||||
;!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
;--------------------------------
|
||||
;Uninstaller Section
|
||||
|
||||
Section "Uninstall"
|
||||
SetShellVarContext all ; all users
|
||||
; remove start menu shortcuts
|
||||
RMDir /r "$SMPROGRAMS\${SOFT_NAME}"
|
||||
; remove shortcut on the desktop
|
||||
Delete "$DESKTOP\QElectroTech.lnk"
|
||||
|
||||
; remove the application files
|
||||
Delete "$INSTDIR\*.*"
|
||||
RMDir /r "$INSTDIR"
|
||||
|
||||
;remove installation registry keys
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}"
|
||||
DeleteRegKey /ifempty HKCU "Software\${SOFT_NAME}"
|
||||
|
||||
; remove file associations registry keys
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "Applications\qelectrotech.exe"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".qet"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_diagram_file"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".elmt"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_element_file"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".titleblock"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_titleblock_file"
|
||||
|
||||
IfFileExists "$INSTDIR" 0 NoErrorMsg
|
||||
;MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist
|
||||
NoErrorMsg:
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
;Uninstaller Functions
|
||||
|
||||
Function un.onInit
|
||||
|
||||
!insertmacro MUI_UNGETLANGUAGE
|
||||
|
||||
FunctionEnd
|
||||
|
||||
|
||||
; this file is part of installer for QElectroTech
|
||||
; Copyright (C)2015 QElectroTech Team <scorpio@qelectrotech.org>
|
||||
;
|
||||
; This program is free software; you can redistribute it and/or
|
||||
; modify it under the terms of the GNU General Public License
|
||||
; as published by the Free Software Foundation; either
|
||||
; version 2 of the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; if not, write to the Free Software
|
||||
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
; WebSite : https://qelectrotech.org/
|
||||
|
||||
;==============================================================================
|
||||
; NSIS 3.x compatibility notes:
|
||||
; - Unicode is native in NSIS 3 (no need for Unicode installer plugin)
|
||||
; - XPStyle is deprecated/removed; ManifestSupportedOS replaces it
|
||||
; - SetCompressor must appear before any Section/Function
|
||||
; - SetRegView 64 moved to top of the hidden section (before WriteRegStr)
|
||||
; - x64.nsh is still available but ${RunningX64} is now also in x64.nsh
|
||||
; - MUI2.nsh is unchanged; MUI_LANGDLL_ALLLANGUAGES is still valid
|
||||
; - FileFunc.nsh / Locate macro: unchanged
|
||||
; - Var /GLOBAL must be declared at global scope, not inside a Section
|
||||
;==============================================================================
|
||||
|
||||
;--------------------------------
|
||||
; NSIS 3 requires SetCompressor BEFORE any Section or Function
|
||||
SetCompressor /FINAL /SOLID lzma
|
||||
|
||||
;--------------------------------
|
||||
; Includes
|
||||
!include x64.nsh
|
||||
!include "MUI2.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
!insertmacro Locate
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
|
||||
;--------------------------------
|
||||
; NSIS 3: Unicode is the default. The installer binary will be Unicode.
|
||||
; No extra plugin needed.
|
||||
|
||||
!ifndef PROC
|
||||
!define PROC 64
|
||||
!endif
|
||||
|
||||
;--------------------------------
|
||||
; General Product Description Definitions
|
||||
!define SOFT_NAME "QElectroTech"
|
||||
!define SOFT_VERSION "0.5-dev_x86_64-win64+4094"
|
||||
!define SOFT_WEB_SITE "https://qelectrotech.org/"
|
||||
!define SOFT_BUILD "1"
|
||||
|
||||
;--------------------------------
|
||||
; General settings
|
||||
CRCCheck force
|
||||
BrandingText "${SOFT_NAME}-${SOFT_VERSION}-${SOFT_BUILD}"
|
||||
|
||||
; NSIS 3: XPStyle is removed. Use ManifestSupportedOS to declare modern OS support.
|
||||
; This replaces "XPStyle on" and enables proper DPI awareness + visual styles.
|
||||
ManifestSupportedOS all
|
||||
ManifestDPIAware true
|
||||
|
||||
; Name and output file
|
||||
Name "${SOFT_NAME} ${SOFT_VERSION}"
|
||||
OutFile "Installer_${SOFT_NAME}-${SOFT_VERSION}-${SOFT_BUILD}.exe"
|
||||
|
||||
; Default installation folder
|
||||
InstallDir "$PROGRAMFILES64\${SOFT_NAME}"
|
||||
|
||||
; Get installation folder from registry if available
|
||||
; NSIS 3: InstallDirRegKey still works, but SetRegView 64 must be set at
|
||||
; runtime (in .onInit) to read 64-bit registry hive correctly.
|
||||
InstallDirRegKey HKCU "Software\${SOFT_NAME}" ""
|
||||
|
||||
; Request admin privileges (required for HKLM / file associations)
|
||||
RequestExecutionLevel admin
|
||||
|
||||
;--------------------------------
|
||||
; Declare global variables at script scope (NSIS 3 requirement)
|
||||
; In NSIS 2 these could be declared inside a Section; that still compiles
|
||||
; in NSIS 3 but triggers a warning. Declare them here.
|
||||
Var final_qet_exe
|
||||
Var final_project_ico
|
||||
Var final_element_ico
|
||||
Var final_titleblock_ico
|
||||
|
||||
;--------------------------------
|
||||
; MUI Interface Settings
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
; NSIS 3 ships updated icons; XPUI icons are still present for compatibility.
|
||||
; You may switch to the modern ones:
|
||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico"
|
||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
|
||||
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\images\wizard.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
|
||||
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP ".\images\header.bmp"
|
||||
|
||||
;--------------------------------
|
||||
; Language Selection Dialog Settings (remember chosen language in registry)
|
||||
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_LANGDLL_REGISTRY_KEY "Software\${SOFT_NAME}"
|
||||
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
|
||||
|
||||
;--------------------------------
|
||||
; Pages
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "files\LICENSE"
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
; Finish page – checkbox to launch QElectroTech
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\Lancer QET.bat"
|
||||
!define MUI_FINISHPAGE_RUN_NOTCHECKED
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "$(Check)"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
;--------------------------------
|
||||
; Languages
|
||||
; NSIS 3: MUI_LANGDLL_ALLLANGUAGES is still supported and works as before.
|
||||
!define MUI_LANGDLL_ALLLANGUAGES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English" ; first = default
|
||||
!insertmacro MUI_LANGUAGE "Korean"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "Russian"
|
||||
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||
!insertmacro MUI_LANGUAGE "Czech"
|
||||
!insertmacro MUI_LANGUAGE "Polish"
|
||||
!insertmacro MUI_LANGUAGE "Greek"
|
||||
!insertmacro MUI_LANGUAGE "Arabic"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
!insertmacro MUI_LANGUAGE "Romanian"
|
||||
!insertmacro MUI_LANGUAGE "Catalan"
|
||||
!insertmacro MUI_LANGUAGE "Croatian"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "Danish"
|
||||
!insertmacro MUI_LANGUAGE "Hungarian"
|
||||
!insertmacro MUI_LANGUAGE "Japanese"
|
||||
!insertmacro MUI_LANGUAGE "Mongolian"
|
||||
!insertmacro MUI_LANGUAGE "Norwegian"
|
||||
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||
!insertmacro MUI_LANGUAGE "Serbian"
|
||||
!insertmacro MUI_LANGUAGE "Slovak"
|
||||
!insertmacro MUI_LANGUAGE "Slovenian"
|
||||
!insertmacro MUI_LANGUAGE "Swedish"
|
||||
!insertmacro MUI_LANGUAGE "Turkish"
|
||||
!insertmacro MUI_LANGUAGE "Ukrainian"
|
||||
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
|
||||
; Language strings for all supported locales
|
||||
!include lang_extra.nsh
|
||||
!include lang_extra_fr.nsh
|
||||
!include lang_extra_missing.nsh
|
||||
; NOTE: The string "uninstFailed" must be defined in lang_extra.nsh and
|
||||
; lang_extra_fr.nsh (and any other lang_extra_*.nsh) like so:
|
||||
; LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall QElectroTech manually before continuing."
|
||||
; LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller QElectroTech manuellement avant de continuer."
|
||||
|
||||
;==============================================================================
|
||||
; SECTIONS
|
||||
;==============================================================================
|
||||
|
||||
SetOverwrite on
|
||||
|
||||
Section "Main Program"
|
||||
SectionIn RO ; Read-only – always installed
|
||||
|
||||
SetOutPath "$INSTDIR\bin\"
|
||||
File "./files/bin/${SOFT_NAME}.exe"
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File "./files/ChangeLog"
|
||||
File "./files/CREDIT"
|
||||
File "./files/ELEMENTS.LICENSE"
|
||||
File "./files/LICENSE"
|
||||
File "./files/qet_uninstall_file_associations.reg"
|
||||
File "./files/README"
|
||||
File "./files/register_filetypes.bat"
|
||||
File "Lancer QET.bat"
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/ico"
|
||||
|
||||
SectionEnd
|
||||
|
||||
;---------------------------
|
||||
SetOverwrite on
|
||||
SubSection "$(Elements)" SEC01
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Electric)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/10_electric"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Logic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/20_logic"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Hydraulic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/30_hydraulic"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Pneumatic)"
|
||||
SetOutPath "$INSTDIR\elements"
|
||||
File /r "./files/elements/50_pneumatic"
|
||||
SectionEnd
|
||||
|
||||
;---------------------------------
|
||||
SubSection "$(Energy)"
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(water)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/11_water"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Refrigeration)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/21_refrigeration"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Solar_thermal)"
|
||||
SetOutPath "$INSTDIR\elements\60_energy"
|
||||
File /r "./files/elements/60_energy/31_solar_thermal"
|
||||
File /r "./files/elements/60_energy/"
|
||||
SectionEnd
|
||||
|
||||
SubSectionEnd
|
||||
|
||||
SubSectionEnd
|
||||
|
||||
;-------------------------------
|
||||
SetOverwrite on
|
||||
Section "$(Lang)" SEC02
|
||||
SetOutPath "$INSTDIR\lang"
|
||||
File "./files/lang/*.qm"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Titleblocks)" SEC03
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/titleblocks"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Examples)" SEC04
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/examples"
|
||||
SectionEnd
|
||||
|
||||
SetOverwrite on
|
||||
Section "$(Fonts)" SEC05
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "./files/fonts"
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
; Component descriptions
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(var1)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(var2)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(var3)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4)
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(var5)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
;--------------------------------
|
||||
; Hidden section: registry, shortcuts, file associations
|
||||
Section ""
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
; NSIS 3 on 64-bit Windows: set 64-bit registry view BEFORE any WriteRegStr
|
||||
; so keys land in HKLM\SOFTWARE (not the Wow6432Node redirect).
|
||||
SetRegView 64
|
||||
|
||||
; Store installation folder
|
||||
WriteRegStr HKCU "Software\${SOFT_NAME}" "" $INSTDIR
|
||||
|
||||
; Uninstall registry entries
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" \
|
||||
"DisplayName" "${SOFT_NAME} (remove only)"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" \
|
||||
"UninstallString" '"$INSTDIR\Uninstall.exe"'
|
||||
|
||||
; Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
; Build paths for icons and launch script
|
||||
StrCpy $final_qet_exe "$INSTDIR\Lancer QET.bat"
|
||||
StrCpy $final_project_ico "$INSTDIR\ico\application-x-qet-project.ico"
|
||||
StrCpy $final_element_ico "$INSTDIR\ico\application-x-qet-element.ico"
|
||||
StrCpy $final_titleblock_ico "$INSTDIR\ico\application-x-qet-titleblock.ico"
|
||||
|
||||
; File associations – .qet
|
||||
WriteRegStr HKEY_CLASSES_ROOT "Applications\qelectrotech.exe\shell\open\command" "" \
|
||||
'"$final_qet_exe" "%1"'
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".qet" "" "qet_diagram_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file" "" "Diagram QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\DefaultIcon" "" "$final_project_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\shell\open\command" "" '"$final_qet_exe" "%1"'
|
||||
|
||||
; File associations – .elmt
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".elmt" "" "qet_element_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file" "" "Element QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\DefaultIcon" "" "$final_element_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\shell\open\command" "" '"$final_qet_exe" "%1"'
|
||||
|
||||
; File associations – .titleblock
|
||||
WriteRegStr HKEY_CLASSES_ROOT ".titleblock" "" "qet_titleblock_file"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file" "" "Titleblock QET"
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_titleblock_file" "EditFlags" 0x00000000
|
||||
WriteRegDWORD HKEY_CLASSES_ROOT "qet_titleblock_file" "BrowserFlags" 0x00000008
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file\DefaultIcon" "" "$final_titleblock_ico"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file\shell\open\command" "" '"$final_qet_exe" "%1"'
|
||||
|
||||
SetShellVarContext all ; apply shortcuts for all users
|
||||
|
||||
; Start Menu shortcuts
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}"
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}\Manual"
|
||||
CreateDirectory "$SMPROGRAMS\${SOFT_NAME}\Upgrade"
|
||||
CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\QElectroTech.lnk" \
|
||||
"$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico"
|
||||
CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\Uninstall QElectroTech.lnk" \
|
||||
"$INSTDIR\Uninstall.exe"
|
||||
|
||||
; Desktop shortcut
|
||||
CreateShortCut "$DESKTOP\QElectroTech.lnk" \
|
||||
"$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico"
|
||||
|
||||
; Internet shortcuts
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Manual\Manual_English.url" \
|
||||
"InternetShortcut" "URL" "https://download.qelectrotech.org/qet/manual_0.7/build/index.html"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Manual\Manual_Russian.url" \
|
||||
"InternetShortcut" "URL" "https://download.qelectrotech.org/qet/joshua/html/QET_ru.html"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Upgrade\Download.url" \
|
||||
"InternetShortcut" "URL" "https://download.qelectrotech.org/qet/builds/nightly/"
|
||||
WriteINIStr "$SMPROGRAMS\${SOFT_NAME}\Donate.url" \
|
||||
"InternetShortcut" "URL" "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZZHC9D7C3MDPC"
|
||||
|
||||
; Mark installed elements as read-only
|
||||
${Locate} "$INSTDIR\elements\" "/L=FD /M=*.elmt" "LocateCallback"
|
||||
IfErrors 0 +2
|
||||
; MessageBox MB_OK "Error in Locate" ; uncomment for debugging
|
||||
|
||||
SectionEnd
|
||||
|
||||
;--------------------------------
|
||||
; Locate callback – sets FILE_ATTRIBUTE_READONLY on each .elmt file
|
||||
Function LocateCallback
|
||||
SetFileAttributes $R9 FILE_ATTRIBUTE_READONLY
|
||||
Push $0
|
||||
FunctionEnd
|
||||
|
||||
;==============================================================================
|
||||
; INSTALLER FUNCTIONS
|
||||
;==============================================================================
|
||||
|
||||
Function .onInit
|
||||
; NSIS 3: SetRegView in .onInit ensures InstallDirRegKey reads the right hive
|
||||
SetRegView 64
|
||||
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
; Abort if not running on a 64-bit OS
|
||||
${IfNot} ${RunningX64}
|
||||
MessageBox MB_OK|MB_ICONSTOP $(wrongArch)
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Auto-uninstall previous version before installing new one
|
||||
; ----------------------------------------------------------------
|
||||
ReadRegStr $R0 HKLM \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" \
|
||||
"UninstallString"
|
||||
|
||||
; No previous installation found → proceed normally
|
||||
StrCmp $R0 "" done
|
||||
|
||||
; Also read the install dir of the previous version
|
||||
ReadRegStr $R1 HKCU "Software\${SOFT_NAME}" ""
|
||||
|
||||
; Ask user whether to uninstall the existing version
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(installed)" IDOK uninst
|
||||
Abort ; user clicked Cancel → stop the installer
|
||||
|
||||
uninst:
|
||||
; Remove surrounding quotes from the UninstallString if present
|
||||
; (some installers write: "C:\path\Uninstall.exe" — ExecWait needs clean path)
|
||||
StrCpy $R2 $R0 1 ; first character
|
||||
StrCmp $R2 '"' 0 unquoted
|
||||
; Strip leading and trailing quote
|
||||
StrCpy $R0 $R0 "" 1 ; remove leading "
|
||||
StrLen $R3 $R0
|
||||
IntOp $R3 $R3 - 1
|
||||
StrCpy $R0 $R0 $R3 ; remove trailing "
|
||||
unquoted:
|
||||
|
||||
; Run the uninstaller silently, keeping it in its own directory
|
||||
; _?= prevents NSIS from copying the uninstaller to a temp folder,
|
||||
; so it can delete itself and the whole $INSTDIR tree.
|
||||
ClearErrors
|
||||
${If} $R1 != ""
|
||||
ExecWait '"$R0" /S _?=$R1' ; silent uninstall using saved install dir
|
||||
${Else}
|
||||
ExecWait '"$R0" /S' ; fallback if install dir unknown
|
||||
${EndIf}
|
||||
|
||||
IfErrors uninstall_failed
|
||||
|
||||
; Verify the old installation is gone before continuing
|
||||
${If} $R1 != ""
|
||||
IfFileExists "$R1\${SOFT_NAME}.exe" uninstall_failed
|
||||
IfFileExists "$R1\bin\${SOFT_NAME}.exe" uninstall_failed
|
||||
${EndIf}
|
||||
|
||||
Goto done
|
||||
|
||||
uninstall_failed:
|
||||
MessageBox MB_OK|MB_ICONSTOP "$(uninstFailed)"
|
||||
Abort
|
||||
|
||||
done:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;==============================================================================
|
||||
; UNINSTALLER SECTION
|
||||
;==============================================================================
|
||||
|
||||
Section "Uninstall"
|
||||
SetRegView 64 ; NSIS 3: required so we delete from the correct hive
|
||||
SetShellVarContext all
|
||||
|
||||
; Remove Start Menu shortcuts
|
||||
RMDir /r "$SMPROGRAMS\${SOFT_NAME}"
|
||||
|
||||
; Remove Desktop shortcut
|
||||
Delete "$DESKTOP\QElectroTech.lnk"
|
||||
|
||||
; Remove application files
|
||||
Delete "$INSTDIR\*.*"
|
||||
RMDir /r "$INSTDIR"
|
||||
|
||||
; Remove installation registry keys
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}"
|
||||
DeleteRegKey /ifempty HKCU "Software\${SOFT_NAME}"
|
||||
|
||||
; Remove file associations registry keys
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "Applications\qelectrotech.exe"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".qet"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_diagram_file"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".elmt"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_element_file"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT ".titleblock"
|
||||
DeleteRegKey HKEY_CLASSES_ROOT "qet_titleblock_file"
|
||||
|
||||
IfFileExists "$INSTDIR" 0 NoErrorMsg
|
||||
; MessageBox MB_OK "Note: $INSTDIR could not be removed!"
|
||||
NoErrorMsg:
|
||||
|
||||
SectionEnd
|
||||
|
||||
;==============================================================================
|
||||
; UNINSTALLER FUNCTIONS
|
||||
;==============================================================================
|
||||
|
||||
Function un.onInit
|
||||
SetRegView 64 ; NSIS 3: match the view used during install
|
||||
!insertmacro MUI_UNGETLANGUAGE
|
||||
FunctionEnd
|
||||
|
||||
+213
-164
@@ -10,6 +10,7 @@
|
||||
LangString Refrigeration ${LANG_ENGLISH} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_ENGLISH} "Solar_thermal"
|
||||
LangString Lang ${LANG_ENGLISH} "Lang"
|
||||
LangString Fonts ${LANG_ENGLISH} "Fonts"
|
||||
LangString Titleblocks ${LANG_ENGLISH} "Titleblocks"
|
||||
LangString Examples ${LANG_ENGLISH} "Examples"
|
||||
LangString Check ${LANG_ENGLISH} "Check to start ${SOFT_NAME}"
|
||||
@@ -17,8 +18,34 @@
|
||||
LangString var2 ${LANG_ENGLISH} "languagues files"
|
||||
LangString var3 ${LANG_ENGLISH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_ENGLISH} "Examples of diagrams"
|
||||
LangString var5 ${LANG_ENGLISH} "Fonts"
|
||||
LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall ${SOFT_NAME} manually before continuing."
|
||||
|
||||
|
||||
|
||||
LangString installed ${LANG_KOREAN} "${SOFT_NAME}이(가) 이미 설치되어 있습니다. $\n$\n이전 버전을 제거하려면 `OK`를, 업그레이드를 취소하려면 `Cancel`을 클릭하세요."
|
||||
LangString wrongArch ${LANG_KOREAN} "이 배포판은 64비트 컴퓨터에서만 사용할 수 있습니다."
|
||||
LangString Elements ${LANG_KOREAN} "요소"
|
||||
LangString Electric ${LANG_KOREAN} "전기"
|
||||
LangString Logic ${LANG_KOREAN} "로직"
|
||||
LangString Hydraulic ${LANG_KOREAN} "유압"
|
||||
LangString Pneumatic ${LANG_KOREAN} "공압"
|
||||
LangString Energy ${LANG_KOREAN} "에너지"
|
||||
LangString water ${LANG_KOREAN} "물"
|
||||
LangString Refrigeration ${LANG_KOREAN} "냉동"
|
||||
LangString Solar_thermal ${LANG_KOREAN} "태양열"
|
||||
LangString Lang ${LANG_KOREAN} "언어"
|
||||
LangString Fonts ${LANG_KOREAN} "글꼴"
|
||||
LangString Titleblocks ${LANG_KOREAN} "표제란"
|
||||
LangString Examples ${LANG_KOREAN} "예제"
|
||||
LangString Check ${LANG_KOREAN} "${SOFT_NAME} 실행"
|
||||
LangString var1 ${LANG_KOREAN} "공식 컬렉션 요소"
|
||||
LangString var2 ${LANG_KOREAN} "언어 파일"
|
||||
LangString var3 ${LANG_KOREAN} "표제란 예제"
|
||||
LangString var4 ${LANG_KOREAN} "도면 예제"
|
||||
LangString var5 ${LANG_KOREAN} "글꼴"
|
||||
LangString uninstFailed ${LANG_KOREAN} "이전 버전을 제거하지 못했습니다.$\n계속하기 전에 ${SOFT_NAME}을(를) 수동으로 제거해 주세요."
|
||||
|
||||
|
||||
LangString installed ${LANG_POLISH} "${SOFT_NAME} jest już zainstalowany. $\n$\nKliknij `OK` aby odinstalować poprzednią wersję lub `Anuluj` aby przerwać aktualizację."
|
||||
LangString wrongArch ${LANG_POLISH} "To oprogramowanie jest przeznaczone wyłącznie dla komputerów 64 bitowych."
|
||||
LangString Elements ${LANG_POLISH} "Elementy"
|
||||
@@ -31,13 +58,16 @@
|
||||
LangString Refrigeration ${LANG_POLISH} "Chłodnictwo"
|
||||
LangString Solar_thermal ${LANG_POLISH} "Energia słoneczna"
|
||||
LangString Lang ${LANG_POLISH} "Język"
|
||||
LangString Fonts ${LANG_POLISH} "Czcionki"
|
||||
LangString Titleblocks ${LANG_POLISH} "Tabliczki rysunkowe"
|
||||
LangString Examples ${LANG_POLISH} "Przykłady"
|
||||
LangString Check ${LANG_POLISH} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_POLISH} "Elements of the official collection"
|
||||
LangString var2 ${LANG_POLISH} "languagues files"
|
||||
LangString var3 ${LANG_POLISH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_POLISH} "Examples of diagrams"
|
||||
LangString Check ${LANG_POLISH} "Zaznacz, aby uruchomić ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_POLISH} "Elementy oficjalnej kolekcji"
|
||||
LangString var2 ${LANG_POLISH} "Pliki językowe"
|
||||
LangString var3 ${LANG_POLISH} "Przykłady tabliczek rysunkowych"
|
||||
LangString var4 ${LANG_POLISH} "Przykłady schematów"
|
||||
LangString var5 ${LANG_POLISH} "Czcionki"
|
||||
LangString uninstFailed ${LANG_POLISH} "Odinstalowanie poprzedniej wersji nie powiodło się.$\nPrzed kontynuowaniem odinstaluj ręcznie program ${SOFT_NAME}."
|
||||
|
||||
|
||||
LangString installed ${LANG_GREEK} "${SOFT_NAME} είναι ήδη εγκατεστημένο. $\n$\nΠάτησε `OK` για αφαίρεση της προηγούμενης έκδοσης ή `Cancel` για ακύρωση της αναβάθμισης."
|
||||
@@ -52,55 +82,64 @@
|
||||
LangString Refrigeration ${LANG_GREEK} "Ψύξη"
|
||||
LangString Solar_thermal ${LANG_GREEK} "Ηλιοθερμία"
|
||||
LangString Lang ${LANG_GREEK} "Γλώσσα"
|
||||
LangString Fonts ${LANG_GREEK} "Γραμματοσειρές"
|
||||
LangString Titleblocks ${LANG_GREEK} "Πινακίδες"
|
||||
LangString Examples ${LANG_GREEK} "Παραδείγματα"
|
||||
LangString Check ${LANG_GREEK} "Επιλέξτε για εκκίνηση ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_GREEK} "Στοιχεία της επίσημης συλλογής"
|
||||
LangString var2 ${LANG_GREEK} "Αρχεία γλωσσών"
|
||||
LangString var3 ${LANG_GREEK} "Examples of cartridges"
|
||||
LangString var3 ${LANG_GREEK} "Παραδείγματα πινακίδων"
|
||||
LangString var4 ${LANG_GREEK} "Παραδείγματα διαγραμμάτων"
|
||||
LangString var5 ${LANG_GREEK} "Γραμματοσειρές"
|
||||
LangString uninstFailed ${LANG_GREEK} "Η απεγκατάσταση της προηγούμενης έκδοσης απέτυχε.$\nΠαρακαλώ απεγκαταστήστε χειροκίνητα το ${SOFT_NAME} πριν συνεχίσετε."
|
||||
|
||||
|
||||
LangString installed ${LANG_CZECH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_CZECH} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_CZECH} "Elements"
|
||||
LangString Electric ${LANG_CZECH} "Electric"
|
||||
LangString Logic ${LANG_CZECH} "Logic"
|
||||
LangString Hydraulic ${LANG_CZECH} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_CZECH} "Pneumatic"
|
||||
LangString Energy ${LANG_CZECH} "Energy"
|
||||
LangString water ${LANG_CZECH} "Water"
|
||||
LangString Refrigeration ${LANG_CZECH} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_CZECH} "Solar_thermal"
|
||||
LangString Lang ${LANG_CZECH} "Lang"
|
||||
LangString Titleblocks ${LANG_CZECH} "Titleblocks"
|
||||
LangString Examples ${LANG_CZECH} "Examples"
|
||||
LangString Check ${LANG_CZECH} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CZECH} "Elements of the official collection"
|
||||
LangString var2 ${LANG_CZECH} "languagues files"
|
||||
LangString var3 ${LANG_CZECH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_CZECH} "Examples of diagrams"
|
||||
LangString installed ${LANG_CZECH} "${SOFT_NAME} je již nainstalován. $\n$\nKlikněte na `OK` pro odebrání předchozí verze nebo na `Zrušit` pro zrušení tohoto upgradu."
|
||||
LangString wrongArch ${LANG_CZECH} "Tato distribuce je určena pouze pro 64bitové počítače."
|
||||
LangString Elements ${LANG_CZECH} "Prvky"
|
||||
LangString Electric ${LANG_CZECH} "Elektrika"
|
||||
LangString Logic ${LANG_CZECH} "Logika"
|
||||
LangString Hydraulic ${LANG_CZECH} "Hydraulika"
|
||||
LangString Pneumatic ${LANG_CZECH} "Pneumatika"
|
||||
LangString Energy ${LANG_CZECH} "Energie"
|
||||
LangString water ${LANG_CZECH} "Voda"
|
||||
LangString Refrigeration ${LANG_CZECH} "Chlazení"
|
||||
LangString Solar_thermal ${LANG_CZECH} "Solární_teplo"
|
||||
LangString Lang ${LANG_CZECH} "Jazyk"
|
||||
LangString Fonts ${LANG_CZECH} "Písma"
|
||||
LangString Titleblocks ${LANG_CZECH} "Popisová pole"
|
||||
LangString Examples ${LANG_CZECH} "Příklady"
|
||||
LangString Check ${LANG_CZECH} "Zaškrtněte pro spuštění ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CZECH} "Prvky oficiální kolekce"
|
||||
LangString var2 ${LANG_CZECH} "Jazykové soubory"
|
||||
LangString var3 ${LANG_CZECH} "Příklady popisových polí"
|
||||
LangString var4 ${LANG_CZECH} "Příklady schémat"
|
||||
LangString var5 ${LANG_CZECH} "Písma"
|
||||
LangString uninstFailed ${LANG_CZECH} "Odinstalování předchozí verze se nezdařilo.$\nPřed pokračováním prosím odinstalujte ${SOFT_NAME} ručně."
|
||||
|
||||
|
||||
LangString installed ${LANG_SPANISH} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_SPANISH} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_SPANISH} "Elements"
|
||||
LangString Electric ${LANG_SPANISH} "Electric"
|
||||
LangString Logic ${LANG_SPANISH} "Logic"
|
||||
LangString Hydraulic ${LANG_SPANISH} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_SPANISH} "Pneumatic"
|
||||
LangString Energy ${LANG_SPANISH} "Energy"
|
||||
LangString water ${LANG_SPANISH} "Water"
|
||||
LangString Refrigeration ${LANG_SPANISH} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_SPANISH} "Solar_thermal"
|
||||
LangString Lang ${LANG_SPANISH} "Lang"
|
||||
LangString Titleblocks ${LANG_SPANISH} "Titleblocks"
|
||||
LangString Examples ${LANG_SPANISH} "Examples"
|
||||
LangString Check ${LANG_SPANISH} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SPANISH} "Elements of the official collection"
|
||||
LangString var2 ${LANG_SPANISH} "languagues files"
|
||||
LangString var3 ${LANG_SPANISH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_SPANISH} "Examples of diagrams"
|
||||
LangString installed ${LANG_SPANISH} "${SOFT_NAME} ya está instalado. $\n$\nHaga clic en `Aceptar` para eliminar la versión anterior o en `Cancelar` para cancelar esta actualización."
|
||||
LangString wrongArch ${LANG_SPANISH} "Esta distribución es solo para ordenadores de 64 bits."
|
||||
LangString Elements ${LANG_SPANISH} "Elementos"
|
||||
LangString Electric ${LANG_SPANISH} "Eléctrico"
|
||||
LangString Logic ${LANG_SPANISH} "Lógica"
|
||||
LangString Hydraulic ${LANG_SPANISH} "Hidráulica"
|
||||
LangString Pneumatic ${LANG_SPANISH} "Neumática"
|
||||
LangString Energy ${LANG_SPANISH} "Energía"
|
||||
LangString water ${LANG_SPANISH} "Agua"
|
||||
LangString Refrigeration ${LANG_SPANISH} "Refrigeración"
|
||||
LangString Solar_thermal ${LANG_SPANISH} "Solar_térmico"
|
||||
LangString Lang ${LANG_SPANISH} "Idioma"
|
||||
LangString Fonts ${LANG_SPANISH} "Fuentes"
|
||||
LangString Titleblocks ${LANG_SPANISH} "Cartelas"
|
||||
LangString Examples ${LANG_SPANISH} "Ejemplos"
|
||||
LangString Check ${LANG_SPANISH} "Marcar para iniciar ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SPANISH} "Elementos de la colección oficial"
|
||||
LangString var2 ${LANG_SPANISH} "Archivos de idioma"
|
||||
LangString var3 ${LANG_SPANISH} "Ejemplos de cartelas"
|
||||
LangString var4 ${LANG_SPANISH} "Ejemplos de esquemas"
|
||||
LangString var5 ${LANG_SPANISH} "Fuentes"
|
||||
LangString uninstFailed ${LANG_SPANISH} "La desinstalación de la versión anterior ha fallado.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
|
||||
|
||||
|
||||
LangString installed ${LANG_GERMAN} "${SOFT_NAME} ist bereits installiert. $\n$\nKlicken Sie auf `OK`, um die alte Version zu deinstallieren, oder auf `Abbrechen`, um das Upgrade abzubrechen."
|
||||
@@ -115,6 +154,7 @@
|
||||
LangString Refrigeration ${LANG_GERMAN} "Kältetechnik"
|
||||
LangString Solar_thermal ${LANG_GERMAN} "Solar-Wärmetechnik"
|
||||
LangString Lang ${LANG_GERMAN} "Sprachen"
|
||||
LangString Fonts ${LANG_GERMAN} "Schriften"
|
||||
LangString Titleblocks ${LANG_GERMAN} "Schriftfelder"
|
||||
LangString Examples ${LANG_GERMAN} "Beispiele"
|
||||
LangString Check ${LANG_GERMAN} "Ankreuzen zum Starten von ${SOFT_NAME}"
|
||||
@@ -122,6 +162,8 @@
|
||||
LangString var2 ${LANG_GERMAN} "Sprachdateien"
|
||||
LangString var3 ${LANG_GERMAN} "Schriftfeld-Beispiele"
|
||||
LangString var4 ${LANG_GERMAN} "Schaltplan-Beispiele"
|
||||
LangString var5 ${LANG_GERMAN} "Schriften"
|
||||
LangString uninstFailed ${LANG_GERMAN} "Die Deinstallation der vorherigen Version ist fehlgeschlagen.$\nBitte deinstallieren Sie ${SOFT_NAME} manuell, bevor Sie fortfahren."
|
||||
|
||||
|
||||
LangString installed ${LANG_RUSSIAN} "${SOFT_NAME} уже установлен. $\n$\nДля удаления предыдущей версии нажмите `OK` или `Cancel` для отмены обновления."
|
||||
@@ -136,6 +178,7 @@
|
||||
LangString Refrigeration ${LANG_RUSSIAN} "Холодильная техника"
|
||||
LangString Solar_thermal ${LANG_RUSSIAN} "Солнечная-тепловая"
|
||||
LangString Lang ${LANG_RUSSIAN} "Язык"
|
||||
LangString Fonts ${LANG_RUSSIAN} "Шрифты"
|
||||
LangString Titleblocks ${LANG_RUSSIAN} "Штампы"
|
||||
LangString Examples ${LANG_RUSSIAN} "Примеры"
|
||||
LangString Check ${LANG_RUSSIAN} "Нажмите для запуска ${SOFT_NAME}"
|
||||
@@ -143,48 +186,56 @@
|
||||
LangString var2 ${LANG_RUSSIAN} "языковые файлы"
|
||||
LangString var3 ${LANG_RUSSIAN} "Примеры штампов"
|
||||
LangString var4 ${LANG_RUSSIAN} "Примеры схем"
|
||||
LangString var5 ${LANG_RUSSIAN} "Шрифты"
|
||||
LangString uninstFailed ${LANG_RUSSIAN} "Удаление предыдущей версии завершилось с ошибкой.$\nПожалуйста, удалите ${SOFT_NAME} вручную перед продолжением."
|
||||
|
||||
|
||||
LangString installed ${LANG_ARABIC} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_ARABIC} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_ARABIC} "Elements"
|
||||
LangString Electric ${LANG_ARABIC} "Electric"
|
||||
LangString Logic ${LANG_ARABIC} "Logic"
|
||||
LangString Hydraulic ${LANG_ARABIC} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_ARABIC} "Pneumatic"
|
||||
LangString Energy ${LANG_ARABIC} "Energy"
|
||||
LangString water ${LANG_ARABIC} "Water"
|
||||
LangString Refrigeration ${LANG_ARABIC} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_ARABIC} "Solar_thermal"
|
||||
LangString Lang ${LANG_ARABIC} "Lang"
|
||||
LangString Titleblocks ${LANG_ARABIC} "Titleblocks"
|
||||
LangString Examples ${LANG_ARABIC} "Examples"
|
||||
LangString Check ${LANG_ARABIC} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_ARABIC} "Elements of the official collection"
|
||||
LangString var2 ${LANG_ARABIC} "languagues files"
|
||||
LangString var3 ${LANG_ARABIC} "Examples of cartridges"
|
||||
LangString var4 ${LANG_ARABIC} "Examples of diagrams"
|
||||
LangString installed ${LANG_ARABIC} "${SOFT_NAME} مثبَّت بالفعل. $\n$\nانقر على `موافق` لإزالة الإصدار السابق أو على `إلغاء` لإلغاء هذا التحديث."
|
||||
LangString wrongArch ${LANG_ARABIC} "هذا التوزيع مخصص لأجهزة الكمبيوتر 64 بت فقط."
|
||||
LangString Elements ${LANG_ARABIC} "العناصر"
|
||||
LangString Electric ${LANG_ARABIC} "الكهرباء"
|
||||
LangString Logic ${LANG_ARABIC} "المنطق"
|
||||
LangString Hydraulic ${LANG_ARABIC} "الهيدروليك"
|
||||
LangString Pneumatic ${LANG_ARABIC} "الهواء المضغوط"
|
||||
LangString Energy ${LANG_ARABIC} "الطاقة"
|
||||
LangString water ${LANG_ARABIC} "الماء"
|
||||
LangString Refrigeration ${LANG_ARABIC} "التبريد"
|
||||
LangString Solar_thermal ${LANG_ARABIC} "الطاقة_الشمسية_الحرارية"
|
||||
LangString Lang ${LANG_ARABIC} "اللغة"
|
||||
LangString Fonts ${LANG_ARABIC} "الخطوط"
|
||||
LangString Titleblocks ${LANG_ARABIC} "كتل العنوان"
|
||||
LangString Examples ${LANG_ARABIC} "أمثلة"
|
||||
LangString Check ${LANG_ARABIC} "حدد لتشغيل ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_ARABIC} "عناصر المجموعة الرسمية"
|
||||
LangString var2 ${LANG_ARABIC} "ملفات اللغة"
|
||||
LangString var3 ${LANG_ARABIC} "أمثلة على كتل العنوان"
|
||||
LangString var4 ${LANG_ARABIC} "أمثلة على المخططات"
|
||||
LangString var5 ${LANG_ARABIC} "الخطوط"
|
||||
LangString uninstFailed ${LANG_ARABIC} "فشل إلغاء تثبيت الإصدار السابق. يرجى إلغاء تثبيت ${SOFT_NAME} يدويًا قبل المتابعة."
|
||||
|
||||
|
||||
LangString installed ${LANG_CATALAN} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_CATALAN} "This distribution is for 64 bits computers only."
|
||||
LangString installed ${LANG_CATALAN} "${SOFT_NAME} ja està instal·lat. $\n$\nFeu clic a `D'acord` per eliminar la versió anterior o a `Cancel·la` per cancel·lar aquesta actualització."
|
||||
LangString wrongArch ${LANG_CATALAN} "Aquesta distribució és només per a ordinadors de 64 bits."
|
||||
LangString Elements ${LANG_CATALAN} "Elements"
|
||||
LangString Electric ${LANG_CATALAN} "Electric"
|
||||
LangString Logic ${LANG_CATALAN} "Logic"
|
||||
LangString Hydraulic ${LANG_CATALAN} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_CATALAN} "Pneumatic"
|
||||
LangString Energy ${LANG_CATALAN} "Energy"
|
||||
LangString water ${LANG_CATALAN} "Water"
|
||||
LangString Refrigeration ${LANG_CATALAN} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_CATALAN} "Solar_thermal"
|
||||
LangString Lang ${LANG_CATALAN} "Lang"
|
||||
LangString Titleblocks ${LANG_CATALAN} "Titleblocks"
|
||||
LangString Examples ${LANG_CATALAN} "Examples"
|
||||
LangString Check ${LANG_CATALAN} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CATALAN} "Elements of the official collection"
|
||||
LangString var2 ${LANG_CATALAN} "languagues files"
|
||||
LangString var3 ${LANG_CATALAN} "Examples of cartridges"
|
||||
LangString var4 ${LANG_CATALAN} "Examples of diagrams"
|
||||
LangString Electric ${LANG_CATALAN} "Elèctric"
|
||||
LangString Logic ${LANG_CATALAN} "Lògica"
|
||||
LangString Hydraulic ${LANG_CATALAN} "Hidràulica"
|
||||
LangString Pneumatic ${LANG_CATALAN} "Pneumàtica"
|
||||
LangString Energy ${LANG_CATALAN} "Energia"
|
||||
LangString water ${LANG_CATALAN} "Aigua"
|
||||
LangString Refrigeration ${LANG_CATALAN} "Refrigeració"
|
||||
LangString Solar_thermal ${LANG_CATALAN} "Solar_tèrmic"
|
||||
LangString Lang ${LANG_CATALAN} "Idioma"
|
||||
LangString Fonts ${LANG_CATALAN} "Tipus de lletra"
|
||||
LangString Titleblocks ${LANG_CATALAN} "Cartutxos"
|
||||
LangString Examples ${LANG_CATALAN} "Exemples"
|
||||
LangString Check ${LANG_CATALAN} "Marca per iniciar ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CATALAN} "Elements de la col·lecció oficial"
|
||||
LangString var2 ${LANG_CATALAN} "Fitxers d'idioma"
|
||||
LangString var3 ${LANG_CATALAN} "Exemples de cartutxos"
|
||||
LangString var4 ${LANG_CATALAN} "Exemples d'esquemes"
|
||||
LangString var5 ${LANG_CATALAN} "Tipus de lletra"
|
||||
LangString uninstFailed ${LANG_CATALAN} "La desinstal·lació de la versió anterior ha fallat.$\nSi us plau, desinstal·leu ${SOFT_NAME} manualment abans de continuar."
|
||||
|
||||
|
||||
LangString installed ${LANG_ITALIAN} "${SOFT_NAME} è già installato. $\n$\nFare click su `OK` per rimuovere la versione precedente o su `Annulla` per annullare questo aggiornamento."
|
||||
@@ -199,6 +250,7 @@
|
||||
LangString Refrigeration ${LANG_ITALIAN} "Refrigerazione"
|
||||
LangString Solar_thermal ${LANG_ITALIAN} "Solare_termico"
|
||||
LangString Lang ${LANG_ITALIAN} "Lingua"
|
||||
LangString Fonts ${LANG_ITALIAN} "Caratteri"
|
||||
LangString Titleblocks ${LANG_ITALIAN} "Cartigli"
|
||||
LangString Examples ${LANG_ITALIAN} "Esempi"
|
||||
LangString Check ${LANG_ITALIAN} "Avvia ${SOFT_NAME}"
|
||||
@@ -206,69 +258,80 @@
|
||||
LangString var2 ${LANG_ITALIAN} "File della lingua"
|
||||
LangString var3 ${LANG_ITALIAN} "Cartigli di esempio"
|
||||
LangString var4 ${LANG_ITALIAN} "Schemi di esempio"
|
||||
LangString var5 ${LANG_ITALIAN} "Caratteri"
|
||||
LangString uninstFailed ${LANG_ITALIAN} "La disinstallazione della versione precedente non è riuscita.$\nSi prega di disinstallare ${SOFT_NAME} manualmente prima di continuare."
|
||||
|
||||
|
||||
LangString installed ${LANG_PORTUGUESE} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_PORTUGUESE} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_PORTUGUESE} "Elements"
|
||||
LangString Electric ${LANG_PORTUGUESE} "Electric"
|
||||
LangString Logic ${LANG_PORTUGUESE} "Logic"
|
||||
LangString Hydraulic ${LANG_PORTUGUESE} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_PORTUGUESE} "Pneumatic"
|
||||
LangString Energy ${LANG_PORTUGUESE} "Energy"
|
||||
LangString water ${LANG_PORTUGUESE} "Water"
|
||||
LangString Refrigeration ${LANG_PORTUGUESE} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_PORTUGUESE} "Solar_thermal"
|
||||
LangString Lang ${LANG_PORTUGUESE} "Lang"
|
||||
LangString Titleblocks ${LANG_PORTUGUESE} "Titleblocks"
|
||||
LangString Examples ${LANG_PORTUGUESE} "Examples"
|
||||
LangString Check ${LANG_PORTUGUESE} "Avviare ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_PORTUGUESE} "Elements of the official collection"
|
||||
LangString var2 ${LANG_PORTUGUESE} "languagues files"
|
||||
LangString var3 ${LANG_PORTUGUESE} "Examples of cartridges"
|
||||
LangString var4 ${LANG_PORTUGUESE} "Examples of diagrams"
|
||||
LangString installed ${LANG_PORTUGUESE} "${SOFT_NAME} já está instalado. $\n$\nClique em `OK` para remover a versão anterior ou em `Cancelar` para cancelar esta atualização."
|
||||
LangString wrongArch ${LANG_PORTUGUESE} "Esta distribuição é apenas para computadores de 64 bits."
|
||||
LangString Elements ${LANG_PORTUGUESE} "Elementos"
|
||||
LangString Electric ${LANG_PORTUGUESE} "Elétrica"
|
||||
LangString Logic ${LANG_PORTUGUESE} "Lógica"
|
||||
LangString Hydraulic ${LANG_PORTUGUESE} "Hidráulica"
|
||||
LangString Pneumatic ${LANG_PORTUGUESE} "Pneumática"
|
||||
LangString Energy ${LANG_PORTUGUESE} "Energia"
|
||||
LangString water ${LANG_PORTUGUESE} "Água"
|
||||
LangString Refrigeration ${LANG_PORTUGUESE} "Refrigeração"
|
||||
LangString Solar_thermal ${LANG_PORTUGUESE} "Solar_térmico"
|
||||
LangString Lang ${LANG_PORTUGUESE} "Idioma"
|
||||
LangString Fonts ${LANG_PORTUGUESE} "Fontes"
|
||||
LangString Titleblocks ${LANG_PORTUGUESE} "Legendas"
|
||||
LangString Examples ${LANG_PORTUGUESE} "Exemplos"
|
||||
LangString Check ${LANG_PORTUGUESE} "Marcar para iniciar ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_PORTUGUESE} "Elementos da coleção oficial"
|
||||
LangString var2 ${LANG_PORTUGUESE} "Arquivos de idioma"
|
||||
LangString var3 ${LANG_PORTUGUESE} "Exemplos de legendas"
|
||||
LangString var4 ${LANG_PORTUGUESE} "Exemplos de esquemas"
|
||||
LangString var5 ${LANG_PORTUGUESE} "Fontes"
|
||||
LangString uninstFailed ${LANG_PORTUGUESE} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
|
||||
|
||||
|
||||
LangString installed ${LANG_ROMANIAN} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_ROMANIAN} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_ROMANIAN} "Elements"
|
||||
LangString installed ${LANG_ROMANIAN} "${SOFT_NAME} este deja instalat. $\n$\nFaceți clic pe `OK` pentru a elimina versiunea anterioară sau pe `Anulare` pentru a anula această actualizare."
|
||||
LangString wrongArch ${LANG_ROMANIAN} "Această distribuție este destinată numai computerelor pe 64 de biți."
|
||||
LangString Elements ${LANG_ROMANIAN} "Elemente"
|
||||
LangString Electric ${LANG_ROMANIAN} "Electric"
|
||||
LangString Logic ${LANG_ROMANIAN} "Logic"
|
||||
LangString Hydraulic ${LANG_ROMANIAN} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_ROMANIAN} "Pneumatic"
|
||||
LangString Energy ${LANG_ROMANIAN} "Energy"
|
||||
LangString water ${LANG_ROMANIAN} "Water"
|
||||
LangString Refrigeration ${LANG_ROMANIAN} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_ROMANIAN} "Solar_thermal"
|
||||
LangString Lang ${LANG_ROMANIAN} "Lang"
|
||||
LangString Titleblocks ${LANG_ROMANIAN} "Titleblocks"
|
||||
LangString Examples ${LANG_ROMANIAN} "Examples"
|
||||
LangString Check ${LANG_ROMANIAN} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_ROMANIAN} "Elements of the official collection"
|
||||
LangString var2 ${LANG_ROMANIAN} "languagues files"
|
||||
LangString var3 ${LANG_ROMANIAN} "Examples of cartridges"
|
||||
LangString var4 ${LANG_ROMANIAN} "Examples of diagrams"
|
||||
LangString Logic ${LANG_ROMANIAN} "Logică"
|
||||
LangString Hydraulic ${LANG_ROMANIAN} "Hidraulică"
|
||||
LangString Pneumatic ${LANG_ROMANIAN} "Pneumatică"
|
||||
LangString Energy ${LANG_ROMANIAN} "Energie"
|
||||
LangString water ${LANG_ROMANIAN} "Apă"
|
||||
LangString Refrigeration ${LANG_ROMANIAN} "Refrigerare"
|
||||
LangString Solar_thermal ${LANG_ROMANIAN} "Solar_termic"
|
||||
LangString Lang ${LANG_ROMANIAN} "Limbă"
|
||||
LangString Fonts ${LANG_ROMANIAN} "Fonturi"
|
||||
LangString Titleblocks ${LANG_ROMANIAN} "Cartușe"
|
||||
LangString Examples ${LANG_ROMANIAN} "Exemple"
|
||||
LangString Check ${LANG_ROMANIAN} "Bifați pentru a porni ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_ROMANIAN} "Elemente din colecția oficială"
|
||||
LangString var2 ${LANG_ROMANIAN} "Fișiere de limbă"
|
||||
LangString var3 ${LANG_ROMANIAN} "Exemple de cartușe"
|
||||
LangString var4 ${LANG_ROMANIAN} "Exemple de scheme"
|
||||
LangString var5 ${LANG_ROMANIAN} "Fonturi"
|
||||
LangString uninstFailed ${LANG_ROMANIAN} "Dezinstalarea versiunii anterioare a eșuat.$\nVă rugăm să dezinstalați ${SOFT_NAME} manual înainte de a continua."
|
||||
|
||||
|
||||
LangString installed ${LANG_CROATIAN} "${SOFT_NAME} is already installed. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
LangString wrongArch ${LANG_CROATIAN} "This distribution is for 64 bits computers only."
|
||||
LangString Elements ${LANG_CROATIAN} "Elements"
|
||||
LangString Electric ${LANG_CROATIAN} "Electric"
|
||||
LangString Logic ${LANG_CROATIAN} "Logic"
|
||||
LangString Hydraulic ${LANG_CROATIAN} "Hydraulic"
|
||||
LangString Pneumatic ${LANG_CROATIAN} "Pneumatic"
|
||||
LangString Energy ${LANG_CROATIAN} "Energy"
|
||||
LangString water ${LANG_CROATIAN} "Water"
|
||||
LangString Refrigeration ${LANG_CROATIAN} "Refrigeration"
|
||||
LangString Solar_thermal ${LANG_CROATIAN} "Solar_thermal"
|
||||
LangString Lang ${LANG_CROATIAN} "Lang"
|
||||
LangString Titleblocks ${LANG_CROATIAN} "Titleblocks"
|
||||
LangString Examples ${LANG_CROATIAN} "Examples"
|
||||
LangString Check ${LANG_CROATIAN} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CROATIAN} "Elements of the official collection"
|
||||
LangString var2 ${LANG_CROATIAN} "languagues files"
|
||||
LangString var3 ${LANG_CROATIAN} "Examples of cartridges"
|
||||
LangString var4 ${LANG_CROATIAN} "Examples of diagrams"
|
||||
LangString installed ${LANG_CROATIAN} "${SOFT_NAME} je već instaliran. $\n$\nKliknite `U redu` za uklanjanje prethodne verzije ili `Odustani` za odustajanje od nadogradnje."
|
||||
LangString wrongArch ${LANG_CROATIAN} "Ova distribucija namijenjena je samo za 64-bitna računala."
|
||||
LangString Elements ${LANG_CROATIAN} "Elementi"
|
||||
LangString Electric ${LANG_CROATIAN} "Elektrika"
|
||||
LangString Logic ${LANG_CROATIAN} "Logika"
|
||||
LangString Hydraulic ${LANG_CROATIAN} "Hidraulika"
|
||||
LangString Pneumatic ${LANG_CROATIAN} "Pneumatika"
|
||||
LangString Energy ${LANG_CROATIAN} "Energija"
|
||||
LangString water ${LANG_CROATIAN} "Voda"
|
||||
LangString Refrigeration ${LANG_CROATIAN} "Hlađenje"
|
||||
LangString Solar_thermal ${LANG_CROATIAN} "Solarno_toplinsko"
|
||||
LangString Lang ${LANG_CROATIAN} "Jezik"
|
||||
LangString Fonts ${LANG_CROATIAN} "Fontovi"
|
||||
LangString Titleblocks ${LANG_CROATIAN} "Zaglavlja"
|
||||
LangString Examples ${LANG_CROATIAN} "Primjeri"
|
||||
LangString Check ${LANG_CROATIAN} "Označite za pokretanje ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_CROATIAN} "Elementi službene zbirke"
|
||||
LangString var2 ${LANG_CROATIAN} "Jezične datoteke"
|
||||
LangString var3 ${LANG_CROATIAN} "Primjeri zaglavlja"
|
||||
LangString var4 ${LANG_CROATIAN} "Primjeri shema"
|
||||
LangString var5 ${LANG_CROATIAN} "Fontovi"
|
||||
LangString uninstFailed ${LANG_CROATIAN} "Deinstalacija prethodne verzije nije uspjela.$\nMolimo deinstalirajte ${SOFT_NAME} ručno prije nastavka."
|
||||
|
||||
|
||||
LangString installed ${LANG_DUTCH} "${SOFT_NAME} is al geinstalleerd. $\n$\nklik `OK` om vorige versie te verwijderen of `annuleer` om deze upgrade te annuleren."
|
||||
@@ -283,34 +346,16 @@
|
||||
LangString Refrigeration ${LANG_DUTCH} "Koelinstallaties"
|
||||
LangString Solar_thermal ${LANG_DUTCH} "Zonne_warmte"
|
||||
LangString Lang ${LANG_DUTCH} "Taal"
|
||||
LangString Fonts ${LANG_DUTCH} "Lettertypen"
|
||||
LangString Titleblocks ${LANG_DUTCH} "Titelblok"
|
||||
LangString Examples ${LANG_DUTCH} "Voorbeelden"
|
||||
LangString Check ${LANG_DUTCH} "Check to start ${SOFT_NAME}"
|
||||
LangString Check ${LANG_DUTCH} "Check to start ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_DUTCH} "Elements of the official collection"
|
||||
LangString var2 ${LANG_DUTCH} "languagues files"
|
||||
LangString var3 ${LANG_DUTCH} "Examples of cartridges"
|
||||
LangString var4 ${LANG_DUTCH} "Examples of diagrams"
|
||||
|
||||
LangString installed ${LANG_DUTCH_BELGIUM} "${SOFT_NAME} is reeds geinstallerd. $\n$\nKlik`OK` om vorige versie te verwijderen of `Afbreken` om de upgrade niet uit te voeren."
|
||||
LangString wrongArch ${LANG_DUTCH_BELGIUM} "Deze distributie werkt enkel op 64 bits computers."
|
||||
LangString Elements ${LANG_DUTCH_BELGIUM} "Elementen"
|
||||
LangString Electric ${LANG_DUTCH_BELGIUM} "Electrisch"
|
||||
LangString Logic ${LANG_DUTCH_BELGIUM} "Logica"
|
||||
LangString Hydraulic ${LANG_DUTCH_BELGIUM} "Hydraulisch"
|
||||
LangString Pneumatic ${LANG_DUTCH_BELGIUM} "Pneumatisch"
|
||||
LangString Energy ${LANG_DUTCH_BELGIUM} "Energie"
|
||||
LangString water ${LANG_DUTCH_BELGIUM} "Water"
|
||||
LangString Refrigeration ${LANG_DUTCH_BELGIUM} "Klimatisatie"
|
||||
LangString Solar_thermal ${LANG_DUTCH_BELGIUM} "Termisch & zonlicht"
|
||||
LangString Lang ${LANG_DUTCH_BELGIUM} "Taal"
|
||||
LangString Titleblocks ${LANG_DUTCH_BELGIUM} "Titelhoek"
|
||||
LangString Examples ${LANG_DUTCH_BELGIUM} "Voorbeelden"
|
||||
LangString Check ${LANG_DUTCH_BELGIUM} "Controleer om te beginnen ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_DUTCH_BELGIUM} "Symbolen van de officielen verzameling"
|
||||
LangString var2 ${LANG_DUTCH_BELGIUM} "taal bestanden"
|
||||
LangString var3 ${LANG_DUTCH_BELGIUM} "Voorbeel titelhoeken"
|
||||
LangString var4 ${LANG_DUTCH_BELGIUM} "Voorbeeld schema's"
|
||||
LangString Check ${LANG_DUTCH} "Aanvinken om ${SOFT_NAME} te starten"
|
||||
LangString var1 ${LANG_DUTCH} "Elementen van de officiële verzameling"
|
||||
LangString var2 ${LANG_DUTCH} "Taalbestanden"
|
||||
LangString var3 ${LANG_DUTCH} "Voorbeelden van titelblokken"
|
||||
LangString var4 ${LANG_DUTCH} "Voorbeelden van schema's"
|
||||
LangString var5 ${LANG_DUTCH} "Lettertypen"
|
||||
LangString uninstFailed ${LANG_DUTCH} "Het verwijderen van de vorige versie is mislukt.$\nVerwijder ${SOFT_NAME} handmatig voordat u verdergaat."
|
||||
|
||||
|
||||
LangString installed ${LANG_DANISH} "${SOFT_NAME} er allerede installeret. $\n$\nKlik `Ok` for at fjerne foregående version eller `Annuller` for at annullere opgraderingen."
|
||||
@@ -325,6 +370,7 @@
|
||||
LangString Refrigeration ${LANG_DANISH} "Køle teknik"
|
||||
LangString Solar_thermal ${LANG_DANISH} "Sol & varme teknik"
|
||||
LangString Lang ${LANG_DANISH} "Sprog"
|
||||
LangString Fonts ${LANG_DANISH} "Skrifttyper"
|
||||
LangString Titleblocks ${LANG_DANISH} "Titel blokke"
|
||||
LangString Examples ${LANG_DANISH} "Eksempler"
|
||||
LangString Check ${LANG_DANISH} "Vælg for at starte ${SOFT_NAME}"
|
||||
@@ -332,5 +378,8 @@
|
||||
LangString var2 ${LANG_DANISH} "Sprog filer"
|
||||
LangString var3 ${LANG_DANISH} "Titel blokke eksempler"
|
||||
LangString var4 ${LANG_DANISH} "Diagram eksempler"
|
||||
LangString var5 ${LANG_DANISH} "Skrifttyper"
|
||||
LangString uninstFailed ${LANG_DANISH} "Afinstallation af den tidligere version mislykkedes.$\nAfinstaller venligst ${SOFT_NAME} manuelt, inden du fortsætter."
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
LangString wrongArch ${LANG_FRENCH} "Ce programme est pour Windows 64 bits seulement."
|
||||
LangString installed ${LANG_FRENCH} "${SOFT_NAME} est déja installé. $\n$\nCliquer sur `OK` pour désinstaller l'ancienne version `Annuler` pour annuler cet upgrade."
|
||||
LangString Elements ${LANG_FRENCH} "Eléments"
|
||||
LangString installed ${LANG_FRENCH} "${SOFT_NAME} est déja installé. $\n$\nCliquer sur `OK` pour désinstaller l'ancienne version `Annuler` pour annuler cet upgrade."
|
||||
LangString Elements ${LANG_FRENCH} "Eléments"
|
||||
LangString Electric ${LANG_FRENCH} "Electrique"
|
||||
LangString Logic ${LANG_FRENCH} "Logique"
|
||||
LangString Hydraulic ${LANG_FRENCH} "Hydraulique"
|
||||
@@ -10,10 +10,13 @@
|
||||
LangString Refrigeration ${LANG_FRENCH} "Climatisation"
|
||||
LangString Solar_thermal ${LANG_FRENCH} "Thermique & solaire"
|
||||
LangString Lang ${LANG_FRENCH} "Langues"
|
||||
LangString Fonts ${LANG_FRENCH} "Polices"
|
||||
LangString Titleblocks ${LANG_FRENCH} "Cartouches"
|
||||
LangString Examples ${LANG_FRENCH} "Exemples"
|
||||
LangString Check ${LANG_FRENCH} "Cocher pour lancer ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_FRENCH} "Eléments de la collection officielle"
|
||||
LangString var1 ${LANG_FRENCH} "Eléments de la collection officielle"
|
||||
LangString var2 ${LANG_FRENCH} "Fichiers de langues"
|
||||
LangString var3 ${LANG_FRENCH} "Exemples de cartouches"
|
||||
LangString var4 ${LANG_FRENCH} "Exemples de schémas"
|
||||
LangString var4 ${LANG_FRENCH} "Exemples de schémas"
|
||||
LangString var5 ${LANG_FRENCH} "Polices"
|
||||
LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller ${SOFT_NAME} manuellement avant de continuer."
|
||||
|
||||
@@ -0,0 +1,335 @@
|
||||
; Missing language translations for QElectroTech installer
|
||||
; Languages added: hu, ja, mn, nb, nl_BE, nl_NL, pt_BR, rs/sr, sk, sl, sv, tr, uk, zh
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Hungarian (LANG_HUNGARIAN)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_HUNGARIAN} "${SOFT_NAME} már telepítve van. $\n$\nKattintson az `OK` gombra az előző verzió eltávolításához, vagy a `Mégse` gombra a frissítés megszakításához."
|
||||
LangString wrongArch ${LANG_HUNGARIAN} "Ez a terjesztés csak 64 bites számítógépekre való."
|
||||
LangString Elements ${LANG_HUNGARIAN} "Elemek"
|
||||
LangString Electric ${LANG_HUNGARIAN} "Elektromos"
|
||||
LangString Logic ${LANG_HUNGARIAN} "Logika"
|
||||
LangString Hydraulic ${LANG_HUNGARIAN} "Hidraulika"
|
||||
LangString Pneumatic ${LANG_HUNGARIAN} "Pneumatika"
|
||||
LangString Energy ${LANG_HUNGARIAN} "Energia"
|
||||
LangString water ${LANG_HUNGARIAN} "Víz"
|
||||
LangString Refrigeration ${LANG_HUNGARIAN} "Hűtés"
|
||||
LangString Solar_thermal ${LANG_HUNGARIAN} "Nap_hőenergia"
|
||||
LangString Lang ${LANG_HUNGARIAN} "Nyelv"
|
||||
LangString Fonts ${LANG_HUNGARIAN} "Betűtípusok"
|
||||
LangString Titleblocks ${LANG_HUNGARIAN} "Rajzfejlécek"
|
||||
LangString Examples ${LANG_HUNGARIAN} "Példák"
|
||||
LangString Check ${LANG_HUNGARIAN} "Jelölje be a ${SOFT_NAME} indításához"
|
||||
LangString var1 ${LANG_HUNGARIAN} "A hivatalos gyűjtemény elemei"
|
||||
LangString var2 ${LANG_HUNGARIAN} "Nyelvfájlok"
|
||||
LangString var3 ${LANG_HUNGARIAN} "Rajzfejléc-példák"
|
||||
LangString var4 ${LANG_HUNGARIAN} "Kapcsolási rajz példák"
|
||||
LangString var5 ${LANG_HUNGARIAN} "Betűtípusok"
|
||||
LangString uninstFailed ${LANG_HUNGARIAN} "Az előző verzió eltávolítása nem sikerült.$\nKérjük, távolítsa el manuálisan a ${SOFT_NAME} programot, mielőtt folytatná."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Japanese (LANG_JAPANESE)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_JAPANESE} "${SOFT_NAME} はすでにインストールされています。$\n$\n前のバージョンを削除するには `OK` をクリックし、このアップグレードをキャンセルするには `キャンセル` をクリックしてください。"
|
||||
LangString wrongArch ${LANG_JAPANESE} "この配布パッケージは64ビットコンピュータ専用です。"
|
||||
LangString Elements ${LANG_JAPANESE} "部品"
|
||||
LangString Electric ${LANG_JAPANESE} "電気"
|
||||
LangString Logic ${LANG_JAPANESE} "論理"
|
||||
LangString Hydraulic ${LANG_JAPANESE} "油圧"
|
||||
LangString Pneumatic ${LANG_JAPANESE} "空圧"
|
||||
LangString Energy ${LANG_JAPANESE} "エネルギー"
|
||||
LangString water ${LANG_JAPANESE} "水"
|
||||
LangString Refrigeration ${LANG_JAPANESE} "冷凍"
|
||||
LangString Solar_thermal ${LANG_JAPANESE} "太陽熱"
|
||||
LangString Lang ${LANG_JAPANESE} "言語"
|
||||
LangString Fonts ${LANG_JAPANESE} "フォント"
|
||||
LangString Titleblocks ${LANG_JAPANESE} "表題欄"
|
||||
LangString Examples ${LANG_JAPANESE} "例"
|
||||
LangString Check ${LANG_JAPANESE} "${SOFT_NAME} を起動するにはチェックを入れてください"
|
||||
LangString var1 ${LANG_JAPANESE} "公式コレクションの部品"
|
||||
LangString var2 ${LANG_JAPANESE} "言語ファイル"
|
||||
LangString var3 ${LANG_JAPANESE} "表題欄の例"
|
||||
LangString var4 ${LANG_JAPANESE} "回路図の例"
|
||||
LangString var5 ${LANG_JAPANESE} "フォント"
|
||||
LangString uninstFailed ${LANG_JAPANESE} "前のバージョンのアンインストールに失敗しました。$\n続行する前に、${SOFT_NAME} を手動でアンインストールしてください。"
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Mongolian (LANG_MONGOLIAN)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_MONGOLIAN} "${SOFT_NAME} аль хэдийн суулгасан байна. $\n$\nӨмнөх хувилбарыг устгахын тулд `OK` дарна уу эсвэл энэ шинэчлэлтийг цуцлахын тулд `Цуцлах` дарна уу."
|
||||
LangString wrongArch ${LANG_MONGOLIAN} "Энэ тарилга нь зөвхөн 64 битийн компьютерт зориулагдсан."
|
||||
LangString Elements ${LANG_MONGOLIAN} "Элементүүд"
|
||||
LangString Electric ${LANG_MONGOLIAN} "Цахилгаан"
|
||||
LangString Logic ${LANG_MONGOLIAN} "Логик"
|
||||
LangString Hydraulic ${LANG_MONGOLIAN} "Гидравлик"
|
||||
LangString Pneumatic ${LANG_MONGOLIAN} "Пневматик"
|
||||
LangString Energy ${LANG_MONGOLIAN} "Эрчим хүч"
|
||||
LangString water ${LANG_MONGOLIAN} "Ус"
|
||||
LangString Refrigeration ${LANG_MONGOLIAN} "Хөргөлт"
|
||||
LangString Solar_thermal ${LANG_MONGOLIAN} "Нарны_дулаан"
|
||||
LangString Lang ${LANG_MONGOLIAN} "Хэл"
|
||||
LangString Fonts ${LANG_MONGOLIAN} "Фонт"
|
||||
LangString Titleblocks ${LANG_MONGOLIAN} "Гарчгийн блокууд"
|
||||
LangString Examples ${LANG_MONGOLIAN} "Жишээнүүд"
|
||||
LangString Check ${LANG_MONGOLIAN} "${SOFT_NAME} эхлүүлэхийн тулд тэмдэглэнэ үү"
|
||||
LangString var1 ${LANG_MONGOLIAN} "Албан ёсны цуглуулгын элементүүд"
|
||||
LangString var2 ${LANG_MONGOLIAN} "Хэлний файлууд"
|
||||
LangString var3 ${LANG_MONGOLIAN} "Гарчгийн блокын жишээнүүд"
|
||||
LangString var4 ${LANG_MONGOLIAN} "Схемийн жишээнүүд"
|
||||
LangString var5 ${LANG_MONGOLIAN} "Фонт"
|
||||
LangString uninstFailed ${LANG_MONGOLIAN} "Өмнөх хувилбарыг устгаж чадсангүй.$\nҮргэлжлүүлэхийн өмнө ${SOFT_NAME}-г гараар устгана уу."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Norwegian Bokmål (LANG_NORWEGIAN)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_NORWEGIAN} "${SOFT_NAME} er allerede installert. $\n$\nKlikk `OK` for å fjerne forrige versjon, eller `Avbryt` for å avbryte denne oppgraderingen."
|
||||
LangString wrongArch ${LANG_NORWEGIAN} "Denne distribusjonen er kun for 64-biters datamaskiner."
|
||||
LangString Elements ${LANG_NORWEGIAN} "Elementer"
|
||||
LangString Electric ${LANG_NORWEGIAN} "Elektrisk"
|
||||
LangString Logic ${LANG_NORWEGIAN} "Logikk"
|
||||
LangString Hydraulic ${LANG_NORWEGIAN} "Hydraulikk"
|
||||
LangString Pneumatic ${LANG_NORWEGIAN} "Pneumatikk"
|
||||
LangString Energy ${LANG_NORWEGIAN} "Energi"
|
||||
LangString water ${LANG_NORWEGIAN} "Vann"
|
||||
LangString Refrigeration ${LANG_NORWEGIAN} "Kjøling"
|
||||
LangString Solar_thermal ${LANG_NORWEGIAN} "Solvarme"
|
||||
LangString Lang ${LANG_NORWEGIAN} "Språk"
|
||||
LangString Fonts ${LANG_NORWEGIAN} "Skrifttyper"
|
||||
LangString Titleblocks ${LANG_NORWEGIAN} "Titelblokker"
|
||||
LangString Examples ${LANG_NORWEGIAN} "Eksempler"
|
||||
LangString Check ${LANG_NORWEGIAN} "Kryss av for å starte ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_NORWEGIAN} "Elementer fra den offisielle samlingen"
|
||||
LangString var2 ${LANG_NORWEGIAN} "Språkfiler"
|
||||
LangString var3 ${LANG_NORWEGIAN} "Eksempler på titelblokker"
|
||||
LangString var4 ${LANG_NORWEGIAN} "Eksempler på skjemaer"
|
||||
LangString var5 ${LANG_NORWEGIAN} "Skrifttyper"
|
||||
LangString uninstFailed ${LANG_NORWEGIAN} "Avinstallasjon av forrige versjon mislyktes.$\nVennligst avinstaller ${SOFT_NAME} manuelt før du fortsetter."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Dutch Belgium (LANG_DUTCH / nl_BE — same LANG_DUTCH constant, Belgian variant)
|
||||
; Note: NSIS uses a single LANG_DUTCH constant for both nl_BE and nl_NL.
|
||||
; If your build distinguishes them via a custom constant, replace accordingly.
|
||||
; The block below is already covered by LANG_DUTCH in lang_extra.nsh.
|
||||
; Included here for completeness / override if needed.
|
||||
; ----------------------------------------------------------------
|
||||
; (nl_BE uses the same LANG_DUTCH strings already defined in lang_extra.nsh)
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Portuguese Brazil (LANG_PORTUGUESEBR)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_PORTUGUESEBR} "${SOFT_NAME} já está instalado. $\n$\nClique em `OK` para remover a versão anterior ou em `Cancelar` para cancelar esta atualização."
|
||||
LangString wrongArch ${LANG_PORTUGUESEBR} "Esta distribuição é apenas para computadores de 64 bits."
|
||||
LangString Elements ${LANG_PORTUGUESEBR} "Elementos"
|
||||
LangString Electric ${LANG_PORTUGUESEBR} "Elétrico"
|
||||
LangString Logic ${LANG_PORTUGUESEBR} "Lógica"
|
||||
LangString Hydraulic ${LANG_PORTUGUESEBR} "Hidráulica"
|
||||
LangString Pneumatic ${LANG_PORTUGUESEBR} "Pneumática"
|
||||
LangString Energy ${LANG_PORTUGUESEBR} "Energia"
|
||||
LangString water ${LANG_PORTUGUESEBR} "Água"
|
||||
LangString Refrigeration ${LANG_PORTUGUESEBR} "Refrigeração"
|
||||
LangString Solar_thermal ${LANG_PORTUGUESEBR} "Solar_térmico"
|
||||
LangString Lang ${LANG_PORTUGUESEBR} "Idioma"
|
||||
LangString Fonts ${LANG_PORTUGUESEBR} "Fontes"
|
||||
LangString Titleblocks ${LANG_PORTUGUESEBR} "Legendas"
|
||||
LangString Examples ${LANG_PORTUGUESEBR} "Exemplos"
|
||||
LangString Check ${LANG_PORTUGUESEBR} "Marcar para iniciar ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_PORTUGUESEBR} "Elementos da coleção oficial"
|
||||
LangString var2 ${LANG_PORTUGUESEBR} "Arquivos de idioma"
|
||||
LangString var3 ${LANG_PORTUGUESEBR} "Exemplos de legendas"
|
||||
LangString var4 ${LANG_PORTUGUESEBR} "Exemplos de esquemas"
|
||||
LangString var5 ${LANG_PORTUGUESEBR} "Fontes"
|
||||
LangString uninstFailed ${LANG_PORTUGUESEBR} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Serbian (LANG_SERBIAN) — covers rs/sr
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_SERBIAN} "${SOFT_NAME} је већ инсталиран. $\n$\nКликните `OK` да уклоните претходну верзију или `Откажи` да откажете надоградњу."
|
||||
LangString wrongArch ${LANG_SERBIAN} "Ова дистрибуција је намењена само за 64-битна рачунала."
|
||||
LangString Elements ${LANG_SERBIAN} "Елементи"
|
||||
LangString Electric ${LANG_SERBIAN} "Електрика"
|
||||
LangString Logic ${LANG_SERBIAN} "Логика"
|
||||
LangString Hydraulic ${LANG_SERBIAN} "Хидраулика"
|
||||
LangString Pneumatic ${LANG_SERBIAN} "Пнеуматика"
|
||||
LangString Energy ${LANG_SERBIAN} "Енергија"
|
||||
LangString water ${LANG_SERBIAN} "Вода"
|
||||
LangString Refrigeration ${LANG_SERBIAN} "Хлађење"
|
||||
LangString Solar_thermal ${LANG_SERBIAN} "Соларно_топлотно"
|
||||
LangString Lang ${LANG_SERBIAN} "Језик"
|
||||
LangString Fonts ${LANG_SERBIAN} "Фонтови"
|
||||
LangString Titleblocks ${LANG_SERBIAN} "Заглавља"
|
||||
LangString Examples ${LANG_SERBIAN} "Примери"
|
||||
LangString Check ${LANG_SERBIAN} "Означите за покретање ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SERBIAN} "Елементи службене збирке"
|
||||
LangString var2 ${LANG_SERBIAN} "Језичке датотеке"
|
||||
LangString var3 ${LANG_SERBIAN} "Примери заглавља"
|
||||
LangString var4 ${LANG_SERBIAN} "Примери шема"
|
||||
LangString var5 ${LANG_SERBIAN} "Фонтови"
|
||||
LangString uninstFailed ${LANG_SERBIAN} "Деинсталација претходне верзије није успела.$\nМолимо деинсталирајте ${SOFT_NAME} ручно пре наставка."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Slovak (LANG_SLOVAK)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_SLOVAK} "${SOFT_NAME} je už nainštalovaný. $\n$\nKliknutím na `OK` odstráňte predchádzajúcu verziu alebo kliknite na `Zrušiť` pre zrušenie tohto upgradu."
|
||||
LangString wrongArch ${LANG_SLOVAK} "Táto distribúcia je určená len pre 64-bitové počítače."
|
||||
LangString Elements ${LANG_SLOVAK} "Prvky"
|
||||
LangString Electric ${LANG_SLOVAK} "Elektrika"
|
||||
LangString Logic ${LANG_SLOVAK} "Logika"
|
||||
LangString Hydraulic ${LANG_SLOVAK} "Hydraulika"
|
||||
LangString Pneumatic ${LANG_SLOVAK} "Pneumatika"
|
||||
LangString Energy ${LANG_SLOVAK} "Energia"
|
||||
LangString water ${LANG_SLOVAK} "Voda"
|
||||
LangString Refrigeration ${LANG_SLOVAK} "Chladenie"
|
||||
LangString Solar_thermal ${LANG_SLOVAK} "Solarne_teplo"
|
||||
LangString Lang ${LANG_SLOVAK} "Jazyk"
|
||||
LangString Fonts ${LANG_SLOVAK} "Písma"
|
||||
LangString Titleblocks ${LANG_SLOVAK} "Popisové polia"
|
||||
LangString Examples ${LANG_SLOVAK} "Príklady"
|
||||
LangString Check ${LANG_SLOVAK} "Začiarknite pre spustenie ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SLOVAK} "Prvky oficiálnej zbierky"
|
||||
LangString var2 ${LANG_SLOVAK} "Jazykové súbory"
|
||||
LangString var3 ${LANG_SLOVAK} "Príklady popisových polí"
|
||||
LangString var4 ${LANG_SLOVAK} "Príklady schém"
|
||||
LangString var5 ${LANG_SLOVAK} "Písma"
|
||||
LangString uninstFailed ${LANG_SLOVAK} "Odinštalovanie predchádzajúcej verzie zlyhalo.$\nPred pokračovaním odinštalujte ${SOFT_NAME} ručne."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Slovenian (LANG_SLOVENIAN)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_SLOVENIAN} "${SOFT_NAME} je že nameščen. $\n$\nKliknite `OK` za odstranitev prejšnje različice ali `Prekliči` za preklic te nadgradnje."
|
||||
LangString wrongArch ${LANG_SLOVENIAN} "Ta distribucija je namenjena samo za 64-bitne računalnike."
|
||||
LangString Elements ${LANG_SLOVENIAN} "Elementi"
|
||||
LangString Electric ${LANG_SLOVENIAN} "Elektrika"
|
||||
LangString Logic ${LANG_SLOVENIAN} "Logika"
|
||||
LangString Hydraulic ${LANG_SLOVENIAN} "Hidravlika"
|
||||
LangString Pneumatic ${LANG_SLOVENIAN} "Pnevmatika"
|
||||
LangString Energy ${LANG_SLOVENIAN} "Energija"
|
||||
LangString water ${LANG_SLOVENIAN} "Voda"
|
||||
LangString Refrigeration ${LANG_SLOVENIAN} "Hlajenje"
|
||||
LangString Solar_thermal ${LANG_SLOVENIAN} "Solarno_toplotno"
|
||||
LangString Lang ${LANG_SLOVENIAN} "Jezik"
|
||||
LangString Fonts ${LANG_SLOVENIAN} "Pisave"
|
||||
LangString Titleblocks ${LANG_SLOVENIAN} "Glave risb"
|
||||
LangString Examples ${LANG_SLOVENIAN} "Primeri"
|
||||
LangString Check ${LANG_SLOVENIAN} "Označite za zagon ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SLOVENIAN} "Elementi uradne zbirke"
|
||||
LangString var2 ${LANG_SLOVENIAN} "Jezikovne datoteke"
|
||||
LangString var3 ${LANG_SLOVENIAN} "Primeri glav risb"
|
||||
LangString var4 ${LANG_SLOVENIAN} "Primeri shem"
|
||||
LangString var5 ${LANG_SLOVENIAN} "Pisave"
|
||||
LangString uninstFailed ${LANG_SLOVENIAN} "Odstranitev prejšnje različice ni uspela.$\nPred nadaljevanjem ročno odstranite ${SOFT_NAME}."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Swedish (LANG_SWEDISH)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_SWEDISH} "${SOFT_NAME} är redan installerat. $\n$\nKlicka på `OK` för att ta bort den tidigare versionen eller `Avbryt` för att avbryta uppgraderingen."
|
||||
LangString wrongArch ${LANG_SWEDISH} "Den här distributionen är endast för 64-bitars datorer."
|
||||
LangString Elements ${LANG_SWEDISH} "Element"
|
||||
LangString Electric ${LANG_SWEDISH} "Elektrisk"
|
||||
LangString Logic ${LANG_SWEDISH} "Logik"
|
||||
LangString Hydraulic ${LANG_SWEDISH} "Hydraulik"
|
||||
LangString Pneumatic ${LANG_SWEDISH} "Pneumatik"
|
||||
LangString Energy ${LANG_SWEDISH} "Energi"
|
||||
LangString water ${LANG_SWEDISH} "Vatten"
|
||||
LangString Refrigeration ${LANG_SWEDISH} "Kylning"
|
||||
LangString Solar_thermal ${LANG_SWEDISH} "Solvarme"
|
||||
LangString Lang ${LANG_SWEDISH} "Språk"
|
||||
LangString Fonts ${LANG_SWEDISH} "Teckensnitt"
|
||||
LangString Titleblocks ${LANG_SWEDISH} "Ritningshuvuden"
|
||||
LangString Examples ${LANG_SWEDISH} "Exempel"
|
||||
LangString Check ${LANG_SWEDISH} "Markera för att starta ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SWEDISH} "Element från den officiella samlingen"
|
||||
LangString var2 ${LANG_SWEDISH} "Språkfiler"
|
||||
LangString var3 ${LANG_SWEDISH} "Exempel på ritningshuvuden"
|
||||
LangString var4 ${LANG_SWEDISH} "Exempel på scheman"
|
||||
LangString var5 ${LANG_SWEDISH} "Teckensnitt"
|
||||
LangString uninstFailed ${LANG_SWEDISH} "Avinstallationen av den föregående versionen misslyckades.$\nAvinstallera ${SOFT_NAME} manuellt innan du fortsätter."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Turkish (LANG_TURKISH)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_TURKISH} "${SOFT_NAME} zaten yüklü. $\n$\nÖnceki sürümü kaldırmak için `Tamam`'a, bu yükseltmeyi iptal etmek için `İptal`'e tıklayın."
|
||||
LangString wrongArch ${LANG_TURKISH} "Bu dağıtım yalnızca 64 bit bilgisayarlar içindir."
|
||||
LangString Elements ${LANG_TURKISH} "Elemanlar"
|
||||
LangString Electric ${LANG_TURKISH} "Elektrik"
|
||||
LangString Logic ${LANG_TURKISH} "Mantık"
|
||||
LangString Hydraulic ${LANG_TURKISH} "Hidrolik"
|
||||
LangString Pneumatic ${LANG_TURKISH} "Pnömatik"
|
||||
LangString Energy ${LANG_TURKISH} "Enerji"
|
||||
LangString water ${LANG_TURKISH} "Su"
|
||||
LangString Refrigeration ${LANG_TURKISH} "Soğutma"
|
||||
LangString Solar_thermal ${LANG_TURKISH} "Gunes_Is"
|
||||
LangString Lang ${LANG_TURKISH} "Dil"
|
||||
LangString Fonts ${LANG_TURKISH} "Yazı Tipleri"
|
||||
LangString Titleblocks ${LANG_TURKISH} "Başlık Bloğu"
|
||||
LangString Examples ${LANG_TURKISH} "Örnekler"
|
||||
LangString Check ${LANG_TURKISH} "${SOFT_NAME}'i başlatmak için işaretleyin"
|
||||
LangString var1 ${LANG_TURKISH} "Resmi koleksiyonun elemanları"
|
||||
LangString var2 ${LANG_TURKISH} "Dil dosyaları"
|
||||
LangString var3 ${LANG_TURKISH} "Başlık bloğu örnekleri"
|
||||
LangString var4 ${LANG_TURKISH} "Şema örnekleri"
|
||||
LangString var5 ${LANG_TURKISH} "Yazı Tipleri"
|
||||
LangString uninstFailed ${LANG_TURKISH} "Önceki sürümün kaldırılması başarısız oldu.$\nDevam etmeden önce lütfen ${SOFT_NAME}'i manuel olarak kaldırın."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Ukrainian (LANG_UKRAINIAN)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_UKRAINIAN} "${SOFT_NAME} вже встановлено. $\n$\nНатисніть `OK` для видалення попередньої версії або `Скасувати` для скасування оновлення."
|
||||
LangString wrongArch ${LANG_UKRAINIAN} "Цей дистрибутив призначений лише для 64-розрядних комп'ютерів."
|
||||
LangString Elements ${LANG_UKRAINIAN} "Елементи"
|
||||
LangString Electric ${LANG_UKRAINIAN} "Електрика"
|
||||
LangString Logic ${LANG_UKRAINIAN} "Логіка"
|
||||
LangString Hydraulic ${LANG_UKRAINIAN} "Гідравліка"
|
||||
LangString Pneumatic ${LANG_UKRAINIAN} "Пневматика"
|
||||
LangString Energy ${LANG_UKRAINIAN} "Енергетика"
|
||||
LangString water ${LANG_UKRAINIAN} "Водопостачання"
|
||||
LangString Refrigeration ${LANG_UKRAINIAN} "Холодильна техніка"
|
||||
LangString Solar_thermal ${LANG_UKRAINIAN} "Сонячно-теплова"
|
||||
LangString Lang ${LANG_UKRAINIAN} "Мова"
|
||||
LangString Fonts ${LANG_UKRAINIAN} "Шрифти"
|
||||
LangString Titleblocks ${LANG_UKRAINIAN} "Штампи"
|
||||
LangString Examples ${LANG_UKRAINIAN} "Приклади"
|
||||
LangString Check ${LANG_UKRAINIAN} "Позначте для запуску ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_UKRAINIAN} "Елементи офіційної колекції"
|
||||
LangString var2 ${LANG_UKRAINIAN} "Мовні файли"
|
||||
LangString var3 ${LANG_UKRAINIAN} "Приклади штампів"
|
||||
LangString var4 ${LANG_UKRAINIAN} "Приклади схем"
|
||||
LangString var5 ${LANG_UKRAINIAN} "Шрифти"
|
||||
LangString uninstFailed ${LANG_UKRAINIAN} "Видалення попередньої версії завершилося помилкою.$\nБудь ласка, видаліть ${SOFT_NAME} вручну перед продовженням."
|
||||
|
||||
|
||||
; ----------------------------------------------------------------
|
||||
; Chinese Simplified (LANG_SIMPCHINESE)
|
||||
; ----------------------------------------------------------------
|
||||
LangString installed ${LANG_SIMPCHINESE} "${SOFT_NAME} 已经安装。$\n$\n单击 $\"确定$\" 删除旧版本,或单击 $\"取消$\" 取消本次升级。"
|
||||
LangString wrongArch ${LANG_SIMPCHINESE} "本安装包仅适用于 64 位计算机。"
|
||||
LangString Elements ${LANG_SIMPCHINESE} "元件"
|
||||
LangString Electric ${LANG_SIMPCHINESE} "电气"
|
||||
LangString Logic ${LANG_SIMPCHINESE} "逻辑"
|
||||
LangString Hydraulic ${LANG_SIMPCHINESE} "液压"
|
||||
LangString Pneumatic ${LANG_SIMPCHINESE} "气动"
|
||||
LangString Energy ${LANG_SIMPCHINESE} "能源"
|
||||
LangString water ${LANG_SIMPCHINESE} "水"
|
||||
LangString Refrigeration ${LANG_SIMPCHINESE} "制冷"
|
||||
LangString Solar_thermal ${LANG_SIMPCHINESE} "太阳能热"
|
||||
LangString Lang ${LANG_SIMPCHINESE} "语言"
|
||||
LangString Fonts ${LANG_SIMPCHINESE} "字体"
|
||||
LangString Titleblocks ${LANG_SIMPCHINESE} "标题栏"
|
||||
LangString Examples ${LANG_SIMPCHINESE} "示例"
|
||||
LangString Check ${LANG_SIMPCHINESE} "勾选以启动 ${SOFT_NAME}"
|
||||
LangString var1 ${LANG_SIMPCHINESE} "官方库元件"
|
||||
LangString var2 ${LANG_SIMPCHINESE} "语言文件"
|
||||
LangString var3 ${LANG_SIMPCHINESE} "标题栏示例"
|
||||
LangString var4 ${LANG_SIMPCHINESE} "图纸示例"
|
||||
LangString var5 ${LANG_SIMPCHINESE} "字体"
|
||||
LangString uninstFailed ${LANG_SIMPCHINESE} "卸载旧版本失败。$\n请在继续之前手动卸载 ${SOFT_NAME}。"
|
||||
@@ -88,6 +88,7 @@ set(QET_RES_FILES
|
||||
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.ui
|
||||
${QET_DIR}/sources/ui/elementinfopartwidget.ui
|
||||
${QET_DIR}/sources/ui/elementinfowidget.ui
|
||||
${QET_DIR}/sources/ui/terminalnumberingdialog.ui
|
||||
${QET_DIR}/sources/ui/formulaassistantdialog.ui
|
||||
${QET_DIR}/sources/ui/imagepropertieswidget.ui
|
||||
${QET_DIR}/sources/ui/importelementdialog.ui
|
||||
@@ -112,6 +113,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/conductorautonumerotation.cpp
|
||||
${QET_DIR}/sources/conductorautonumerotation.h
|
||||
${QET_DIR}/sources/conductornumexport.cpp
|
||||
${QET_DIR}/sources/wiringlistexport.h
|
||||
${QET_DIR}/sources/wiringlistexport.cpp
|
||||
${QET_DIR}/sources/conductornumexport.h
|
||||
${QET_DIR}/sources/conductorprofile.cpp
|
||||
${QET_DIR}/sources/conductorprofile.h
|
||||
@@ -251,6 +254,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddtext.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventinterface.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventinterface.h
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddmacro.cpp
|
||||
${QET_DIR}/sources/diagramevent/diagrameventaddmacro.h
|
||||
|
||||
${QET_DIR}/sources/dvevent/dveventinterface.cpp
|
||||
${QET_DIR}/sources/dvevent/dveventinterface.h
|
||||
@@ -630,6 +635,8 @@ set(QET_SRC_FILES
|
||||
${QET_DIR}/sources/ui/elementinfopartwidget.h
|
||||
${QET_DIR}/sources/ui/elementinfowidget.cpp
|
||||
${QET_DIR}/sources/ui/elementinfowidget.h
|
||||
${QET_DIR}/sources/ui/terminalnumberingdialog.cpp
|
||||
${QET_DIR}/sources/ui/terminalnumberingdialog.h
|
||||
${QET_DIR}/sources/ui/elementpropertieswidget.cpp
|
||||
${QET_DIR}/sources/ui/elementpropertieswidget.h
|
||||
${QET_DIR}/sources/ui/formulaassistantdialog.cpp
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7b7798233e8251baac7717d4b0f991ad5fdf23a76d9fbe864d363e3b93458560
|
||||
size 529821696
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
<!-- HTML footer for doxygen 1.12.0-->
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">$generatedby <a href="https://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
$generatedby <a href="https://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion
|
||||
</small></address>
|
||||
</div><!-- doc-content -->
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,88 @@
|
||||
<!-- HTML header for doxygen 1.12.0-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="$langISO">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_ICON-->
|
||||
<link rel="icon" href="$relpath^$projecticon" type="image/x-icon" />
|
||||
<!--END PROJECT_ICON-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN FULL_SIDEBAR-->
|
||||
<script type="text/javascript">var page_layout=1;</script>
|
||||
<!--END FULL_SIDEBAR-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
<!--BEGIN COPY_CLIPBOARD-->
|
||||
<script type="text/javascript" src="$relpath^clipboard.js"></script>
|
||||
<!--END COPY_CLIPBOARD-->
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
$darkmode
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>
|
||||
<script type="text/javascript">
|
||||
DoxygenAwesomeDarkModeToggle.init()
|
||||
</script>
|
||||
<script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
|
||||
<script type="text/javascript">
|
||||
DoxygenAwesomeFragmentCopyButton.init()
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN FULL_SIDEBAR-->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<!--END FULL_SIDEBAR-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"$logosize/></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td id="projectalign">
|
||||
<div id="projectname">$projectname<!--BEGIN PROJECT_NUMBER--><span id="projectnumber"> $projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td>
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<!--BEGIN !FULL_SIDEBAR-->
|
||||
<td>$searchbox</td>
|
||||
<!--END !FULL_SIDEBAR-->
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<!--BEGIN FULL_SIDEBAR-->
|
||||
<tr><td colspan="2">$searchbox</td></tr>
|
||||
<!--END FULL_SIDEBAR-->
|
||||
<!--END SEARCHENGINE-->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 43 KiB |
Binary file not shown.
Submodule
+1
Submodule doxygen-awesome-css added at 568f56cde6
+1
-1
Submodule elements updated: 6e1e2471fe...2bc4c95cc4
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+1017
-734
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+834
-585
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+5568
-620
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+785
-533
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+781
-536
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+776
-532
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+14538
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+14539
File diff suppressed because it is too large
Load Diff
+777
-534
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+779
-535
File diff suppressed because it is too large
Load Diff
+942
-664
File diff suppressed because it is too large
Load Diff
+777
-534
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
+777
-533
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,76 @@
|
||||
.TH QELECTROTECH 1 "AOÛT 2008" QElectroTech "사용자 설명서"
|
||||
.SH 이름
|
||||
qelectrotech \- 전기 도면 편집기
|
||||
.SH 사용법
|
||||
.B qelectrotech
|
||||
.B [\-\-common\-elements\-dir\fR=\fI경로\fB]
|
||||
.B [\-\-config\-dir\fR=\fI경로\fB]
|
||||
.B [\-\-lang\-dir\fR=\fI경로\fB]
|
||||
.B [\-\-help]
|
||||
.B [\-v\fR|\fB\-\-version]
|
||||
.B [\-\-license]
|
||||
.B [\fI파일\fB]...
|
||||
|
||||
.SH 설명
|
||||
QElectroTech는 전기 도면 편집기입니다. 도면(*.qet)과 전기 요소(*.elmt)는 XML 형식으로 저장됩니다.
|
||||
도면에서 사용할 수 있는 요소는 공용 컬렉션 또는 사용자 컬렉션에서 가져올 수 있습니다.
|
||||
일반적으로 공용 컬렉션은 모든 사용자가 접근할 수 있지만 사용자가 편집할 수는 없습니다.
|
||||
사용자 컬렉션은 각 사용자에게 고유하며 사용자가 원하는 대로 수정할 수 있습니다.
|
||||
|
||||
.SH 옵션
|
||||
.TP
|
||||
\fB\-\-common\-elements\-dir\fR=\fI경로\fR
|
||||
공용 요소(Elements) 컬렉션의 루트로 \fI경로\fR 폴더를 사용합니다.
|
||||
참고: 이 옵션은 컴파일 시 QET_ALLOW_OVERRIDE_CED_OPTION 지시문이 지정된 경우에만 활성화됩니다.
|
||||
.TP
|
||||
\fB\-\-config\-dir\fR=\fI경로\fR
|
||||
현재 사용자의 설정 폴더로 \fI경로\fR 폴더를 사용합니다.
|
||||
이 폴더에는 애플리케이션 설정을 담은 qelectrotech.conf 파일과, 사용자 요소 컬렉션을 담는 elements 하위 폴더가 포함됩니다.
|
||||
참고: 이 옵션은 컴파일 시 QET_ALLOW_OVERRIDE_CD_OPTION 지시문이 지정된 경우에만 활성화됩니다.
|
||||
.TP
|
||||
\fB\-\-lang\-dir\fR=\fI경로\fR
|
||||
애플리케이션 번역 파일을 \fI경로\fR 폴더에서 찾습니다.
|
||||
.TP
|
||||
\fB\-\-help\fR
|
||||
사용 가능한 옵션에 대한 간단한 설명을 표시합니다.
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-version\fR
|
||||
애플리케이션 버전을 표시합니다(예: 0.1).
|
||||
.TP
|
||||
\fB\-\-license\fR
|
||||
애플리케이션 라이선스(GNU/GPL)를 표시합니다.
|
||||
|
||||
.P
|
||||
참고: 위 옵션 중 마지막 3개(\-\-lang\-dir, \-\-help, \-\-version, \-\-license 관련)는 명령행에서 지정되면
|
||||
해당 정보를 표시한 뒤 프로그램이 종료됩니다.
|
||||
사용자가 이미 애플리케이션을 실행 중인 경우에는, 실행 중인 인스턴스가 명령행을 처리하며 특히 열 파일 목록에 적용됩니다.
|
||||
다만 폴더를 재정의하는 옵션(공용 컬렉션/설정 폴더/언어 파일 폴더)은 적용되지 않습니다.
|
||||
열 파일의 확장자가 .elmt로 끝나면 QElectroTech는 요소 편집기로 열려고 시도합니다.
|
||||
그 외에는 도면 파일로 간주합니다.
|
||||
|
||||
.SH 작성자
|
||||
Benoît Ansieau <benoit@qelectrotech.org>
|
||||
.br
|
||||
Xavier Guerrin <xavier@qelectrotech.org>
|
||||
.br
|
||||
Laurent Trinques <scorpio@qelectrotech.org>
|
||||
.br
|
||||
Joshua Claveau <joshua@qelectrotech.org>
|
||||
.br
|
||||
Cyril.frausti <cyril@qelectrotech.org>
|
||||
.br
|
||||
|
||||
.SH 버그 신고
|
||||
애플리케이션에서 비정상 동작이 의심되면, FAQ <http://qelectrotech.org/wiki/doku.php?id=doc:faq> 와
|
||||
BugTracker <http://qelectrotech.org/bugtracker/> 를 확인하여 이미 알려진 문제인지 확인해 주세요.
|
||||
해당 문제가 없다면 BugTracker를 통해 버그 리포트를 제출해 주세요.
|
||||
|
||||
.SH 저작권
|
||||
Copyright © QElectroTech 개발자
|
||||
.br
|
||||
라이선스: GNU/GPL v2+ : <http://www.gnu.org/licenses/old\-licenses/gpl\-2.0.html>
|
||||
.br
|
||||
이 프로그램은 자유 소프트웨어입니다. 수정 및 재배포할 수 있습니다. 이 프로그램은 “있는 그대로(as is)” 제공되며 어떠한 보증도 없습니다.
|
||||
|
||||
.SH 참고
|
||||
공식 사이트: <http://qelectrotech.org/>
|
||||
@@ -7,7 +7,7 @@ Icon=qelectrotech
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=application/x-qet-project;application/x-qet-element;application/x-qet-titleblock;
|
||||
Categories=Graphics;Qt;VectorGraphics;Science;Electricity;Engineering;
|
||||
Categories=Graphics;
|
||||
Keywords=Graphics;Science;Electricity;Engineering;
|
||||
Comment=Edit electrical diagrams.
|
||||
Comment[ar]=تحرير مخططات كهربائية
|
||||
@@ -22,11 +22,23 @@ Comment[fr]=Éditer des schémas électriques.
|
||||
Comment[hr]=Uredi elektro sheme
|
||||
Comment[it]=Disegnare schemi elettrici
|
||||
Comment[ja]=電気回路図の編集。
|
||||
Comment[ko]=전기 도면을 편집합니다.
|
||||
Comment[nl]=Bewerken bedradingsdiagrammen.
|
||||
Comment[pl]=Edycja schematów elektrycznych
|
||||
Comment[pt]=Criar esquemas eléctricos.
|
||||
Comment[ru]=Создание и редактирование электрических схем.
|
||||
Comment[sk]=Úprava elektrických schém.
|
||||
Comment[hu]=Elektromos kapcsolási rajzok szerkesztése.
|
||||
Comment[mn]=Цахилгааны схем засварлах.
|
||||
Comment[nb]=Rediger elektriske diagrammer.
|
||||
Comment[pt_BR]=Editar diagramas elétricos.
|
||||
Comment[ro]=Editați diagrame electrice.
|
||||
Comment[sl]=Uredite električne sheme.
|
||||
Comment[sr]=Уређивање електричних дијаграма.
|
||||
Comment[sv]=Redigera elektriska diagram.
|
||||
Comment[tr]=Elektrik şemalarını düzenleyin.
|
||||
Comment[uk]=Редагування електричних схем.
|
||||
Comment[zh]=编辑电气图。
|
||||
GenericName=Electrical diagram editor
|
||||
GenericName[ar]=مُحرّر مخططات كهربائية
|
||||
GenericName[be]=Elektrische schema editor
|
||||
@@ -40,8 +52,20 @@ GenericName[fr]=Éditeur de schémas électriques
|
||||
GenericName[hr]=Editor elektro sheme
|
||||
GenericName[it]=Programma per disegnare schemi elettrici
|
||||
GenericName[ja]=電気回路図エディタ
|
||||
GenericName[ko]=전기 도면 편집기
|
||||
GenericName[nl]=Elektrische schema editor
|
||||
GenericName[pl]=Edytor schematów elektrycznych
|
||||
GenericName[pt]=Editor de esquemas eléctricos.
|
||||
GenericName[ru]=Редактор электрических схем
|
||||
GenericName[sk]=Editor elektrických schém
|
||||
GenericName[hu]=Elektromos kapcsolási rajz szerkesztő
|
||||
GenericName[mn]=Цахилгааны схемийн засварлагч
|
||||
GenericName[nb]=Elektrisk diagram editor
|
||||
GenericName[pt_BR]=Editor de diagramas elétricos
|
||||
GenericName[ro]=Editor de diagrame electrice
|
||||
GenericName[sl]=Urejevalnik električnih shem
|
||||
GenericName[sr]=Уређивач електричних дијаграма
|
||||
GenericName[sv]=Elektriskt diagramredigerare
|
||||
GenericName[tr]=Elektrik şeması düzenleyici
|
||||
GenericName[uk]=Редактор електричних схем
|
||||
GenericName[zh]=电气图编辑器
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2006-2025 The QElectroTech Team -->
|
||||
<application>
|
||||
<id type="desktop">qelectrotech.desktop</id>
|
||||
<!-- Copyright 2006-2026 The QElectroTech Team -->
|
||||
<component type="desktop-application">
|
||||
<id>org.qelectrotech.QElectroTech</id>
|
||||
<launchable type="desktop-id">org.qelectrotech.QElectroTech.desktop</launchable>
|
||||
<metadata_license>MIT</metadata_license>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<name>QElectroTech</name>
|
||||
@@ -13,18 +14,32 @@
|
||||
<summary xml:lang="da">Elektrisk diagram redigering</summary>
|
||||
<summary xml:lang="de">Zeichenprogramm für Schaltpläne</summary>
|
||||
<summary xml:lang="el">Επεξεργαστής ηλεκτρικών διαγραμμάτων</summary>
|
||||
<summary xml:lang="ex">Editor de esquemas eléctricos</summary>
|
||||
<summary xml:lang="es">Editor de esquemas eléctricos</summary>
|
||||
<summary xml:lang="fr">Éditeur de schémas électriques</summary>
|
||||
<summary xml:lang="hr">Editor elektro sheme</summary>
|
||||
<summary xml:lang="it">Programma per disegnare schemi elettrici</summary>
|
||||
<summary xml:lang="ja">電気回路図エディタ</summary>
|
||||
<summary xml:lang="ko">전기 도면 편집기</summary>
|
||||
<summary xml:lang="nl">Elektrische schema bewerker</summary>
|
||||
<summary xml:lang="pl">Edytor schematów elektrycznych</summary>
|
||||
<summary xml:lang="pt">Editor de esquemas eléctricos</summary>
|
||||
<summary xml:lang="ru">Редактор электрических схем</summary>
|
||||
<summary xml:lang="en">Electrical diagram editor</summary>
|
||||
<summary xml:lang="hu">Elektromos kapcsolási rajz szerkesztő</summary>
|
||||
<summary xml:lang="mn">Цахилгааны схемийн засварлагч</summary>
|
||||
<summary xml:lang="nb">Elektrisk diagram editor</summary>
|
||||
<summary xml:lang="pt_BR">Editor de diagramas elétricos</summary>
|
||||
<summary xml:lang="ro">Editor de diagrame electrice</summary>
|
||||
<summary xml:lang="sk">Editor elektrických schém</summary>
|
||||
<summary xml:lang="sl">Urejevalnik električnih shem</summary>
|
||||
<summary xml:lang="sr">Уређивач електричних дијаграма</summary>
|
||||
<summary xml:lang="sv">Elektriskt diagramredigerare</summary>
|
||||
<summary xml:lang="tr">Elektrik şeması düzenleyici</summary>
|
||||
<summary xml:lang="uk">Редактор електричних схем</summary>
|
||||
<summary xml:lang="zh">电气图编辑器</summary>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<releases>
|
||||
<release version="0.9-dev" date="2021-02-21"/>
|
||||
<release version="0.100.1-dev" date="2026"/>
|
||||
</releases>
|
||||
<description>
|
||||
<p>
|
||||
@@ -71,6 +86,10 @@
|
||||
QElectroTech は電気回路図を作成する Qt5 アプリケーションです。
|
||||
QET は要素と回路図に XML 形式を利用し、回路図エディタ、要素エディタ、表題欄エディタを含みます。
|
||||
</p>
|
||||
<p xml:lang="ko">
|
||||
QElectroTech는 전기 도면을 설계하기 위한 Qt5 기반 애플리케이션입니다.
|
||||
요소와 도면을 XML 형식으로 관리하며, 도면 편집기, 요소 편집기, 표제란 편집기를 포함하고 있습니다.
|
||||
</p>
|
||||
<p xml:lang="nl">
|
||||
QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen.
|
||||
Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en een bloksjabloon bewerker.
|
||||
@@ -87,10 +106,73 @@
|
||||
QElectroTech - приложение написанное на Qt5 и предназначено для разработки электрических схем.
|
||||
Приложение использует для хранения проектов и библиотек элементов файлы в XML формате. Приложение помимо редактора электричесих схем, содержит также редакторы элементов и редактор шаблонов листов.
|
||||
</p>
|
||||
<p xml:lang="hr">
|
||||
QElectroTech je Qt5 aplikacija za projektiranje elektro shema.
|
||||
Koristi XML datoteke za elemente i sheme, te uključuje uređivač shema, uređivač elemenata i uređivač zaglavlja.
|
||||
</p>
|
||||
<p xml:lang="hu">
|
||||
A QElectroTech egy Qt5 alapú alkalmazás elektromos kapcsolási rajzok tervezéséhez.
|
||||
XML fájlokat használ az elemekhez és rajzokhoz, és tartalmaz egy rajzszerkesztőt, egy elemszerkesztőt és egy fejlécszerkesztőt.
|
||||
</p>
|
||||
<p xml:lang="mn">
|
||||
QElectroTech нь Qt5 дээр суурилсан цахилгааны схем зохиох програм юм.
|
||||
Элемент болон схемүүдэд XML файл ашигладаг бөгөөд схем засварлагч, элемент засварлагч, гарчгийн блок засварлагчийг агуулдаг.
|
||||
</p>
|
||||
<p xml:lang="nb">
|
||||
QElectroTech er et Qt5-program for å lage elektriske skjemaer.
|
||||
Det bruker XML-filer for elementer og skjemaer, og inkluderer en skjemaeditor, en elementeditor og en tittelblokkreditor.
|
||||
</p>
|
||||
<p xml:lang="pt_BR">
|
||||
QElectroTech é uma aplicação Qt5 para desenhar diagramas elétricos.
|
||||
Utiliza arquivos XML para os elementos e diagramas, e inclui um editor de diagramas, um editor de elementos e um editor de cartuchos.
|
||||
</p>
|
||||
<p xml:lang="ro">
|
||||
QElectroTech este o aplicație Qt5 pentru proiectarea schemelor electrice.
|
||||
Utilizează fișiere XML pentru elemente și scheme, și include un editor de scheme, un editor de elemente și un editor de cartușe.
|
||||
</p>
|
||||
<p xml:lang="sk">
|
||||
QElectroTech je Qt5 aplikácia na navrhovanie elektrických schém.
|
||||
Pre prvky a schémy používa súbory XML a zahŕňa editor schém, editor prvkov a editor titulkových blokov.
|
||||
</p>
|
||||
<p xml:lang="sl">
|
||||
QElectroTech je aplikacija Qt5 za načrtovanje električnih shem.
|
||||
Za elemente in sheme uporablja datoteke XML ter vključuje urejevalnik shem, urejevalnik elementov in urejevalnik naslovnih blokov.
|
||||
</p>
|
||||
<p xml:lang="sr">
|
||||
QElectroTech је Qt5 апликација за пројектовање електричних шема.
|
||||
Користи XML датотеке за елементе и шеме, и укључује уређивач шема, уређивач елемената и уређивач заглавља.
|
||||
</p>
|
||||
<p xml:lang="sv">
|
||||
QElectroTech är ett Qt5-program för att rita elektriska schema.
|
||||
Det använder XML-filer för element och schema, och inkluderar en schemaredigerare, en elementredigerare och en titelblocksredigerare.
|
||||
</p>
|
||||
<p xml:lang="tr">
|
||||
QElectroTech, elektrik şemaları tasarlamak için bir Qt5 uygulamasıdır.
|
||||
Elemanlar ve şemalar için XML dosyaları kullanır; şema düzenleyicisi, eleman düzenleyicisi ve başlık bloğu düzenleyicisini içerir.
|
||||
</p>
|
||||
<p xml:lang="uk">
|
||||
QElectroTech — це Qt5 застосунок для проектування електричних схем.
|
||||
Використовує XML-файли для елементів і схем, і включає редактор схем, редактор елементів та редактор основних написів.
|
||||
</p>
|
||||
<p xml:lang="zh">
|
||||
QElectroTech 是一款基于 Qt5 的电气图设计应用程序。
|
||||
它使用 XML 文件存储元件和图纸,包含图纸编辑器、元件编辑器和标题栏编辑器。
|
||||
</p>
|
||||
</description>
|
||||
<url type="homepage">http://qelectrotech.org</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">http://download.tuxfamily.org/qet/screens/qelectrotech5.png</screenshot>
|
||||
</screenshots>
|
||||
<updatecontact>qet@lists.tuxfamily.org</updatecontact>
|
||||
</application>
|
||||
<url type="homepage">https://qelectrotech.org</url>
|
||||
<url type="bugtracker">https://qelectrotech.org/bugtracker</url>
|
||||
<url type="vcs-browser">https://github.com/qelectrotech/qelectrotech-source-mirror</url>
|
||||
<developer id="org.qelectrotech">
|
||||
<name>QElectroTech</name>
|
||||
</developer>
|
||||
<screenshot type="default">
|
||||
<image>https://qelectrotech.org/screenshots/qet_overview04.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://qelectrotech.org/screenshots/qet_overview06.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://qelectrotech.org/screenshots/qet_overview09.png</image>
|
||||
</screenshot>
|
||||
<update_contact>scorpio@qelectrotech.org</update_contact>
|
||||
</component>
|
||||
|
||||
@@ -14,10 +14,24 @@
|
||||
<comment xml:lang="fr">Fichier projet QElectroTech</comment>
|
||||
<comment xml:lang="it">File del progetto QElectroTech</comment>
|
||||
<comment xml:lang="ja">QElectroTech プロジェクト・ファイル</comment>
|
||||
<comment xml:lang="ko">QElectroTech 프로젝트 파일</comment>
|
||||
<comment xml:lang="nl">QElectroTech project bestand</comment>
|
||||
<comment xml:lang="pl">Plik projektu QElectrotech</comment>
|
||||
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
|
||||
<comment xml:lang="ru">Файл проекта QElectroTech</comment>
|
||||
<comment xml:lang="hr">QElectroTech datoteka projekta</comment>
|
||||
<comment xml:lang="hu">QElectroTech projektfájl</comment>
|
||||
<comment xml:lang="mn">QElectroTech төслийн файл</comment>
|
||||
<comment xml:lang="nb">QElectroTech prosjektfil</comment>
|
||||
<comment xml:lang="pt_BR">Arquivo de projeto QElectroTech</comment>
|
||||
<comment xml:lang="ro">Fișier proiect QElectroTech</comment>
|
||||
<comment xml:lang="sk">Súbor projektu QElectroTech</comment>
|
||||
<comment xml:lang="sl">Datoteka projekta QElectroTech</comment>
|
||||
<comment xml:lang="sr">QElectroTech датотека пројекта</comment>
|
||||
<comment xml:lang="sv">QElectroTech projektfil</comment>
|
||||
<comment xml:lang="tr">QElectroTech proje dosyası</comment>
|
||||
<comment xml:lang="uk">Файл проєкту QElectroTech</comment>
|
||||
<comment xml:lang="zh">QElectroTech 项目文件</comment>
|
||||
<glob pattern="*.qet" />
|
||||
</mime-type>
|
||||
<mime-type type="application/x-qet-element">
|
||||
@@ -34,10 +48,24 @@
|
||||
<comment xml:lang="fr">Fichier élément QElectroTech</comment>
|
||||
<comment xml:lang="it">File del progetto QElectroTech</comment>
|
||||
<comment xml:lang="ja">QElectroTech 要素ファイル</comment>
|
||||
<comment xml:lang="ko">QElectroTech 요소 파일</comment>
|
||||
<comment xml:lang="nl">QElectroTech element bestand</comment>
|
||||
<comment xml:lang="pl">Plik elementu QElectroTech</comment>
|
||||
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
|
||||
<comment xml:lang="ru">Файл элемента QElectroTech</comment>
|
||||
<comment xml:lang="hr">QElectroTech datoteka elementa</comment>
|
||||
<comment xml:lang="hu">QElectroTech elemfájl</comment>
|
||||
<comment xml:lang="mn">QElectroTech элементийн файл</comment>
|
||||
<comment xml:lang="nb">QElectroTech elementfil</comment>
|
||||
<comment xml:lang="pt_BR">Arquivo de elemento QElectroTech</comment>
|
||||
<comment xml:lang="ro">Fișier element QElectroTech</comment>
|
||||
<comment xml:lang="sk">Súbor prvku QElectroTech</comment>
|
||||
<comment xml:lang="sl">Datoteka elementa QElectroTech</comment>
|
||||
<comment xml:lang="sr">QElectroTech датотека елемента</comment>
|
||||
<comment xml:lang="sv">QElectroTech elementfil</comment>
|
||||
<comment xml:lang="tr">QElectroTech eleman dosyası</comment>
|
||||
<comment xml:lang="uk">Файл елемента QElectroTech</comment>
|
||||
<comment xml:lang="zh">QElectroTech 元件文件</comment>
|
||||
<glob pattern="*.elmt" />
|
||||
</mime-type>
|
||||
<mime-type type="application/x-qet-titleblock">
|
||||
@@ -54,10 +82,24 @@
|
||||
<comment xml:lang="fr">Modèle de cartouche QElectroTech</comment>
|
||||
<comment xml:lang="it">Modello di cartiglio per QElectroTech</comment>
|
||||
<comment xml:lang="ja">QElectroTech 表題欄テンプレート</comment>
|
||||
<comment xml:lang="ko">QElectroTech 표제란 템플릿 파일</comment>
|
||||
<comment xml:lang="nl">QElectroTech titel bloksjabloon</comment>
|
||||
<comment xml:lang="pl">Szablon tabliczki rysunkowej QElectroTech</comment>
|
||||
<comment xml:lang="pt">Modelo de moldura QElectroTech</comment>
|
||||
<comment xml:lang="ru">Файл шаблона основной надписи листа QElectroTech</comment>
|
||||
<comment xml:lang="hr">QElectroTech predložak zaglavlja datoteke</comment>
|
||||
<comment xml:lang="hu">QElectroTech fejlécsablon fájl</comment>
|
||||
<comment xml:lang="mn">QElectroTech гарчгийн блокын загварын файл</comment>
|
||||
<comment xml:lang="nb">QElectroTech tittelblokk malfil</comment>
|
||||
<comment xml:lang="pt_BR">Arquivo de modelo de cartuco QElectroTech</comment>
|
||||
<comment xml:lang="ro">Fișier șablon cartus QElectroTech</comment>
|
||||
<comment xml:lang="sk">Súbor šablóny titulkového bloku QElectroTech</comment>
|
||||
<comment xml:lang="sl">Datoteka predloge naslovnega bloka QElectroTech</comment>
|
||||
<comment xml:lang="sr">QElectroTech датотека шаблона заглавља</comment>
|
||||
<comment xml:lang="sv">QElectroTech titelblocksmall-fil</comment>
|
||||
<comment xml:lang="tr">QElectroTech başlık bloğu şablon dosyası</comment>
|
||||
<comment xml:lang="uk">Файл шаблону основного напису QElectroTech</comment>
|
||||
<comment xml:lang="zh">QElectroTech 标题栏模板文件</comment>
|
||||
<glob pattern="*.titleblock" />
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Based on raspberry pi 5 8 Gb bookworm
|
||||
#Based on raspberry pi 5 8 Gb Trixie
|
||||
#sudo apt install git ssh rsync libqt5svg5-dev qt5-qmake qtbase5-dev libkf5widgetsaddons-dev libkf5coreaddons-dev libsqlite3-dev pkgconf libqt5waylandclient5-dev libqt5waylandcompositor5-dev g++ make
|
||||
#mkdir -p AppImage/0.100.0/aarch64
|
||||
# Get GIT sources
|
||||
@@ -71,12 +71,12 @@ chmod +x AppDir/qelectrotech/AppRun
|
||||
# Get 64-bit ARM version of go-appimage appimagetool
|
||||
#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)
|
||||
#chmod +x appimagetool-*.AppImage
|
||||
VERSION=$tagName-r$HEAD ./appimagetool-8*.AppImage ./AppDir/qelectrotech/
|
||||
VERSION=$tagName-r$HEAD ./appimagetool-9*.AppImage ./AppDir/qelectrotech/
|
||||
|
||||
|
||||
chmod -x QElectroTech-*.AppImage
|
||||
shasum -a 256 QElectroTech-$tagName-r$HEAD-aarch64.AppImage > QElectroTech-$tagName-r$HEAD-aarch64.AppImage-SHA256.txt
|
||||
mv QElectroTech-$tagName-r$HEAD-aarch64.AppImage* ./AppImage/0.100.0/aarch64
|
||||
mv QElectroTech-$tagName-r$HEAD-aarch64.AppImage* ./AppImage/0.100.0/aarch64/trixie
|
||||
cd ..
|
||||
#rsync to server
|
||||
echo -e "\033[1;31mWould you like to RSYNC Appimage to server n/Y?.\033[m"
|
||||
|
||||
@@ -243,18 +243,18 @@ if [[ $a == "Y" || $a == "y" ]]; then
|
||||
cd $DEFAULT_DIR
|
||||
cp -r nsis_base nsis_base64$HEAD
|
||||
cd qelectrotech-$VERSION.r$HEAD/
|
||||
cp -r {elements,examples,titleblocks} /$DEFAULT_DIR/nsis_base64$HEAD/files
|
||||
cp -r {elements,examples,titleblocks,fonts} /$DEFAULT_DIR/nsis_base64$HEAD/files
|
||||
cp -r lang/*.qm /$DEFAULT_DIR/nsis_base64$HEAD/files/lang
|
||||
|
||||
cd $DEFAULT_DIR
|
||||
cd qelectrotech-$VERSION.r$HEAD/build-aux/windows/
|
||||
cp {lang_extra.nsh,QET64.nsi,lang_extra_fr.nsh} /$DEFAULT_DIR/nsis_base64$HEAD/
|
||||
cp {lang_extra.nsh,QET64.nsi,lang_extra_fr.nsh,lang_extra_missing.nsh} /$DEFAULT_DIR/nsis_base64$HEAD/
|
||||
|
||||
#copy and update folders of readytouse_base skeleton
|
||||
cd $DEFAULT_DIR
|
||||
cp -r readytouse_base qelectrotech-$VERSION+git$HEAD-x86-win64-readytouse
|
||||
cd qelectrotech-$VERSION.r$HEAD/
|
||||
cp -r {elements,examples,titleblocks} /$DEFAULT_DIR/qelectrotech-$VERSION+git$HEAD-x86-win64-readytouse
|
||||
cp -r {elements,examples,titleblocks,fonts} /$DEFAULT_DIR/qelectrotech-$VERSION+git$HEAD-x86-win64-readytouse
|
||||
cp -r lang/*.qm /$DEFAULT_DIR/qelectrotech-$VERSION+git$HEAD-x86-win64-readytouse/lang
|
||||
|
||||
export PATH=/home/laurent/digikam3333/project/bundles/mxe/build.win64/usr/bin:$PATH
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -119,8 +119,8 @@ int ElementCollectionItem::rowForInsertItem(const QString &name)
|
||||
return -1;
|
||||
|
||||
QList <ElementCollectionItem *> child;
|
||||
//The item to insert is an element we search from element child
|
||||
if (name.endsWith(".elmt"))
|
||||
//The item to insert is an element/template we search from element child
|
||||
if (name.endsWith(".elmt") || name.endsWith(".qetmak"))
|
||||
{
|
||||
child = elementsDirectChild();
|
||||
//There isn't element, we insert at last position
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -264,10 +264,12 @@ bool ElementsCollectionModel::dropMimeData(const QMimeData *data,
|
||||
@param projects : list of projects to load
|
||||
*/
|
||||
void ElementsCollectionModel::loadCollections(bool common_collection,
|
||||
bool company_collection,
|
||||
bool custom_collection,
|
||||
QList<QETProject *> projects)
|
||||
bool company_collection,
|
||||
bool custom_collection,
|
||||
QList<QETProject *> projects)
|
||||
{
|
||||
clear();
|
||||
|
||||
m_items_list_to_setUp.clear();
|
||||
|
||||
if (common_collection)
|
||||
@@ -280,36 +282,64 @@ void ElementsCollectionModel::loadCollections(bool common_collection,
|
||||
if (common_collection || company_collection || custom_collection)
|
||||
m_items_list_to_setUp.append(items());
|
||||
|
||||
|
||||
for (QETProject *project : projects)
|
||||
{
|
||||
addProject(project, false);
|
||||
m_items_list_to_setUp.append(projectItems(project));
|
||||
}
|
||||
|
||||
auto *watcher = new QFutureWatcher<void>();
|
||||
connect(watcher, &QFutureWatcher<void>::progressValueChanged,
|
||||
this, &ElementsCollectionModel::loadingProgressValueChanged);
|
||||
this, &ElementsCollectionModel::loadingProgressValueChanged);
|
||||
connect(watcher, &QFutureWatcher<void>::progressRangeChanged,
|
||||
this, &ElementsCollectionModel::loadingProgressRangeChanged);
|
||||
this, &ElementsCollectionModel::loadingProgressRangeChanged);
|
||||
connect(watcher, &QFutureWatcher<void>::finished,
|
||||
this, &ElementsCollectionModel::loadingFinished);
|
||||
connect(
|
||||
watcher,
|
||||
&QFutureWatcher<void>::finished,
|
||||
watcher,
|
||||
&QFutureWatcher<void>::deleteLater);
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
|
||||
this, &ElementsCollectionModel::loadingFinished);
|
||||
connect(watcher, &QFutureWatcher<void>::finished, watcher, &QFutureWatcher<void>::deleteLater);
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
m_future = QtConcurrent::map(m_items_list_to_setUp, setUpData);
|
||||
#else
|
||||
# if TODO_LIST
|
||||
# pragma message("@TODO remove code for QT 6 or later")
|
||||
# endif
|
||||
qDebug() << "Help code for QT 6 or later"
|
||||
<< "QtConcurrent::run its backwards now...function, object, args";
|
||||
#endif
|
||||
#else
|
||||
qDebug() << "Help code for QT 6 or later";
|
||||
#endif
|
||||
watcher->setFuture(m_future);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ElementsCollectionModel::loadMacrosCollection
|
||||
* Load the macros collection synchronously to avoid thread-collisions.
|
||||
*/
|
||||
void ElementsCollectionModel::loadMacrosCollection()
|
||||
{
|
||||
m_items_list_to_setUp.clear();
|
||||
addMacrosCollection(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ElementsCollectionModel::addMacrosCollection
|
||||
* Add the user macros collection to this model
|
||||
* @param set_data
|
||||
*/
|
||||
void ElementsCollectionModel::addMacrosCollection(bool set_data)
|
||||
{
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
qDebug() << "=== MAKRO PFAD CHECK ===" << macrosPath;
|
||||
if (macrosPath.endsWith("/")) {
|
||||
macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
}
|
||||
|
||||
FileElementCollectionItem *feci = new FileElementCollectionItem();
|
||||
if (feci->setRootPath(macrosPath,
|
||||
set_data,
|
||||
m_hide_element)) {
|
||||
invisibleRootItem()->appendRow(feci);
|
||||
if (set_data)
|
||||
feci->setUpData();
|
||||
}
|
||||
else
|
||||
delete feci;
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionModel::addCommonCollection
|
||||
Add the common elements collection to this model
|
||||
@@ -368,11 +398,11 @@ void ElementsCollectionModel::addCustomCollection(bool set_data)
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionModel::addLocation
|
||||
Add the element or directory to this model.
|
||||
If the location is already managed by this model, do nothing.
|
||||
@param location
|
||||
*/
|
||||
* @brief ElementsCollectionModel::addLocation
|
||||
* Add the element or directory to this model.
|
||||
* If the location is already managed by this model, do nothing.
|
||||
* @param location
|
||||
*/
|
||||
void ElementsCollectionModel::addLocation(const ElementsLocation& location)
|
||||
{
|
||||
QModelIndex index = indexFromLocation(location);
|
||||
@@ -387,14 +417,15 @@ void ElementsCollectionModel::addLocation(const ElementsLocation& location)
|
||||
|
||||
if (project) {
|
||||
XmlProjectElementCollectionItem *xpeci =
|
||||
m_project_hash.value(project);
|
||||
m_project_hash.value(project);
|
||||
|
||||
last_item = xpeci->lastItemForPath(
|
||||
location.collectionPath(false),
|
||||
collection_name);
|
||||
location.collectionPath(false),
|
||||
collection_name);
|
||||
}
|
||||
}
|
||||
else if (location.isCustomCollection()) {
|
||||
// ANPASSUNG: Makros und Custom Collection werden hier behandelt!
|
||||
else if (location.isCustomCollection() || location.isMacrosCollection()) {
|
||||
QList <ElementCollectionItem *> child_list;
|
||||
|
||||
for (int i=0 ; i<rowCount() ; i++)
|
||||
@@ -404,15 +435,18 @@ void ElementsCollectionModel::addLocation(const ElementsLocation& location)
|
||||
|
||||
if (eci->type() == FileElementCollectionItem::Type) {
|
||||
FileElementCollectionItem *feci =
|
||||
static_cast<FileElementCollectionItem *>(eci);
|
||||
static_cast<FileElementCollectionItem *>(eci);
|
||||
|
||||
// Wir prüfen explizit, ob es Custom ODER Macros ist, und weisen es richtig zu.
|
||||
if ((location.isCustomCollection() && feci->isCustomCollection()) ||
|
||||
(location.isMacrosCollection() && feci->isMacrosCollection())) {
|
||||
|
||||
if (feci->isCustomCollection()) {
|
||||
last_item = feci->lastItemForPath(
|
||||
location.collectionPath(false),
|
||||
collection_name);
|
||||
location.collectionPath(false),
|
||||
collection_name);
|
||||
if(last_item)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -574,14 +608,14 @@ void ElementsCollectionModel::hideElement()
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionModel::indexFromLocation
|
||||
Return the index who represent location.
|
||||
Index can be non valid
|
||||
@param location
|
||||
@return
|
||||
*/
|
||||
* @brief ElementsCollectionModel::indexFromLocation
|
||||
* Return the index who represent location.
|
||||
* Index can be non valid
|
||||
* @param location
|
||||
* @return
|
||||
*/
|
||||
QModelIndex ElementsCollectionModel::indexFromLocation(
|
||||
const ElementsLocation &location)
|
||||
const ElementsLocation &location)
|
||||
{
|
||||
QList <ElementCollectionItem *> child_list;
|
||||
|
||||
@@ -589,30 +623,34 @@ QModelIndex ElementsCollectionModel::indexFromLocation(
|
||||
child_list.append(static_cast<ElementCollectionItem *>(item(i)));
|
||||
}
|
||||
|
||||
foreach(ElementCollectionItem *eci, child_list) {
|
||||
foreach(ElementCollectionItem *eci, child_list) {
|
||||
|
||||
ElementCollectionItem *match_eci = nullptr;
|
||||
ElementCollectionItem *match_eci = nullptr;
|
||||
|
||||
if (eci->type() == FileElementCollectionItem::Type) {
|
||||
if (FileElementCollectionItem *feci = static_cast<FileElementCollectionItem *>(eci)) {
|
||||
if ( (location.isCommonCollection() && feci->isCommonCollection()) ||
|
||||
(location.isCompanyCollection() && feci->isCompanyCollection()) ||
|
||||
(location.isCustomCollection() && !feci->isCommonCollection()) ) {
|
||||
match_eci = feci->itemAtPath(location.collectionPath(false));
|
||||
if (eci->type() == FileElementCollectionItem::Type) {
|
||||
if (FileElementCollectionItem *feci = static_cast<FileElementCollectionItem *>(eci)) {
|
||||
|
||||
// ANPASSUNG: Makro-Prüfung hinzugefügt, damit das Modell den Pfad im Baum findet!
|
||||
if ( (location.isCommonCollection() && feci->isCommonCollection()) ||
|
||||
(location.isCompanyCollection() && feci->isCompanyCollection()) ||
|
||||
(location.isMacrosCollection() && feci->isMacrosCollection()) ||
|
||||
(location.isCustomCollection() && feci->isCustomCollection()) ) {
|
||||
|
||||
match_eci = feci->itemAtPath(location.collectionPath(false));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eci->type() == XmlProjectElementCollectionItem::Type) {
|
||||
if (XmlProjectElementCollectionItem *xpeci = static_cast<XmlProjectElementCollectionItem *>(eci)) {
|
||||
match_eci = xpeci->itemAtPath(location.collectionPath(false));
|
||||
}
|
||||
}
|
||||
else if (eci->type() == XmlProjectElementCollectionItem::Type) {
|
||||
if (XmlProjectElementCollectionItem *xpeci = static_cast<XmlProjectElementCollectionItem *>(eci)) {
|
||||
match_eci = xpeci->itemAtPath(location.collectionPath(false));
|
||||
}
|
||||
|
||||
if (match_eci)
|
||||
return indexFromItem(match_eci);
|
||||
}
|
||||
|
||||
return QModelIndex();
|
||||
if (match_eci)
|
||||
return indexFromItem(match_eci);
|
||||
}
|
||||
|
||||
return QModelIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -47,6 +47,8 @@ class ElementsCollectionModel : public QStandardItemModel
|
||||
void addCommonCollection(bool set_data = true);
|
||||
void addCompanyCollection(bool set_data = true);
|
||||
void addCustomCollection(bool set_data = true);
|
||||
void addMacrosCollection(bool set_data = true);
|
||||
void loadMacrosCollection();
|
||||
void addLocation(const ElementsLocation& location);
|
||||
|
||||
void addProject(QETProject *project, bool set_data = true);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -93,10 +93,7 @@ void ElementsCollectionWidget::addProject(QETProject *project)
|
||||
{
|
||||
if (m_model)
|
||||
{
|
||||
m_progress_bar->show();
|
||||
m_tree_view->setDisabled(true);
|
||||
QList <QETProject *> prj; prj.append(project);
|
||||
m_model->loadCollections(false, false, false, prj);
|
||||
m_model->addProject(project, true);
|
||||
}
|
||||
else {
|
||||
m_waiting_project.append(project);
|
||||
@@ -176,16 +173,14 @@ void ElementsCollectionWidget::setUpAction()
|
||||
*/
|
||||
void ElementsCollectionWidget::setUpWidget()
|
||||
{
|
||||
//Setup the main layout
|
||||
m_main_vlayout = new QVBoxLayout(this);
|
||||
this->setLayout(m_main_vlayout);
|
||||
m_main_vlayout->setContentsMargins(0, 0, 0, 0);
|
||||
m_main_vlayout->setSpacing(2);
|
||||
|
||||
m_search_field = new QLineEdit(this);
|
||||
m_search_field->setPlaceholderText(tr("Rechercher"));
|
||||
m_search_field->setPlaceholderText(tr("Rechercher..."));
|
||||
m_search_field->setClearButtonEnabled(true);
|
||||
m_main_vlayout->addWidget(m_search_field);
|
||||
|
||||
//Setup the tree view
|
||||
m_tree_view = new ElementsTreeView(this);
|
||||
m_tree_view->setHeaderHidden(true);
|
||||
m_tree_view->setIconSize(QSize(50, 50));
|
||||
@@ -195,12 +190,29 @@ void ElementsCollectionWidget::setUpWidget()
|
||||
m_tree_view->setAnimated(true);
|
||||
m_tree_view->setMouseTracking(true);
|
||||
m_tree_view->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
|
||||
m_main_vlayout->addWidget(m_tree_view);
|
||||
|
||||
//Setup the progress bar
|
||||
//Setup the macros tree view
|
||||
m_macros_tree_view = new ElementsTreeView(this);
|
||||
m_macros_tree_view->setHeaderHidden(true);
|
||||
m_macros_tree_view->setIconSize(QSize(50, 50));
|
||||
m_macros_tree_view->setDragDropMode(QAbstractItemView::DragDrop);
|
||||
m_macros_tree_view->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
m_macros_tree_view->setAutoExpandDelay(500);
|
||||
m_macros_tree_view->setAnimated(true);
|
||||
m_macros_tree_view->setMouseTracking(true);
|
||||
m_macros_tree_view->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
|
||||
|
||||
m_tab_widget = new QTabWidget(this);
|
||||
m_tab_widget->setDocumentMode(true);
|
||||
m_tab_widget->setTabPosition(QTabWidget::North);
|
||||
m_tab_widget->addTab(m_tree_view, tr("Collections"));
|
||||
m_tab_widget->addTab(m_macros_tree_view, tr("Modèles"));
|
||||
|
||||
m_main_vlayout->addWidget(m_search_field);
|
||||
m_main_vlayout->addWidget(m_tab_widget);
|
||||
|
||||
m_progress_bar = new QProgressBar(this);
|
||||
m_progress_bar->setFormat(QObject::tr("chargement %p% (%v sur %m)"));
|
||||
|
||||
m_main_vlayout->addWidget(m_progress_bar);
|
||||
m_progress_bar->hide();
|
||||
|
||||
@@ -243,11 +255,15 @@ void ElementsCollectionWidget::setUpConnection()
|
||||
this, &ElementsCollectionWidget::dirProperties);
|
||||
|
||||
connect(m_tree_view, &QTreeView::doubleClicked,
|
||||
[this](const QModelIndex &index)
|
||||
{
|
||||
this->m_index_at_context_menu = index ;
|
||||
this->editElement();
|
||||
});
|
||||
[this](const QModelIndex &index)
|
||||
{
|
||||
this->m_index_at_context_menu = index ;
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(index);
|
||||
if (eci && eci->collectionPath().endsWith(".qetmak")) {
|
||||
return; // Do nothing on double click for macros
|
||||
}
|
||||
this->editElement();
|
||||
});
|
||||
|
||||
connect(m_tree_view, &QTreeView::entered,
|
||||
[this] (const QModelIndex &index) {
|
||||
@@ -256,37 +272,64 @@ void ElementsCollectionWidget::setUpConnection()
|
||||
if (qde && eci)
|
||||
qde->statusBar()->showMessage(eci->localName());
|
||||
});
|
||||
|
||||
connect(m_macros_tree_view, &QTreeView::customContextMenuRequested,
|
||||
this, &ElementsCollectionWidget::customContextMenu);
|
||||
|
||||
connect(m_macros_tree_view, &QTreeView::doubleClicked,
|
||||
[this](const QModelIndex &index)
|
||||
{
|
||||
this->m_index_at_context_menu = index ;
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(index);
|
||||
if (eci && eci->collectionPath().endsWith(".qetmak")) {
|
||||
return; // Do nothing on double click for macros
|
||||
}
|
||||
this->editElement();
|
||||
});
|
||||
|
||||
connect(m_macros_tree_view, &QTreeView::entered,
|
||||
[this] (const QModelIndex &index) {
|
||||
QETDiagramEditor *qde = QETApp::diagramEditorAncestorOf(this);
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(index);
|
||||
if (qde && eci)
|
||||
qde->statusBar()->showMessage(eci->localName());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionWidget::customContextMenu
|
||||
Display the context menu of this widget at point
|
||||
@param point
|
||||
*/
|
||||
* @brief ElementsCollectionWidget::customContextMenu
|
||||
* Display the context menu of this widget at point
|
||||
* @param point
|
||||
*/
|
||||
void ElementsCollectionWidget::customContextMenu(const QPoint &point)
|
||||
{
|
||||
m_index_at_context_menu = m_tree_view->indexAt(point);
|
||||
QTreeView *clicked_tree = qobject_cast<QTreeView *>(sender());
|
||||
if (!clicked_tree) clicked_tree = m_tree_view; // Fallback
|
||||
|
||||
m_index_at_context_menu = clicked_tree->indexAt(point);
|
||||
if (!m_index_at_context_menu.isValid()) return;
|
||||
|
||||
m_context_menu->clear();
|
||||
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(
|
||||
m_index_at_context_menu);
|
||||
m_index_at_context_menu);
|
||||
bool add_open_dir = false;
|
||||
|
||||
if (eci->isElement())
|
||||
if (eci->isElement() && !eci->collectionPath().endsWith(".qetmak"))
|
||||
m_context_menu->addAction(m_edit_element);
|
||||
|
||||
if (eci->type() == FileElementCollectionItem::Type)
|
||||
{
|
||||
add_open_dir = true;
|
||||
FileElementCollectionItem *feci =
|
||||
static_cast<FileElementCollectionItem*>(eci);
|
||||
static_cast<FileElementCollectionItem*>(eci);
|
||||
if (!feci->isCommonCollection())
|
||||
{
|
||||
if (feci->isDir())
|
||||
{
|
||||
m_context_menu->addAction(m_new_element);
|
||||
if (!feci->isMacrosCollection()) {
|
||||
m_context_menu->addAction(m_new_element);
|
||||
}
|
||||
m_context_menu->addAction(m_new_directory);
|
||||
if (!feci->isCollectionRoot())
|
||||
{
|
||||
@@ -301,7 +344,7 @@ void ElementsCollectionWidget::customContextMenu(const QPoint &point)
|
||||
if (eci->type() == XmlProjectElementCollectionItem::Type)
|
||||
{
|
||||
XmlProjectElementCollectionItem *xpeci =
|
||||
static_cast<XmlProjectElementCollectionItem *>(eci);
|
||||
static_cast<XmlProjectElementCollectionItem *>(eci);
|
||||
if (xpeci->isCollectionRoot())
|
||||
add_open_dir = true;
|
||||
}
|
||||
@@ -320,7 +363,7 @@ void ElementsCollectionWidget::customContextMenu(const QPoint &point)
|
||||
m_context_menu->addAction(m_open_dir);
|
||||
m_context_menu->addAction(m_reload);
|
||||
|
||||
m_context_menu->popup(mapToGlobal(m_tree_view->mapToParent(point)));
|
||||
m_context_menu->popup(mapToGlobal(clicked_tree->mapToParent(point)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -360,6 +403,9 @@ void ElementsCollectionWidget::editElement()
|
||||
|
||||
if ( !(eci && eci->isElement()) ) return;
|
||||
|
||||
// Prevent the element editor from opening for macros
|
||||
if (eci->collectionPath().endsWith(".qetmak")) return;
|
||||
|
||||
ElementsLocation location(eci->collectionPath());
|
||||
|
||||
QETApp *app = QETApp::instance();
|
||||
@@ -384,11 +430,15 @@ void ElementsCollectionWidget::deleteElement()
|
||||
if (!eci) return;
|
||||
|
||||
ElementsLocation loc(eci->collectionPath());
|
||||
if (! (loc.isElement()
|
||||
&& loc.exist()
|
||||
&& loc.isFileSystem()
|
||||
&& (loc.collectionPath().startsWith("company://")
|
||||
|| loc.collectionPath().startsWith("custom://"))) ) return;
|
||||
|
||||
bool isDeletableFile = loc.isElement() || eci->collectionPath().endsWith(".qetmak");
|
||||
|
||||
if (! (isDeletableFile
|
||||
&& loc.exist()
|
||||
&& loc.isFileSystem()
|
||||
&& (loc.collectionPath().startsWith("company://")
|
||||
|| loc.collectionPath().startsWith("custom://")
|
||||
|| loc.collectionPath().startsWith("macros://"))) ) return;
|
||||
|
||||
if (QET::QetMessageBox::question(
|
||||
this,
|
||||
@@ -400,9 +450,10 @@ void ElementsCollectionWidget::deleteElement()
|
||||
QFile file(loc.fileSystemPath());
|
||||
if (file.remove())
|
||||
{
|
||||
m_model->removeRows(m_index_at_context_menu.row(),
|
||||
1,
|
||||
m_index_at_context_menu.parent());
|
||||
QAbstractItemModel *clicked_model = const_cast<QAbstractItemModel*>(m_index_at_context_menu.model());
|
||||
if (clicked_model) {
|
||||
clicked_model->removeRows(m_index_at_context_menu.row(), 1, m_index_at_context_menu.parent());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -429,10 +480,11 @@ void ElementsCollectionWidget::deleteDirectory()
|
||||
|
||||
ElementsLocation loc (eci->collectionPath());
|
||||
if (! (loc.isDirectory()
|
||||
&& loc.exist()
|
||||
&& loc.isFileSystem()
|
||||
&& (loc.collectionPath().startsWith("company://")
|
||||
|| loc.collectionPath().startsWith("custom://"))) ) return;
|
||||
&& loc.exist()
|
||||
&& loc.isFileSystem()
|
||||
&& (loc.collectionPath().startsWith("company://")
|
||||
|| loc.collectionPath().startsWith("custom://")
|
||||
|| loc.collectionPath().startsWith("macros://"))) ) return;
|
||||
|
||||
if (QET::QetMessageBox::question(
|
||||
this,
|
||||
@@ -445,9 +497,10 @@ void ElementsCollectionWidget::deleteDirectory()
|
||||
QDir dir (loc.fileSystemPath());
|
||||
if (dir.removeRecursively())
|
||||
{
|
||||
m_model->removeRows(m_index_at_context_menu.row(),
|
||||
1,
|
||||
m_index_at_context_menu.parent());
|
||||
QAbstractItemModel *clicked_model = const_cast<QAbstractItemModel*>(m_index_at_context_menu.model());
|
||||
if (clicked_model) {
|
||||
clicked_model->removeRows(m_index_at_context_menu.row(), 1, m_index_at_context_menu.parent());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -489,19 +542,29 @@ void ElementsCollectionWidget::editDirectory()
|
||||
*/
|
||||
void ElementsCollectionWidget::newDirectory()
|
||||
{
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(
|
||||
m_index_at_context_menu);
|
||||
ElementCollectionItem *eci = elementCollectionItemForIndex(m_index_at_context_menu);
|
||||
|
||||
if (eci->type() != FileElementCollectionItem::Type) return;
|
||||
if (!eci || eci->type() != FileElementCollectionItem::Type) return;
|
||||
|
||||
FileElementCollectionItem *feci =
|
||||
static_cast<FileElementCollectionItem*>(eci);
|
||||
FileElementCollectionItem *feci = static_cast<FileElementCollectionItem*>(eci);
|
||||
if(feci->isCommonCollection()) return;
|
||||
|
||||
ElementsLocation location(feci->collectionPath());
|
||||
ElementsCategoryEditor new_dir_editor(location, false, this);
|
||||
if (new_dir_editor.exec() == QDialog::Accepted)
|
||||
m_model->addLocation(new_dir_editor.createdLocation());
|
||||
|
||||
if (new_dir_editor.exec() == QDialog::Accepted) {
|
||||
ElementsLocation new_loc = new_dir_editor.createdLocation();
|
||||
|
||||
if (new_loc.isMacrosCollection()) {
|
||||
if (m_macros_model) {
|
||||
m_macros_model->addLocation(new_loc);
|
||||
}
|
||||
} else {
|
||||
if (m_model) {
|
||||
m_model->addLocation(new_loc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -662,12 +725,19 @@ void ElementsCollectionWidget::reload()
|
||||
&ElementsCollectionWidget::loadingFinished);
|
||||
|
||||
m_new_model->loadCollections(true, true, true, project_list);
|
||||
|
||||
if (m_macros_model) {
|
||||
m_macros_model->deleteLater();
|
||||
}
|
||||
m_macros_model = new ElementsCollectionModel(m_macros_tree_view);
|
||||
m_macros_tree_view->setModel(m_macros_model);
|
||||
m_macros_model->loadMacrosCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionWidget::loadingFinished
|
||||
Process when collection finished to be loaded
|
||||
*/
|
||||
* @brief ElementsCollectionWidget::loadingFinished
|
||||
* Process when collection finished to be loaded
|
||||
*/
|
||||
void ElementsCollectionWidget::loadingFinished()
|
||||
{
|
||||
if (m_new_model)
|
||||
@@ -842,15 +912,21 @@ void ElementsCollectionWidget::showAndExpandItem(const QModelIndex &index,
|
||||
}
|
||||
|
||||
/**
|
||||
@brief ElementsCollectionWidget::elementCollectionItemForIndex
|
||||
@param index
|
||||
@return The internal pointer of index casted to ElementCollectionItem;
|
||||
*/
|
||||
ElementCollectionItem *ElementsCollectionWidget::elementCollectionItemForIndex(
|
||||
const QModelIndex &index) {
|
||||
if (!index.isValid())
|
||||
return nullptr;
|
||||
* @brief ElementsCollectionWidget::elementCollectionItemForIndex
|
||||
* @param index
|
||||
* @return The internal pointer of index casted to ElementCollectionItem;
|
||||
*/
|
||||
ElementCollectionItem *ElementsCollectionWidget::elementCollectionItemForIndex(const QModelIndex &index)
|
||||
{
|
||||
if (!index.isValid()) return nullptr;
|
||||
|
||||
return static_cast<ElementCollectionItem*>(
|
||||
m_model->itemFromIndex(index));
|
||||
if (m_macros_model && index.model() == m_macros_model) {
|
||||
return static_cast<ElementCollectionItem *>(m_macros_model->itemFromIndex(index));
|
||||
}
|
||||
|
||||
if (m_model && index.model() == m_model) {
|
||||
return static_cast<ElementCollectionItem *>(m_model->itemFromIndex(index));
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <QTimer>
|
||||
#include <QElapsedTimer>
|
||||
#include <QScopedPointer>
|
||||
#include <QTabWidget>
|
||||
#include <QTreeView>
|
||||
|
||||
class ElementsCollectionModel;
|
||||
class QVBoxLayout;
|
||||
@@ -90,9 +92,12 @@ class ElementsCollectionWidget : public QWidget
|
||||
private:
|
||||
ElementsCollectionModel *m_model = nullptr;
|
||||
ElementsCollectionModel *m_new_model = nullptr;
|
||||
ElementsCollectionModel *m_macros_model = nullptr;
|
||||
QLineEdit *m_search_field;
|
||||
QTimer m_search_timer;
|
||||
ElementsTreeView *m_tree_view;
|
||||
ElementsTreeView *m_macros_tree_view = nullptr;
|
||||
QTabWidget *m_tab_widget = nullptr;
|
||||
QVBoxLayout *m_main_vlayout;
|
||||
QMenu *m_context_menu;
|
||||
QModelIndex m_index_at_context_menu;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -181,7 +181,7 @@ QString ElementsLocation::collectionPath(bool protocol) const
|
||||
else
|
||||
{
|
||||
QString path = m_collection_path;
|
||||
return path.remove(QRegularExpression("common://|company://|custom://|embed://"));
|
||||
return path.remove(QRegularExpression("common://|company://|custom://|macros://|embed://"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,54 +232,34 @@ QString ElementsLocation::path() const
|
||||
(start by common://, company://, custom:// or embed://) or not.
|
||||
@param path
|
||||
*/
|
||||
|
||||
void ElementsLocation::setPath(const QString &path)
|
||||
{
|
||||
QString tmp_path = path;
|
||||
#ifdef Q_OS_WIN32
|
||||
//On windows, we convert backslash to slash
|
||||
#ifdef Q_OS_WIN32
|
||||
tmp_path = QDir::fromNativeSeparators(path);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
//There is a project, the path is for an embedded coolection.
|
||||
if (m_project)
|
||||
{
|
||||
m_collection_path = path;
|
||||
//Add the protocol to the collection path
|
||||
if (!path.startsWith("embed://"))
|
||||
m_collection_path.prepend("embed://");
|
||||
|
||||
}
|
||||
|
||||
//The path start with project, we get the project and the path from the string
|
||||
else if (tmp_path.startsWith("project"))
|
||||
{
|
||||
QRegularExpression re
|
||||
("^project(?<project_id>[0-9])\\+(?<collection_path>embed://*.*)$");
|
||||
if (!re.isValid())
|
||||
{
|
||||
qWarning() <<QObject::tr("this is an error in the code")
|
||||
<< re.errorString()
|
||||
<< re.patternErrorOffset();
|
||||
return;
|
||||
}
|
||||
QRegularExpression re ("^project(?<project_id>[0-9])\\+(?<collection_path>embed://*.*)$");
|
||||
if (!re.isValid()) return;
|
||||
QRegularExpressionMatch match = re.match(tmp_path);
|
||||
if (!match.hasMatch())
|
||||
{
|
||||
qDebug()<<"no Match => return"
|
||||
<<tmp_path;
|
||||
return;
|
||||
}
|
||||
if (!match.hasMatch()) return;
|
||||
|
||||
bool conv_ok;
|
||||
uint project_id = match.captured("project_id").toUInt(&conv_ok);
|
||||
if (!conv_ok)
|
||||
{
|
||||
qWarning()<<"toUint failed"
|
||||
<<match.captured("project_id")
|
||||
<<re
|
||||
<<tmp_path;
|
||||
return;
|
||||
}
|
||||
if (!conv_ok) return;
|
||||
|
||||
QETProject *project = QETApp::project(project_id);
|
||||
if (project)
|
||||
{
|
||||
@@ -287,10 +267,7 @@ void ElementsLocation::setPath(const QString &path)
|
||||
m_project = project;
|
||||
}
|
||||
}
|
||||
|
||||
// The path is in file system,
|
||||
// the given path is relative to common or custom collection
|
||||
else if (path.startsWith("common://") || path.startsWith("company://") || path.startsWith("custom://"))
|
||||
else if (path.startsWith("common://") || path.startsWith("company://") || path.startsWith("custom://") || path.startsWith("macros://"))
|
||||
{
|
||||
QString p;
|
||||
if (path.startsWith("common://"))
|
||||
@@ -303,6 +280,11 @@ void ElementsLocation::setPath(const QString &path)
|
||||
tmp_path.remove("company://");
|
||||
p = QETApp::companyElementsDirN() % "/" % tmp_path;
|
||||
}
|
||||
else if (path.startsWith("macros://"))
|
||||
{
|
||||
tmp_path.remove("macros://");
|
||||
p = macrosPath % "/" % tmp_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_path.remove("custom://");
|
||||
@@ -312,11 +294,10 @@ void ElementsLocation::setPath(const QString &path)
|
||||
m_file_system_path = p;
|
||||
m_collection_path = path;
|
||||
}
|
||||
//In this case, the path is supposed to be relative to the file system.
|
||||
else
|
||||
{
|
||||
QString path_ = path;
|
||||
if(path_.endsWith(".elmt"))
|
||||
if(path_.endsWith(".elmt") || path_.endsWith(".qetmak"))
|
||||
{
|
||||
m_file_system_path = path_;
|
||||
if (path_.startsWith(QETApp::commonElementsDirN()))
|
||||
@@ -331,6 +312,13 @@ void ElementsLocation::setPath(const QString &path)
|
||||
path_.prepend("company://");
|
||||
m_collection_path = path_;
|
||||
}
|
||||
else if (path_.startsWith(macrosPath))
|
||||
{
|
||||
QString matchPath = macrosPath + "/";
|
||||
path_.remove(matchPath);
|
||||
path_.prepend("macros://");
|
||||
m_collection_path = path_;
|
||||
}
|
||||
else if (path_.startsWith(QETApp::customElementsDirN()))
|
||||
{
|
||||
path_.remove(QETApp::customElementsDirN()+="/");
|
||||
@@ -353,6 +341,13 @@ void ElementsLocation::setPath(const QString &path)
|
||||
path_.prepend("company://");
|
||||
m_collection_path = path_;
|
||||
}
|
||||
else if (path_.startsWith(macrosPath))
|
||||
{
|
||||
QString matchPath = macrosPath + "/";
|
||||
path_.remove(matchPath);
|
||||
path_.prepend("macros://");
|
||||
m_collection_path = path_;
|
||||
}
|
||||
else if (path_.startsWith(QETApp::customElementsDirN()))
|
||||
{
|
||||
path_.remove(QETApp::customElementsDirN()+="/");
|
||||
@@ -371,10 +366,11 @@ void ElementsLocation::setPath(const QString &path)
|
||||
*/
|
||||
bool ElementsLocation::addToPath(const QString &string)
|
||||
{
|
||||
if (m_collection_path.endsWith(".elmt", Qt::CaseInsensitive))
|
||||
if (m_collection_path.endsWith(".elmt", Qt::CaseInsensitive) ||
|
||||
m_collection_path.endsWith(".qetmak", Qt::CaseInsensitive))
|
||||
{
|
||||
qDebug() << "ElementsLocation::addToPath :"
|
||||
" Can't add string to the path of an element";
|
||||
" Can't add string to the path of an element or template";
|
||||
return(false);
|
||||
}
|
||||
|
||||
@@ -477,7 +473,7 @@ QString ElementsLocation::toString() const
|
||||
*/
|
||||
bool ElementsLocation::isElement() const
|
||||
{
|
||||
return m_collection_path.endsWith(".elmt");
|
||||
return m_collection_path.endsWith(".elmt") || m_collection_path.endsWith(".qetmak");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -942,3 +938,14 @@ QDebug operator<< (QDebug debug, const ElementsLocation &location)
|
||||
|
||||
return debug;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ElementsLocation::isMacrosCollection
|
||||
* @return True if this location represent an item from the macros collection
|
||||
*/
|
||||
bool ElementsLocation::isMacrosCollection() const
|
||||
{
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
return fileSystemPath().startsWith(macrosPath);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -78,6 +78,7 @@ class ElementsLocation
|
||||
bool isCommonCollection() const;
|
||||
bool isCompanyCollection() const;
|
||||
bool isCustomCollection() const;
|
||||
bool isMacrosCollection() const;
|
||||
bool isProject() const;
|
||||
bool exist() const;
|
||||
bool isWritable() const;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -22,7 +22,12 @@
|
||||
#include "../qeticons.h"
|
||||
#include "elementcollectionitem.h"
|
||||
#include "elementslocation.h"
|
||||
|
||||
#include "../qetproject.h"
|
||||
#include "../diagram.h"
|
||||
#include "xmlelementcollection.h"
|
||||
#include "../NameList/nameslist.h"
|
||||
#include <QPainter>
|
||||
#include <QScopedPointer>
|
||||
#include <QDrag>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
@@ -95,9 +100,107 @@ void ElementsTreeView::startElementDrag(const ElementsLocation &location)
|
||||
if (location.isDirectory())
|
||||
{
|
||||
mime_data->setData("application/x-qet-category-uri",
|
||||
location_str.toLatin1());
|
||||
location_str.toLatin1());
|
||||
drag->setPixmap(QET::Icons::Folder.pixmap(22, 22));
|
||||
}
|
||||
else if (location.fileName().endsWith(".qetmak"))
|
||||
{
|
||||
mime_data->setData("application/x-qet-element-uri", location_str.toLatin1());
|
||||
|
||||
QPixmap macro_pixmap;
|
||||
|
||||
// --- MINI-RENDERER FÜR DAS MAKRO-VORSCHAUBILD ---
|
||||
QFile file(location.fileSystemPath());
|
||||
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QDomDocument macro_doc;
|
||||
if (macro_doc.setContent(&file)) {
|
||||
QDomElement root = macro_doc.documentElement();
|
||||
if (root.tagName() == "qet_macro") {
|
||||
|
||||
// 1. Unsichtbares Dummy-Projekt erstellen
|
||||
QScopedPointer<QETProject> dummy_project(new QETProject());
|
||||
|
||||
// 2. Bauteile in das Dummy-Projekt laden (wie beim echten Drop)
|
||||
QDomElement collection_node = root.firstChildElement("collection");
|
||||
if (!collection_node.isNull()) {
|
||||
QDomNodeList elements = collection_node.elementsByTagName("element");
|
||||
for (int i = 0; i < elements.count(); ++i) {
|
||||
QDomElement elmt_node = elements.at(i).toElement();
|
||||
QString path = elmt_node.attribute("path");
|
||||
QDomElement definition = elmt_node.firstChildElement("definition");
|
||||
if (!path.isEmpty() && !definition.isNull()) {
|
||||
int last_slash = path.lastIndexOf('/');
|
||||
QString dir_path = (last_slash != -1) ? path.left(last_slash) : "";
|
||||
QString file_name = (last_slash != -1) ? path.mid(last_slash + 1) : path;
|
||||
|
||||
if (!dir_path.isEmpty()) {
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
||||
QStringList parts = dir_path.split('/', QString::SkipEmptyParts);
|
||||
#else
|
||||
QStringList parts = dir_path.split('/', Qt::SkipEmptyParts);
|
||||
#endif
|
||||
QString current_path = "";
|
||||
for (const QString &part : parts) {
|
||||
QString parent_path = current_path;
|
||||
if (!current_path.isEmpty()) current_path += "/";
|
||||
current_path += part;
|
||||
if (current_path == "import") continue;
|
||||
NamesList empty_names;
|
||||
dummy_project->embeddedElementCollection()->createDir(parent_path, part, empty_names);
|
||||
}
|
||||
}
|
||||
dummy_project->embeddedElementCollection()->addElementDefinition(dir_path, file_name, definition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Diagram *dummy_diagram = dummy_project->addNewDiagram();
|
||||
|
||||
// 4. Makro auf dem unsichtbaren Blatt zeichnen
|
||||
QDomElement diagram_content_node = root.firstChildElement("diagram_content");
|
||||
QDomElement diagram_node = diagram_content_node.firstChildElement("diagram");
|
||||
if (!diagram_node.isNull()) {
|
||||
QDomNodeList instances = diagram_node.elementsByTagName("element");
|
||||
for (int i = 0; i < instances.count(); ++i) {
|
||||
QDomElement inst = instances.at(i).toElement();
|
||||
QString type = inst.attribute("type");
|
||||
if (type.startsWith("macro://")) {
|
||||
inst.setAttribute("type", type.replace("macro://", "embed://"));
|
||||
}
|
||||
}
|
||||
|
||||
dummy_diagram->fromXml(diagram_node, QPointF(0, 0), false, nullptr);
|
||||
dummy_diagram->clearSelection();
|
||||
|
||||
// 5. "Screenshot" (Pixmap) von den gezeichneten Elementen machen
|
||||
QRectF scene_rect = dummy_diagram->itemsBoundingRect();
|
||||
if (!scene_rect.isEmpty()) {
|
||||
scene_rect.adjust(-5, -5, 5, 5); // Kleiner Rand
|
||||
macro_pixmap = QPixmap(scene_rect.size().toSize());
|
||||
macro_pixmap.fill(Qt::transparent); // Transparenter Hintergrund
|
||||
|
||||
QPainter painter(¯o_pixmap);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
dummy_diagram->render(&painter, macro_pixmap.rect(), scene_rect);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (macro_pixmap.isNull()) {
|
||||
macro_pixmap = QET::Icons::Project.pixmap(32, 32);
|
||||
}
|
||||
|
||||
// Bild verkleinern, falls das Makro gigantisch groß ist
|
||||
if (macro_pixmap.width() > MAX_DND_PIXMAP_WIDTH || macro_pixmap.height() > MAX_DND_PIXMAP_HEIGHT) {
|
||||
macro_pixmap = macro_pixmap.scaled(MAX_DND_PIXMAP_WIDTH, MAX_DND_PIXMAP_HEIGHT, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
}
|
||||
|
||||
drag->setPixmap(macro_pixmap);
|
||||
// Bild zentriert an die Maus hängen
|
||||
drag->setHotSpot(QPoint(macro_pixmap.width() / 2, macro_pixmap.height() / 2));
|
||||
}
|
||||
else if (location.isElement())
|
||||
{
|
||||
mime_data->setData("application/x-qet-element-uri",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -93,7 +93,7 @@ QString FileElementCollectionItem::dirPath() const
|
||||
*/
|
||||
bool FileElementCollectionItem::isDir() const
|
||||
{
|
||||
if (m_path.endsWith(".elmt"))
|
||||
if (m_path.endsWith(".elmt") || m_path.endsWith(".qetmak"))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
@@ -110,9 +110,9 @@ bool FileElementCollectionItem::isElement() const
|
||||
}
|
||||
|
||||
/**
|
||||
@brief FileElementCollectionItem::localName
|
||||
@return the located name of this item
|
||||
*/
|
||||
* @brief FileElementCollectionItem::localName
|
||||
* @return the located name of this item
|
||||
*/
|
||||
QString FileElementCollectionItem::localName()
|
||||
{
|
||||
if (!text().isNull())
|
||||
@@ -120,12 +120,17 @@ QString FileElementCollectionItem::localName()
|
||||
|
||||
else if (isDir()) {
|
||||
if (isCollectionRoot()) {
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
if (m_path == QETApp::commonElementsDirN())
|
||||
setText(QObject::tr("Collection QET"));
|
||||
else if (m_path == QETApp::companyElementsDirN())
|
||||
setText(QObject::tr("Collection Company"));
|
||||
else if (m_path == QETApp::customElementsDirN())
|
||||
setText(QObject::tr("Collection utilisateur"));
|
||||
else if (m_path == macrosPath)
|
||||
setText(QObject::tr("Makros"));
|
||||
else
|
||||
setText(QObject::tr("Collection inconnue"));
|
||||
}
|
||||
@@ -136,7 +141,7 @@ QString FileElementCollectionItem::localName()
|
||||
if(docu.load_file(str.toStdString().c_str()))
|
||||
{
|
||||
if (QString(docu.document_element().name())
|
||||
== "qet-directory")
|
||||
== "qet-directory")
|
||||
{
|
||||
NamesList nl;
|
||||
nl.fromXml(docu.document_element());
|
||||
@@ -147,7 +152,11 @@ QString FileElementCollectionItem::localName()
|
||||
}
|
||||
else if (isElement()) {
|
||||
ElementsLocation loc(collectionPath());
|
||||
setText(loc.name());
|
||||
QString display_name = loc.name();
|
||||
if (display_name.endsWith(".qetmak")) {
|
||||
display_name.remove(".qetmak");
|
||||
}
|
||||
setText(display_name);
|
||||
}
|
||||
|
||||
return text();
|
||||
@@ -169,7 +178,11 @@ QString FileElementCollectionItem::localName(const ElementsLocation &location)
|
||||
localName();
|
||||
}
|
||||
else if (isElement()) {
|
||||
setText(location.name());
|
||||
QString display_name = location.name();
|
||||
if (display_name.endsWith(".qetmak")) {
|
||||
display_name.remove(".qetmak");
|
||||
}
|
||||
setText(display_name);
|
||||
}
|
||||
|
||||
return text();
|
||||
@@ -194,24 +207,29 @@ QString FileElementCollectionItem::name() const
|
||||
QString FileElementCollectionItem::collectionPath() const
|
||||
{
|
||||
if (isCollectionRoot()) {
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
if (m_path == QETApp::commonElementsDirN())
|
||||
return "common://";
|
||||
else if (m_path == QETApp::companyElementsDirN())
|
||||
return "company://";
|
||||
else
|
||||
return "custom://";
|
||||
else if (m_path == macrosPath)
|
||||
return "macros://"; //
|
||||
else
|
||||
return "custom://";
|
||||
}
|
||||
else if (parent() && parent()->type()
|
||||
== FileElementCollectionItem::Type) {
|
||||
== FileElementCollectionItem::Type) {
|
||||
ElementCollectionItem *eci =
|
||||
static_cast<ElementCollectionItem*>(parent());
|
||||
if (eci->isCollectionRoot())
|
||||
return eci->collectionPath() + m_path;
|
||||
static_cast<ElementCollectionItem*>(parent());
|
||||
if (eci->isCollectionRoot())
|
||||
return eci->collectionPath() + m_path;
|
||||
else
|
||||
return eci->collectionPath() % "/" % m_path;
|
||||
}
|
||||
else
|
||||
return QString();
|
||||
}
|
||||
else
|
||||
return QString();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -220,10 +238,14 @@ QString FileElementCollectionItem::collectionPath() const
|
||||
*/
|
||||
bool FileElementCollectionItem::isCollectionRoot() const
|
||||
{
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
if (m_path == QETApp::commonElementsDirN()
|
||||
|| m_path == QETApp::companyElementsDirN()
|
||||
|| m_path == QETApp::customElementsDirN())
|
||||
return true;
|
||||
|| m_path == QETApp::companyElementsDirN()
|
||||
|| m_path == QETApp::customElementsDirN()
|
||||
|| m_path == macrosPath)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
@@ -273,55 +295,63 @@ void FileElementCollectionItem::addChildAtPath(const QString &collection_name)
|
||||
}
|
||||
|
||||
/**
|
||||
@brief FileElementCollectionItem::setUpData
|
||||
SetUp the data of this item
|
||||
*/
|
||||
* @brief FileElementCollectionItem::setUpData
|
||||
* SetUp the data of this item
|
||||
*/
|
||||
void FileElementCollectionItem::setUpData()
|
||||
{
|
||||
if (isDir())
|
||||
{
|
||||
localName();
|
||||
setFlags(Qt::ItemIsSelectable
|
||||
| Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled
|
||||
| Qt::ItemIsEnabled);
|
||||
| Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled
|
||||
| Qt::ItemIsEnabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
setFlags(Qt::ItemIsSelectable
|
||||
| Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsEnabled);
|
||||
|
||||
//Set the local name and all informations of the element
|
||||
//in the data Qt::UserRole+1, these data will be use for search.
|
||||
ElementsLocation loc(collectionPath());
|
||||
DiagramContext context = loc.elementInformations();
|
||||
QStringList search_list;
|
||||
for (QString& key : context.keys())
|
||||
{ search_list.append(context.value(key).toString()); }
|
||||
search_list.append(localName(loc));
|
||||
setData(search_list.join(" "));
|
||||
| Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsEnabled);
|
||||
|
||||
if (m_path.endsWith(".qetmak")) {
|
||||
setData(localName());
|
||||
} else {
|
||||
// Parse standard element information for search
|
||||
ElementsLocation loc(collectionPath());
|
||||
DiagramContext context = loc.elementInformations();
|
||||
QStringList search_list;
|
||||
for (QString& key : context.keys())
|
||||
{ search_list.append(context.value(key).toString()); }
|
||||
search_list.append(localName(loc));
|
||||
setData(search_list.join(" "));
|
||||
}
|
||||
}
|
||||
|
||||
setToolTip(collectionPath());
|
||||
}
|
||||
|
||||
/**
|
||||
@brief FileElementCollectionItem::setUpIcon
|
||||
SetUp the icon of this item.
|
||||
Because icon use several memory,
|
||||
we use this method for setup icon instead setUpData.
|
||||
*/
|
||||
* @brief FileElementCollectionItem::setUpIcon
|
||||
* SetUp the icon of this item.
|
||||
* Because icon use several memory,
|
||||
* we use this method for setup icon instead setUpData.
|
||||
*/
|
||||
void FileElementCollectionItem::setUpIcon()
|
||||
{
|
||||
if (!icon().isNull())
|
||||
return;
|
||||
|
||||
if (isCollectionRoot()) {
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
if (m_path == QETApp::commonElementsDirN())
|
||||
setIcon(QIcon(":/ico/16x16/qet.png"));
|
||||
else if (m_path == QETApp::companyElementsDirN())
|
||||
setIcon(QIcon(":/ico/16x16/go-company.png"));
|
||||
else if (m_path == macrosPath)
|
||||
setIcon(QIcon(":/ico/16x16/go-home.png"));
|
||||
else
|
||||
setIcon(QIcon(":/ico/16x16/go-home.png"));
|
||||
}
|
||||
@@ -330,8 +360,12 @@ void FileElementCollectionItem::setUpIcon()
|
||||
if (isDir()) {
|
||||
setIcon(QET::Icons::Folder);
|
||||
} else {
|
||||
ElementsLocation loc(collectionPath());
|
||||
setIcon(loc.icon());
|
||||
if (m_path.endsWith(".qetmak")) {
|
||||
setIcon(QIcon());
|
||||
} else {
|
||||
ElementsLocation loc(collectionPath());
|
||||
setIcon(loc.icon());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -347,13 +381,13 @@ void FileElementCollectionItem::setUpIcon()
|
||||
@param hide_element
|
||||
*/
|
||||
void FileElementCollectionItem::setPathName(const QString& path_name,
|
||||
bool set_data,
|
||||
bool hide_element)
|
||||
bool set_data,
|
||||
bool hide_element)
|
||||
{
|
||||
m_path = path_name;
|
||||
|
||||
//This isn't an element, we create the childs
|
||||
if (!path_name.endsWith(".elmt"))
|
||||
//This isn't an element or template, we create the childs
|
||||
if (!path_name.endsWith(".elmt") && !path_name.endsWith(".qetmak"))
|
||||
populate(set_data, hide_element);
|
||||
}
|
||||
|
||||
@@ -382,9 +416,9 @@ void FileElementCollectionItem::populate(bool set_data, bool hide_element)
|
||||
return;
|
||||
|
||||
//Get all elmt file in this directory
|
||||
dir.setNameFilters(QStringList() << "*.elmt");
|
||||
dir.setNameFilters(QStringList() << "*.elmt" << "*.qetmak");
|
||||
for (auto& str :
|
||||
dir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name))
|
||||
dir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name))
|
||||
{
|
||||
FileElementCollectionItem *feci = new FileElementCollectionItem();
|
||||
appendRow(feci);
|
||||
@@ -393,3 +427,15 @@ void FileElementCollectionItem::populate(bool set_data, bool hide_element)
|
||||
feci->setUpData();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief FileElementCollectionItem::isMacrosCollection
|
||||
* @return True if this item represent the macros collection
|
||||
*/
|
||||
bool FileElementCollectionItem::isMacrosCollection() const
|
||||
{
|
||||
QString macrosPath = QETApp::userMacrosDir();
|
||||
if (macrosPath.endsWith("/")) macrosPath.remove(macrosPath.length() - 1, 1);
|
||||
|
||||
return fileSystemPath().startsWith(macrosPath);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
@@ -50,6 +50,7 @@ class FileElementCollectionItem : public ElementCollectionItem
|
||||
bool isCommonCollection() const;
|
||||
bool isCompanyCollection() const;
|
||||
bool isCustomCollection() const;
|
||||
bool isMacrosCollection() const;
|
||||
void addChildAtPath(const QString &collection_name) override;
|
||||
|
||||
void setUpData() override;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2006-2025 The QElectroTech Team
|
||||
Copyright 2006-2026 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user