From b143441f9cc45cda7b3d8ffddbb473b7210c0fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=9B=D1=83=D1=85?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Sun, 1 Sep 2024 10:57:03 +0300 Subject: [PATCH 1/3] Add canonical ignore rules from gitignore.io Toolkits: Qt IDEs: intellij+iml, visualstudiocode, qtcreator Build Systems: cmake OSes: linux, macos, windows --- .gitignore | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 261 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 0733bfc..5150452 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,160 @@ -# C++ objects and libs +# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig +# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,qtcreator,qt,macos,intellij+iml,cmake,linux,windows +# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,qtcreator,qt,macos,intellij+iml,cmake,linux,windows +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +### CMake Patch ### +# External projects +*-prefix/ + +### Intellij+iml ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+iml Patch ### +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Qt ### +# C++ objects and libs *.slo *.lo *.o @@ -7,11 +162,14 @@ *.la *.lai *.so +*.so.* *.dll *.dylib # Qt-es - +object_script.*.Release +object_script.*.Debug +*_plugin_import.cpp /.qmake.cache /.qmake.stash *.pro.user @@ -20,17 +178,116 @@ *.qbs.user.* *.moc moc_*.cpp +moc_*.h qrc_*.cpp ui_*.h +*.qmlc +*.jsc Makefile* *build-* *.qm +*.prl + +# Qt unit tests +target_wrapper.* # QtCreator - *.autosave -#QtCtreator Qml +# QtCreator Qml *.qmlproject.user *.qmlproject.user.* + +# QtCreator CMake +CMakeLists.txt.user* + +# QtCreator 4.8< compilation database + +# QtCreator local machine specific files for imported projects +*creator.user* + +*_qmlcache.qrc + +### QtCreator ### +# gitignore for Qt Creator like IDE for pure C/C++ project without Qt +# +# Reference: http://doc.qt.io/qtcreator/creator-project-generic.html + + + +# Qt Creator autogenerated files + + +# A listing of all the files included in the project +*.files + +# Include directories +*.includes + +# Project configuration settings like predefined Macros +*.config + +# Qt Creator settings +*.creator + +# User project settings +*.creator.user* + +# Qt Creator backups + +# Flags for Clang Code Model +*.cxxflags +*.cflags + + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,qtcreator,qt,macos,intellij+iml,cmake,linux,windows + +# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) + /build/ +*.app From b534c2bec0cc01d8f56b20c8437c8d61f8334a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=9B=D1=83=D1=85?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Mon, 2 Sep 2024 15:32:42 +0300 Subject: [PATCH 2/3] Automate version generation Version is now generated automatically based on git tags. Both cases are handled: building from git tree and building tarball downloaded from github. Works for qmake and cmake --- .appveyor.yml | 1 + .gitattributes | 1 + .github/workflows/cmake.yml | 40 ++++++++++++++++++++--- .gitignore | 1 + CMakeLists.txt | 13 +++----- cmake/modules/GenerateVersionHeader.cmake | 28 ++++++++++++++++ common.pri | 7 ---- config.h.in | 7 ---- console/main.cpp | 1 + limereport/limereport.pri | 16 +++++++++ limereport/lraboutdialog.cpp | 4 +-- limereport/version.h.in | 9 +++++ 12 files changed, 98 insertions(+), 30 deletions(-) create mode 100644 .gitattributes create mode 100644 cmake/modules/GenerateVersionHeader.cmake delete mode 100644 config.h.in create mode 100644 limereport/version.h.in diff --git a/.appveyor.yml b/.appveyor.yml index ccfaa11..4dde5bf 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -4,5 +4,6 @@ install: - set QTDIR=C:\Qt\5.12\mingw73_64 - set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw730_64\bin;%PATH% build_script: + - git fetch --prune --tags - qmake LimeReport.pro - mingw32-make diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a848c3e --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +limereport/version.h.in export-subst diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 1578466..699aa11 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -23,7 +23,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 + with: + fetch-tags: true + + # https://github.com/actions/checkout/issues/1781 + # workaround https://github.com/actions/checkout/issues/1471#issuecomment-1755560284 + - name: Fetch tags + run: git fetch --prune --unshallow --tags - name: Install Qt uses: jurplel/install-qt-action@v3 @@ -57,7 +64,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 + with: + fetch-tags: true + + # https://github.com/actions/checkout/issues/1781 + # workaround https://github.com/actions/checkout/issues/1471#issuecomment-1755560284 + - name: Fetch tags + run: git fetch --prune --unshallow --tags - name: Install Qt uses: jurplel/install-qt-action@v3 @@ -94,8 +108,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 - + uses: actions/checkout@v4 + with: + fetch-tags: true + - name: Install MinGW-w64 packages Qt5 if: "startsWith(matrix.qt_version, '5')" uses: msys2/setup-msys2@v2 @@ -107,6 +123,7 @@ jobs: cc:p cmake:p ninja:p + git: qt${{ matrix.qt_version }}-base:p qt${{ matrix.qt_version }}-svg:p qt${{ matrix.qt_version }}-tools:p @@ -123,10 +140,16 @@ jobs: cc:p cmake:p ninja:p + git: qt${{ matrix.qt_version }}-base:p qt${{ matrix.qt_version }}-svg:p qt${{ matrix.qt_version }}-tools:p qt${{ matrix.qt_version }}-declarative:p + + # https://github.com/actions/checkout/issues/1781 + # workaround https://github.com/actions/checkout/issues/1471#issuecomment-1755560284 + - name: Fetch tags + run: git fetch --prune --unshallow --tags - name: Configure CMake for Qt5 if: "startsWith(matrix.qt_version, '5')" @@ -151,7 +174,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 + with: + fetch-tags: true + + # https://github.com/actions/checkout/issues/1781 + # workaround https://github.com/actions/checkout/issues/1471#issuecomment-1755560284 + - name: Fetch tags + run: git fetch --prune --unshallow --tags - name: Install Qt uses: jurplel/install-qt-action@v3 diff --git a/.gitignore b/.gitignore index 5150452..5425e47 100644 --- a/.gitignore +++ b/.gitignore @@ -289,5 +289,6 @@ $RECYCLE.BIN/ # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) +limereport/version.h /build/ *.app diff --git a/CMakeLists.txt b/CMakeLists.txt index aff69f8..9b98eca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.14) project(limereport) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" "${CMAKE_MODULE_PATH}") +include(GenerateVersionHeader) + set(DEFAULT_ITEM_PADDING 0) -set(LIMEREPORT_VERSION_MAJOR 1) -set(LIMEREPORT_VERSION_MINOR 7) -set(LIMEREPORT_VERSION_RELEASE 14) option(ENABLE_ZINT "Enable libzint build for barcode support" OFF) option(LIMEREPORT_STATIC "Build LimeReport as static library" OFF) @@ -349,14 +349,12 @@ set(EXTRA_FILES ${PROJECT_NAME}/lrpreparedpagesintf.h ) -configure_file(config.h.in config.h @ONLY) - set(GLOBAL_HEADERS ${PROJECT_NAME}/LimeReport ${PROJECT_NAME}/LRCallbackDS ${PROJECT_NAME}/LRDataManager ${PROJECT_NAME}/LRScriptManager - ${CMAKE_CURRENT_BINARY_DIR}/config.h + ${CMAKE_BINARY_DIR}/limereport/version.h ) set(PROJECT_NAME ${PROJECT_NAME}-qt${QT_VERSION_MAJOR}) @@ -371,8 +369,6 @@ else() target_compile_definitions( ${PROJECT_NAME} INTERFACE -DLIMEREPORT_IMPORTS) endif() -target_compile_definitions(${PROJECT_NAME} PUBLIC -DCMAKE_CONFIG) - if(Qt${QT_VERSION_MAJOR}UiTools_FOUND) target_compile_definitions( ${PROJECT_NAME} PRIVATE -DHAVE_UI_LOADER) target_link_libraries( ${PROJECT_NAME} PUBLIC @@ -396,6 +392,7 @@ target_compile_definitions( ${PROJECT_NAME} PRIVATE -DDEFAULT_ITEM_PADDING=${DEF target_include_directories( ${PROJECT_NAME} PRIVATE limereport/ + ${CMAKE_BINARY_DIR}/limereport limereport/base limereport/bands limereport/databrowser diff --git a/cmake/modules/GenerateVersionHeader.cmake b/cmake/modules/GenerateVersionHeader.cmake new file mode 100644 index 0000000..ed62702 --- /dev/null +++ b/cmake/modules/GenerateVersionHeader.cmake @@ -0,0 +1,28 @@ +find_package(Git) + +if(GIT_EXECUTABLE) + # Generate a git-describe version string from Git repository tags + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --dirty + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_DESCRIBE_VERSION + RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(NOT GIT_DESCRIBE_ERROR_CODE) + set(GIT_VERSION ${GIT_DESCRIBE_VERSION}) + endif() +endif() + +# Final fallback: Just use a bogus version string that is semantically older +# than anything else and spit out a warning to the developer. +if(NOT DEFINED GIT_VERSION) + set(GIT_VERSION 0.0.0-unknown) + message(WARNING "Failed to determine version from Git tags. Using default version \"${GIT_VERSION}\".") +endif() + +configure_file( + ${CMAKE_SOURCE_DIR}/limereport/version.h.in + ${CMAKE_BINARY_DIR}/limereport/version.h + @ONLY) + diff --git a/common.pri b/common.pri index e87efa0..53960ec 100644 --- a/common.pri +++ b/common.pri @@ -139,13 +139,6 @@ UI_SOURCES_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/ui OBJECTS_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/obj RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc -LIMEREPORT_VERSION_MAJOR = 1 -LIMEREPORT_VERSION_MINOR = 7 -LIMEREPORT_VERSION_RELEASE = 14 - -LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}' -DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\" - QT *= xml sql REPORT_PATH = $$PWD/limereport diff --git a/config.h.in b/config.h.in deleted file mode 100644 index dcb5e74..0000000 --- a/config.h.in +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#cmakedefine LIMEREPORT_VERSION_MAJOR "@LIMEREPORT_VERSION_MAJOR@" -#cmakedefine LIMEREPORT_VERSION_MINOR "@LIMEREPORT_VERSION_MINOR@" -#cmakedefine LIMEREPORT_VERSION_RELEASE "@LIMEREPORT_VERSION_RELEASE@" - -#define LIMEREPORT_VERSION_STR LIMEREPORT_VERSION_MAJOR"." LIMEREPORT_VERSION_MINOR"." LIMEREPORT_VERSION_RELEASE diff --git a/console/main.cpp b/console/main.cpp index 7493e67..2d6e9a1 100644 --- a/console/main.cpp +++ b/console/main.cpp @@ -6,6 +6,7 @@ #include #include #include +#include "../limereport/version.h" #ifdef _WIN32 #include diff --git a/limereport/limereport.pri b/limereport/limereport.pri index c86b575..0243cb9 100644 --- a/limereport/limereport.pri +++ b/limereport/limereport.pri @@ -213,3 +213,19 @@ FORMS += \ RESOURCES += \ $$REPORT_PATH/report.qrc \ $$REPORT_PATH/items/items.qrc + +system("git --version") { + LR_VERSION = $$system("git --git-dir=$$PWD/../.git describe --tags --dirty") +} else { + LR_VERSION = "0.0.0-unknown" +} + +VERSION_TEMPLATE = $$PWD/version.h.in + +generateversion.depends = FORCE +generateversion.input = VERSION_TEMPLATE +generateversion.output = $$OUT_PWD/version.h +generateversion.commands = $$QMAKE_STREAM_EDITOR \'s/@GIT_VERSION@/$$LR_VERSION/\' ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT} +generateversion.CONFIG = no_link target_predeps + +QMAKE_EXTRA_COMPILERS += generateversion diff --git a/limereport/lraboutdialog.cpp b/limereport/lraboutdialog.cpp index 57cddd6..3663e31 100644 --- a/limereport/lraboutdialog.cpp +++ b/limereport/lraboutdialog.cpp @@ -27,9 +27,7 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * ****************************************************************************/ -#ifdef CMAKE_CONFIG -#include -#endif +#include "version.h" #include "lraboutdialog.h" #include "ui_lraboutdialog.h" diff --git a/limereport/version.h.in b/limereport/version.h.in new file mode 100644 index 0000000..0592268 --- /dev/null +++ b/limereport/version.h.in @@ -0,0 +1,9 @@ +#pragma once + +// git will put "#define GIT_ARCHIVE 1" on the next line inside archives. $Format:%n#define GIT_ARCHIVE 1$ + +#ifdef GIT_ARCHIVE +#define LIMEREPORT_VERSION_STR "$Format:%(describe:tags=true)$" +#else +#define LIMEREPORT_VERSION_STR "@GIT_VERSION@" +#endif From 8e3cae45e3201fe4f5c59979c3b3b8281b0b68f7 Mon Sep 17 00:00:00 2001 From: Arin Alex Date: Thu, 19 Sep 2024 20:04:19 +0300 Subject: [PATCH 3/3] Translations state committed --- translations/limereport_ar.ts | 235 ++++++++++++- translations/limereport_es.ts | 236 ++++++++++++- translations/limereport_fr.ts | 642 +++++++++++++++++++++++---------- translations/limereport_pl.ts | 643 ++++++++++++++++++++++++---------- translations/limereport_ru.qm | Bin 130173 -> 0 bytes translations/limereport_ru.ts | 177 ++++++---- translations/limereport_zh.ts | 236 ++++++++++++- 7 files changed, 1698 insertions(+), 471 deletions(-) delete mode 100644 translations/limereport_ru.qm diff --git a/translations/limereport_ar.ts b/translations/limereport_ar.ts index 4f982d3..b0f373d 100644 --- a/translations/limereport_ar.ts +++ b/translations/limereport_ar.ts @@ -509,6 +509,109 @@ p, li { white-space: pre-wrap; } + + LimeReport::BorderEditor + + Edit border + + + + Presets + + + + No lines + + + + Outline + + + + Border + + + + ... + + + + Style + + + + No style + + + + Solid + + + + Dash + + + + Dot + + + + Dash dot + + + + Dash dot dot + + + + Width: + + + + 1 + + + + 0.25 + + + + 0.5 + + + + 1.5 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + Color: + + + + Select + + + LimeReport::BorderFrameEditor @@ -1045,18 +1148,6 @@ p, li { white-space: pre-wrap; } HorizontalBar - - LegendAlignTop - - - - LegendAlignCenter - - - - LegendAlignBottom - - TitleAlignLeft @@ -1093,6 +1184,102 @@ p, li { white-space: pre-wrap; } Split + + GridLines + + + + Lines + + + + Solid + + + + NoStyle + + + + Dashed + + + + Dot + + + + DashDot + + + + DashDotDot + + + + Doubled + + + + LegendPoints + + + + LegendLines + + + + LegendAlignRightCenter + + + + LegendAlignRightTop + + + + LegendAlignRightBottom + + + + LegendAlignBottomRight + + + + LegendAlignBottomCenter + + + + LegendAlignBottomLeft + + + + SolidLine + + + + NoPen + + + + DashLine + + + + DotLine + + + + DashDotLine + + + + DashDotDotLine + + + + CustomDashLine + + LimeReport::FlagsPropItem @@ -2222,6 +2409,14 @@ p, li { white-space: pre-wrap; } mixWithPriorPage + + shadow + + + + borderStyle + + LimeReport::RectPropItem @@ -2942,6 +3137,18 @@ This preview is no longer valid. RowIndex + + RoleIndex + + + + RoleName + + + + columnIndex + + LimeReport::SettingDialog @@ -3001,6 +3208,10 @@ This preview is no longer valid. Report settings + + Base Item Padding: + + LimeReport::SubDetailBand diff --git a/translations/limereport_es.ts b/translations/limereport_es.ts index 33c5919..67f1dd5 100644 --- a/translations/limereport_es.ts +++ b/translations/limereport_es.ts @@ -638,7 +638,109 @@ p, li { white-space: pre-wrap; } - + LimeReport::BorderEditor + + Edit border + + + + Presets + + + + No lines + + + + Outline + + + + Border + + + + ... + + + + Style + + + + No style + + + + Solid + + + + Dash + + + + Dot + + + + Dash dot + + + + Dash dot dot + + + + Width: + + + + 1 + + + + 0.25 + + + + 0.5 + + + + 1.5 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + Color: + + + + Select + + + + LimeReport::BorderFrameEditor BorderFrameEditor @@ -1174,18 +1276,6 @@ p, li { white-space: pre-wrap; } HorizontalBar Barra horizontal - - LegendAlignTop - Alinear Leyenda Arriba - - - LegendAlignCenter - Centrar leyenda - - - LegendAlignBottom - Alinear Leyenda Abajo - TitleAlignLeft Alinear titulo a la izquierda @@ -1222,6 +1312,102 @@ p, li { white-space: pre-wrap; } Split + + GridLines + + + + Lines + + + + Solid + + + + NoStyle + + + + Dashed + + + + Dot + + + + DashDot + + + + DashDotDot + + + + Doubled + + + + LegendPoints + + + + LegendLines + + + + LegendAlignRightCenter + + + + LegendAlignRightTop + + + + LegendAlignRightBottom + + + + LegendAlignBottomRight + + + + LegendAlignBottomCenter + + + + LegendAlignBottomLeft + + + + SolidLine + + + + NoPen + + + + DashLine + + + + DotLine + + + + DashDotLine + + + + DashDotDotLine + + + + CustomDashLine + + LimeReport::FlagsPropItem @@ -2351,6 +2537,14 @@ p, li { white-space: pre-wrap; } mixWithPriorPage + + shadow + + + + borderStyle + + LimeReport::RectPropItem @@ -3073,6 +3267,18 @@ Esta vista previa ya no es válida. RowIndex Índice de fila + + RoleIndex + + + + RoleName + + + + columnIndex + + LimeReport::SettingDialog @@ -3132,6 +3338,10 @@ Esta vista previa ya no es válida. Report units + + Base Item Padding: + + LimeReport::SubDetailBand diff --git a/translations/limereport_fr.ts b/translations/limereport_fr.ts index e126f36..3507328 100644 --- a/translations/limereport_fr.ts +++ b/translations/limereport_fr.ts @@ -430,123 +430,123 @@ p, li { white-space: pre-wrap; } LimeReport::BandDesignIntf - + DataBand bande de données - + DataHeaderBand En-tête de données - + DataFooterBand Pied de données - + ReportHeader En-tête de rapport - + ReportFooter Pied de rapport - + PageHeader En-tête de page - + PageFooter Pied de page - + SubDetailBand Sous-détails - + SubDetailHeaderBand En-tête de sous-détails - + SubDetailFooterBand Pied de sous-détails - + GroupBandHeader Groupe d'en-tête - + GroupBandFooter Groupe de pieds - + TearOffBand Bande détachable - + connected to Connecté à - + Bring to top Placer au premier-plan - + Send to back Placer en arrière-plan - + Cut Couper - + Copy Copier - - + + Auto height Hauteur automatique - - + + Splittable Divisible - + + - Keep top space Conserver l'espace supérieur - - + + Keep bottom space Conserver l'espace inférieur - - + + Print if empty Imprimer si vide @@ -554,62 +554,194 @@ p, li { white-space: pre-wrap; } LimeReport::BaseDesignIntf - - + + Lock item geometry Verrouiller la géométrie d'un élément - + Copy Copier - + Cut Couper - + Paste Coller - + Bring to top Placer au premier-plan - + Send to back Placer en arrière-plan - + Create Horizontal Layout Créer une disposition horizontale - + Create Vertical Layout Créer une disposition verticale - + No borders Aucune bordure - + All borders Toutes les bordures - + Edit borders... + + LimeReport::BorderEditor + + + Edit border + + + + + Presets + + + + + No lines + + + + + Outline + + + + + Border + + + + + + + + ... + + + + + Style + + + + + No style + + + + + Solid + + + + + Dash + + + + + Dot + + + + + Dash dot + + + + + Dash dot dot + + + + + Width: + + + + + + 1 + + + + + 0.25 + + + + + 0.5 + + + + + 1.5 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + Color: + + + + + Select + + + LimeReport::BorderFrameEditor @@ -626,8 +758,8 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDesc - - + + defaultConnection Connexion par défaut @@ -1311,63 +1443,168 @@ p, li { white-space: pre-wrap; } HorizontalBar Barre horizontale + + + GridLines + + + + + Lines + + + + + Solid + + + + + NoStyle + + + + + Dashed + + + + + Dot + + + + + DashDot + + + + + DashDotDot + + + + + Doubled + + + + + LegendPoints + + + + + LegendLines + + + + + LegendAlignRightCenter + + + + + LegendAlignRightTop + + + + + LegendAlignRightBottom + + + + + LegendAlignBottomRight + + + + + LegendAlignBottomCenter + + + + + LegendAlignBottomLeft + + + + + SolidLine + + + + + NoPen + + + + + DashLine + + + + + DotLine + + + + + DashDotLine + + + + + DashDotDotLine + + + + + CustomDashLine + + - LegendAlignTop - Aligner la légende en haut - - - - LegendAlignCenter - Aligner la légende au centre - - - - LegendAlignBottom - Aligner la légende en bas - - - TitleAlignLeft Aligner le titre à gauche - + TitleAlignRight Aligner le titre à droite - + TitleAlignCenter Aligner le titre au centre - + Layout Disposition - + Table Tableau - + Millimeters Millimètres - + Inches Pouces - + Scale Échèlle - + Split Diviser @@ -1637,12 +1874,12 @@ p, li { white-space: pre-wrap; } LimeReport::MasterDetailProxyModel - + Field: "%1" not found in "%2" child datasource Le champ: "%1"est introuvable dans la source de donnée enfant "%2" - + Field: "%1" not found in "%2" master datasource Le champ: "%1"est introuvable dans la source de donnée principale "%2" @@ -1650,7 +1887,7 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - + model is destroyed Le modèle a été supprimé @@ -2051,37 +2288,37 @@ p, li { white-space: pre-wrap; } Supprimer - + Printing Impression en cours - + Page: - + Font Police - + Text align Alignement de texte - + of %1 de %1 - + Attention Attention - + The printing is in process L'impresion est en cours @@ -2089,7 +2326,7 @@ p, li { white-space: pre-wrap; } LimeReport::ProxyHolder - + Datasource has been invalidated La source de donnée n'a pas été validée @@ -2774,17 +3011,27 @@ p, li { white-space: pre-wrap; } - + + shadow + + + + + borderStyle + + + + Property Name Propriété - + Property value Valeur - + Warning Avertissement @@ -2832,17 +3079,17 @@ p, li { white-space: pre-wrap; } Traductions - + Report file name Nom du rapport - + Error Erreur - + Wrong file format Format de fichier incorrect @@ -3236,12 +3483,12 @@ p, li { white-space: pre-wrap; } %1 nom de fichier - + Report File Change Nom du fichier changé - + The report file "%1" has changed names or been deleted. This preview is no longer valid. @@ -3250,12 +3497,12 @@ This preview is no longer valid. Cet aperçu n'est plus valide. - + Designer not found! Designer introuvable! - + Language %1 already exists La langue %1 existe déja @@ -3564,13 +3811,13 @@ Cet aperçu n'est plus valide. LimeReport::ScriptEngineContext - + Dialog with name: %1 can`t be created Le dialogue avec le nom "%1" ne peut pas être crée - - + + Error Erreur @@ -3583,20 +3830,20 @@ Cet aperçu n'est plus valide. Fonctions de groupe - - - - - - - - + + + + + + + + Value Valeur - + BandName Nom de la bande @@ -3607,7 +3854,10 @@ Cet aperçu n'est plus valide. - + + + + FieldName Nom du champ @@ -3624,123 +3874,148 @@ Cet aperçu n'est plus valide. Champ "%1 introuvable dans %2! - + SYSTEM Système - - - + + + NUMBER Nombre - - - - - + + + + + Format - + Precision Précision - - - - + + + + Locale Local - - - - - - + + + + + + DATE&TIME Date&Heure - + CurrencySymbol Symbolde de la monnaie - - - - - - - - - - + + + + + + + + + + + + + + + GENERAL General - - - + + + Name Nom - + Datasource Source de donnée - + ValueField Valeur - + KeyField Clé - + KeyFieldValue Valeur de la clé - + + + RowIndex - - - + + + Unique identifier Identifiant unique - - + + Content Contenu - + Indent Indenter - + + + datasourceName Nom de source de donnée + + + RoleIndex + + + + + + RoleName + + + + + columnIndex + + LimeReport::SettingDialog @@ -3814,6 +4089,11 @@ Cet aperçu n'est plus valide. Suppress absent fields and variables warning Effacer les messages d'absences de champs et d'avertissement de variables + + + Base Item Padding: + + LimeReport::SubDetailBand @@ -3884,66 +4164,66 @@ Cet aperçu n'est plus valide. LimeReport::TextItem - - + + Edit Edition - - + + Auto height Hauteur automatique - - + + Allow HTML Interpréter HTML - - + + Allow HTML in fields Interpréter HTML dans les champs - - + + Stretch to max height Etirer à la hauteur maximale - - + + Transparent Transparent - - + + Watermark Filigrane - - + + Hide if empty Masquer si vide - - + + Error Erreur - + TextItem " %1 " already has folower " %2 " L'élément texte " %1 " a toujours un copain " %2 " - + TextItem " %1 " not found! Elément "%1" introuvable! @@ -4191,27 +4471,27 @@ Cet aperçu n'est plus valide. Connexion invalidé %1 - + Master datasource "%1" not found! Source de donnée principale "%1" introuvable! - + Master datasouce "%1" not found! Source de donnée principale "%1" introuvable! - + Child Enfant - + and child est enfant - + datasouce "%1" not found! Source de donnée "%1" introuvable! @@ -4327,12 +4607,14 @@ Cet aperçu n'est plus valide. - + + Attention! - + + Selected elements have different parent containers Les éléments sélectionnés ont un parent différent @@ -4342,12 +4624,12 @@ Cet aperçu n'est plus valide. L'objet avec le nom "%1" existe déja! - + Function %1 not found or have wrong arguments La fonction %1 est introuvable ou contient des paramètres incorrects - + Datasource manager not found Gestionnaire de source de donnée introuvable @@ -4438,20 +4720,20 @@ Cet aperçu n'est plus valide. Clair - + Default par défaut - - - + + + Millimeters Millimètres - - + + Inches Pouces diff --git a/translations/limereport_pl.ts b/translations/limereport_pl.ts index 40c3860..14d7193 100644 --- a/translations/limereport_pl.ts +++ b/translations/limereport_pl.ts @@ -442,123 +442,123 @@ p, li { white-space: pre-wrap; } LimeReport::BandDesignIntf - + DataBand Sekcja danych - + DataHeaderBand Nagłówek sekcji danych - + DataFooterBand Stopka sekcji danych - + ReportHeader Nagłówek raportu - + ReportFooter Stopka raportu - + PageHeader Nagłówek strony - + PageFooter Stopka strony - + SubDetailBand Podsekcja danych - + SubDetailHeaderBand Podsekcja danych nagłówek - + SubDetailFooterBand Podsekcja danych stopka - + GroupBandHeader Nagłówek sekcji grupowania - + GroupBandFooter Stopka sekcji grupowania - + TearOffBand Urwanie sekcji - + connected to połączony do - + Bring to top Przenieś na górę - + Send to back Przenieś na dół - + Cut Wytnij - + Copy Kopiuj - - + + Auto height Automatyczna wysokość - - + + Splittable Rozdzielane - + + - Keep top space - - + + Keep bottom space Zachowaj dolną przestrzeń - - + + Print if empty Drukuj jeśli pusty @@ -566,64 +566,195 @@ p, li { white-space: pre-wrap; } LimeReport::BaseDesignIntf - - + + Lock item geometry Zablokuj geometrię pozycji - + Copy Kopiuj - + Cut Wytnij - + Paste Wklej - + Bring to top Przenieś na górę - + Send to back Przenieś na dół - + Create Horizontal Layout Utwórz układ poziomy - + Create Vertical Layout Utwórz układ pionowy - + No borders Bez obramowania - + All borders Pełne obramowanie - + Edit borders... - + LimeReport::BorderEditor + + + Edit border + + + + + Presets + + + + + No lines + + + + + Outline + + + + + Border + + + + + + + + ... + ... + + + + Style + + + + + No style + + + + + Solid + + + + + Dash + + + + + Dot + + + + + Dash dot + + + + + Dash dot dot + + + + + Width: + + + + + + 1 + + + + + 0.25 + + + + + 0.5 + + + + + 1.5 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + Color: + + + + + Select + + + + LimeReport::BorderFrameEditor @@ -639,8 +770,8 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDesc - - + + defaultConnection Domyślne połączenie @@ -1324,63 +1455,168 @@ p, li { white-space: pre-wrap; } HorizontalBar Pasek poziomy + + + GridLines + + + + + Lines + + + + + Solid + + + + + NoStyle + + + + + Dashed + + + + + Dot + + + + + DashDot + + + + + DashDotDot + + + + + Doubled + + + + + LegendPoints + + + + + LegendLines + + + + + LegendAlignRightCenter + + + + + LegendAlignRightTop + + + + + LegendAlignRightBottom + + + + + LegendAlignBottomRight + + + + + LegendAlignBottomCenter + + + + + LegendAlignBottomLeft + + + + + SolidLine + + + + + NoPen + + + + + DashLine + + + + + DotLine + + + + + DashDotLine + + + + + DashDotDotLine + + + + + CustomDashLine + + - LegendAlignTop - Wyrównaj do góry legendę - - - - LegendAlignCenter - Wyśrodkuj legendę - - - - LegendAlignBottom - Wyrównaj do dołu legendę - - - TitleAlignLeft Wyrównaj do lewej tytuł - + TitleAlignRight Wyrównaj do prawej tytuł - + TitleAlignCenter Wyśrodkuj tytuł - + Layout Układ - + Table Tabela - + Millimeters Milimetry - + Inches Cale - + Scale Skala - + Split Podział @@ -1650,12 +1886,12 @@ p, li { white-space: pre-wrap; } LimeReport::MasterDetailProxyModel - + Field: "%1" not found in "%2" child datasource Pole: "%1" nie znalezione w "%2" źródle danch dziecka - + Field: "%1" not found in "%2" master datasource Pole: "%1" nie znalezione w "%2" głównym źródle danch @@ -1663,7 +1899,7 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - + model is destroyed Model danych jest zniszczony @@ -2064,37 +2300,37 @@ p, li { white-space: pre-wrap; } Usuń - + Printing - + Page: Strona: - + Font Czcionka - + Text align Wyrównanie tekstu - + of %1 z %1 - + Attention Uwaga - + The printing is in process @@ -2102,7 +2338,7 @@ p, li { white-space: pre-wrap; } LimeReport::ProxyHolder - + Datasource has been invalidated Źródło danych zostało unieważnione @@ -2787,17 +3023,27 @@ p, li { white-space: pre-wrap; } - + + shadow + + + + + borderStyle + + + + Property Name Nazwa właściwości - + Property value Wartość właściwości - + Warning Uwaga @@ -2845,17 +3091,17 @@ p, li { white-space: pre-wrap; } Tłumaczenia - + Report file name Nazwa pliku raportu - + Error Błąd - + Wrong file format Zły format pliku @@ -3249,12 +3495,12 @@ p, li { white-space: pre-wrap; } %1 nazwa pliku - + Report File Change Zmiana pliku raportu - + The report file "%1" has changed names or been deleted. This preview is no longer valid. @@ -3263,12 +3509,12 @@ This preview is no longer valid. Ten podgląd nie jest już prawidłowy. - + Designer not found! Nie znaleziono projektanta! - + Language %1 already exists Język %1 już istnieje @@ -3577,13 +3823,13 @@ Ten podgląd nie jest już prawidłowy. LimeReport::ScriptEngineContext - + Dialog with name: %1 can`t be created Okno dialogowe z nazwą:%1 nie można utworzyć - - + + Error Błąd @@ -3596,20 +3842,20 @@ Ten podgląd nie jest już prawidłowy. FUNKCJE GRUPUJĄCE - - - - - - - - + + + + + + + + Value Wartość - + BandName Nazwa sekcji @@ -3620,7 +3866,10 @@ Ten podgląd nie jest już prawidłowy. - + + + + FieldName Nazwa pola @@ -3637,120 +3886,145 @@ Ten podgląd nie jest już prawidłowy. Pole %1 nie znalezione w %2! - + SYSTEM SYSTEM - - - + + + NUMBER LICZBA - - - - - + + + + + Format Format - + Precision Precyzja - - - - + + + + Locale Ustawienia lokalne - - - - - - + + + + + + DATE&TIME Data i czas - + Datasource Źródło danych - + ValueField Pole wartości - + KeyField Pole klucza - + KeyFieldValue Wartość pola klucza - + + + RowIndex Indeks wiersza - - - + + + Unique identifier Unikalny identyfikator - - + + Content Zawartość - + Indent Akapit - + + + datasourceName Nazwa źródła danych - + + RoleIndex + + + + + + RoleName + + + + + columnIndex + + + + CurrencySymbol Symbol waluty - - - - - - - - - - + + + + + + + + + + + + + + + GENERAL OGÓLNY - - - + + + Name Nazwa @@ -3827,6 +4101,11 @@ Ten podgląd nie jest już prawidłowy. Suppress absent fields and variables warning Pomiń ostrzerzenie o nieobecności pól i zmiennych + + + Base Item Padding: + + LimeReport::SubDetailBand @@ -3897,66 +4176,66 @@ Ten podgląd nie jest już prawidłowy. LimeReport::TextItem - - + + Edit Edycja - - + + Auto height Automatyczna wysokość - - + + Allow HTML Zezwalaj HTML - - + + Allow HTML in fields Zezwalaj HTML w polach - - + + Stretch to max height Rozciągnij się do maksymalnej wysokości - - + + Transparent Przezroczysty - - + + Watermark Znak wodny - - + + Hide if empty Ukryj jeśli pusty - - + + Error Błąd - + TextItem " %1 " already has folower " %2 " Pole tekstowe " %1 " już ma folower " %2 " - + TextItem " %1 " not found! Nie znaleziono pole tekstowego "%1"! @@ -4204,27 +4483,27 @@ Ten podgląd nie jest już prawidłowy. Nieprawidłowe połączenie! %1 - + Master datasource "%1" not found! Nie znaleziono głównego źródła danych "%1"! - + Master datasouce "%1" not found! Nie znaleziono głównego źródła danych "%1"! - + Child Dziecko - + and child i dziecko - + datasouce "%1" not found! nie znaleziono źródła danych "%1"! @@ -4340,12 +4619,14 @@ Ten podgląd nie jest już prawidłowy. Ciąg znaków - + + Attention! Uwaga! - + + Selected elements have different parent containers Wybrane elementy mają różne pojemniki nadrzędne @@ -4355,12 +4636,12 @@ Ten podgląd nie jest już prawidłowy. Obiekt o nazwie %1 już istnieje! - + Function %1 not found or have wrong arguments Funkcja %1 nie znaleziona lub ma błędne argumenty - + Datasource manager not found Nie znaleziono menedżera źródła danych @@ -4451,20 +4732,20 @@ Ten podgląd nie jest już prawidłowy. Jasny - + Default Domyślny - - - + + + Millimeters Milimetry - - + + Inches Cale diff --git a/translations/limereport_ru.qm b/translations/limereport_ru.qm deleted file mode 100644 index dbc88449d9bb577d36d513fda3a73dbb51ed174d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130173 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 diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts index 0784782..ceeec76 100644 --- a/translations/limereport_ru.ts +++ b/translations/limereport_ru.ts @@ -559,58 +559,58 @@ p, li { white-space: pre-wrap; } LimeReport::BaseDesignIntf - + Copy Копировать - + Cut Вырезать - + Paste Вставить - + Bring to top На передний план - + Send to back На задний план - + No borders Удалить границы - + All borders Внешние границы - + Create Horizontal Layout Создать Горизонтальную Компановку - + Create Vertical Layout Создать Вертикальную Компановку - - + + Lock item geometry Заблокировать геометрию элемента - + Edit borders... Редактор границ ... @@ -763,8 +763,8 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDesc - - + + defaultConnection Соединение по умолчанию @@ -1879,12 +1879,12 @@ p, li { white-space: pre-wrap; } LimeReport::MasterDetailProxyModel - + Field: "%1" not found in "%2" child datasource Поле "%1" не найдено в подчиненном источнике данных "%2" - + Field: "%1" not found in "%2" master datasource Поле "%1" не найдено в главном источнике данных "%2" @@ -1892,7 +1892,7 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - + model is destroyed модель уничтожена @@ -2213,12 +2213,12 @@ p, li { white-space: pre-wrap; } Печать в PDF - + Page: Страница: - + of %1 из %1 @@ -2258,12 +2258,12 @@ p, li { white-space: pre-wrap; } Показать панель инструментов - + Font Шрифт - + Text align Выравнивание текста @@ -2313,17 +2313,17 @@ p, li { white-space: pre-wrap; } Панель инструментов редактирования - + Printing Печатается - + Attention Внимание - + The printing is in process Отчет находится в процессе печати @@ -2331,7 +2331,7 @@ p, li { white-space: pre-wrap; } LimeReport::ProxyHolder - + Datasource has been invalidated Источник данных недействителен @@ -3074,7 +3074,7 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWidget - + Report file name Имя файла отчета @@ -3084,12 +3084,12 @@ p, li { white-space: pre-wrap; } Скрипт - + Error Ошибка - + Wrong file format Неверный формат файла @@ -3483,24 +3483,24 @@ p, li { white-space: pre-wrap; } Предпросмотр - + Report File Change Монитор изменений файлов - + The report file "%1" has changed names or been deleted. This preview is no longer valid. Файл отчета "%1" изменил имя или был удален. - + Designer not found! Дизайнер не найден! - + Language %1 already exists Язык %1 уже существует @@ -3814,13 +3814,13 @@ This preview is no longer valid. LimeReport::ScriptEngineContext - + Dialog with name: %1 can`t be created Диалог %1 не может быть создан - - + + Error Ошибка @@ -3923,6 +3923,11 @@ This preview is no longer valid. + + + + + GENERAL ОБЩИЕ @@ -3934,6 +3939,9 @@ This preview is no longer valid. + + + FieldName Имя поля @@ -3983,11 +3991,31 @@ This preview is no longer valid. + + datasourceName Имя источника данных + + + RoleIndex + + + + + + RoleName + + + + + columnIndex + + + + RowIndex Индекс строки @@ -4024,6 +4052,11 @@ This preview is no longer valid. Suppress absent fields and variables warning Не выводить сообщения об отсутствии полей или переменных + + + Base Item Padding: + + Language @@ -4134,66 +4167,66 @@ This preview is no longer valid. LimeReport::TextItem - - + + Edit Правка - - + + Auto height Автоматическая высота - - + + Allow HTML Разрешить HTML - - + + Allow HTML in fields Разрешить HTML в полях - - + + Stretch to max height Растягивать до максимальной высоты - - + + Error Ошибка - + TextItem " %1 " already has folower " %2 " Текстовый элемент %1 уже следует за %2 - + TextItem " %1 " not found! Текстовый элемент %1 не найден! - - + + Transparent Прозрачный - - + + Watermark Водный знак - - + + Hide if empty Скрывать, если пустое @@ -4440,34 +4473,34 @@ This preview is no longer valid. Неверное соединение %1 - + Child Подчиненный - + and child и подчиненный - + datasouce "%1" not found! источник данных %1 не найден! - - + + Attention! Внимание! - - + + Selected elements have different parent containers Выделенные элементы имеют различные родительские контейнеры - + Function %1 not found or have wrong arguments Функция %1 не найдена или вызвана с неверными аргументами @@ -4532,7 +4565,7 @@ This preview is no longer valid. содержимое - + Master datasouce "%1" not found! Главный источник данных %1 не найден! @@ -4614,7 +4647,7 @@ This preview is no longer valid. Неверный формат файла - + Master datasource "%1" not found! Главный источник данных %1 не найден! @@ -4645,7 +4678,7 @@ This preview is no longer valid. Третий - + Datasource manager not found Менеджер источников данных не найден @@ -4666,20 +4699,20 @@ This preview is no longer valid. Светаля - + Default По умолчанию - - - + + + Millimeters Миллиметры - - + + Inches Дюймы diff --git a/translations/limereport_zh.ts b/translations/limereport_zh.ts index d96250c..7649beb 100644 --- a/translations/limereport_zh.ts +++ b/translations/limereport_zh.ts @@ -522,7 +522,109 @@ p, li { white-space: pre-wrap; } - + LimeReport::BorderEditor + + Edit border + + + + Presets + + + + No lines + + + + Outline + + + + Border + + + + ... + ... + + + Style + + + + No style + + + + Solid + + + + Dash + + + + Dot + + + + Dash dot + + + + Dash dot dot + + + + Width: + + + + 1 + + + + 0.25 + + + + 0.5 + + + + 1.5 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + Color: + + + + Select + + + + LimeReport::BorderFrameEditor BorderFrameEditor @@ -1058,18 +1160,6 @@ p, li { white-space: pre-wrap; } HorizontalBar 条形图 - - LegendAlignTop - 图例靠上对齐 - - - LegendAlignCenter - 图例居中 - - - LegendAlignBottom - 图例靠下对齐 - TitleAlignLeft 标题左对齐 @@ -1106,6 +1196,102 @@ p, li { white-space: pre-wrap; } Split 划分 + + GridLines + + + + Lines + + + + Solid + + + + NoStyle + + + + Dashed + + + + Dot + + + + DashDot + + + + DashDotDot + + + + Doubled + + + + LegendPoints + + + + LegendLines + + + + LegendAlignRightCenter + + + + LegendAlignRightTop + + + + LegendAlignRightBottom + + + + LegendAlignBottomRight + + + + LegendAlignBottomCenter + + + + LegendAlignBottomLeft + + + + SolidLine + + + + NoPen + + + + DashLine + + + + DotLine + + + + DashDotLine + + + + DashDotDotLine + + + + CustomDashLine + + LimeReport::FlagsPropItem @@ -2235,6 +2421,14 @@ p, li { white-space: pre-wrap; } mixWithPriorPage + + shadow + + + + borderStyle + + LimeReport::RectPropItem @@ -2957,6 +3151,18 @@ This preview is no longer valid. RowIndex 行索引 + + RoleIndex + + + + RoleName + + + + columnIndex + + LimeReport::SettingDialog @@ -3016,6 +3222,10 @@ This preview is no longer valid. Report settings 报表设置 + + Base Item Padding: + + LimeReport::SubDetailBand