diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..8e7bdb0
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+limereport
\ No newline at end of file
diff --git a/.idea/LimeReport.iml b/.idea/LimeReport.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/.idea/LimeReport.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..79b3c94
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..12d65df
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..15885cc
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/3rdparty/zint-2.10.0-src.tar.gz b/3rdparty/zint-2.10.0-src.tar.gz
new file mode 100644
index 0000000..a2eb21a
Binary files /dev/null and b/3rdparty/zint-2.10.0-src.tar.gz differ
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
new file mode 100644
index 0000000..4934a44
--- /dev/null
+++ b/CMakeLists.txt.user
@@ -0,0 +1,576 @@
+
+
+
+
+
+ EnvironmentId
+ {33389db1-1b8e-4833-9ab8-a0816539f586}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ -fno-delayed-template-parsing
+
+ true
+ Builtin.BuildSystem
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 2
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop Qt 5.12.3 MinGW 64-bit
+ Desktop Qt 5.12.3 MinGW 64-bit
+ qt.qt5.5123.win64_mingw73_kit
+ 0
+ 0
+ 1
+
+ Debug
+ -GNinja
+-DCMAG=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:/Work/C++/Projects/build-LimeReport-Desktop_Qt_5_12_3_MinGW_64_bit-Debug
+
+
+
+ all
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_12_3_MinGW_64_bit-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_12_3_MinGW_64_bit-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_12_3_MinGW_64_bit-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ LRDesigner
+ CMakeProjectManager.CMakeRunConfiguration.LRDesigner
+ LRDesigner
+ false
+ true
+ true
+ false
+ true
+
+
+ true
+ true
+ true
+
+ 2
+
+ demo_r1
+ CMakeProjectManager.CMakeRunConfiguration.demo_r1
+ demo_r1
+ false
+ true
+ true
+ false
+ true
+
+ 2
+
+
+
+ ProjectExplorer.Project.Target.1
+
+ Desktop
+ Desktop Qt 5.15.1 MSVC2019 64bit
+ Desktop Qt 5.15.1 MSVC2019 64bit
+ qt.qt5.5151.win64_msvc2019_64_kit
+ 0
+ 0
+ 0
+
+ Debug
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_15_1_MSVC2019_64bit-Debug
+
+
+
+ all
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_15_1_MSVC2019_64bit-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_15_1_MSVC2019_64bit-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ D:\Work\C++\Projects\build-LimeReport-Desktop_Qt_5_15_1_MSVC2019_64bit-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ LRDesigner
+ CMakeProjectManager.CMakeRunConfiguration.LRDesigner
+ LRDesigner
+ false
+ true
+ true
+ false
+ true
+
+
+ true
+ true
+ true
+
+ 2
+
+ demo_r1
+ CMakeProjectManager.CMakeRunConfiguration.demo_r1
+ demo_r1
+ false
+ true
+ true
+ false
+ true
+
+ 2
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 2
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/demo_r1/.idea/.gitignore b/demo_r1/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/demo_r1/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/demo_r1/.idea/demo_r1.iml b/demo_r1/.idea/demo_r1.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/demo_r1/.idea/demo_r1.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/misc.xml b/demo_r1/.idea/misc.xml
new file mode 100644
index 0000000..79b3c94
--- /dev/null
+++ b/demo_r1/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/modules.xml b/demo_r1/.idea/modules.xml
new file mode 100644
index 0000000..7423bf7
--- /dev/null
+++ b/demo_r1/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/vcs.xml b/demo_r1/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/demo_r1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/demo_reports/1.4/test.zip b/demo_r1/demo_reports/1.4/test.zip
new file mode 100644
index 0000000..ffc9c6b
Binary files /dev/null and b/demo_r1/demo_reports/1.4/test.zip differ
diff --git a/demo_r1/demo_reports/BL détaillé.lrxml b/demo_r1/demo_reports/BL détaillé.lrxml
new file mode 100644
index 0000000..e677ec8
--- /dev/null
+++ b/demo_r1/demo_reports/BL détaillé.lrxml
@@ -0,0 +1,3020 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/BL détaillé_upd.lrxml b/demo_r1/demo_reports/BL détaillé_upd.lrxml
new file mode 100644
index 0000000..e677ec8
--- /dev/null
+++ b/demo_r1/demo_reports/BL détaillé_upd.lrxml
@@ -0,0 +1,3020 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/BL détaillé_upd.zip b/demo_r1/demo_reports/BL détaillé_upd.zip
new file mode 100644
index 0000000..82f8f56
Binary files /dev/null and b/demo_r1/demo_reports/BL détaillé_upd.zip differ
diff --git a/demo_r1/demo_reports/BL.detaille.zip b/demo_r1/demo_reports/BL.detaille.zip
new file mode 100644
index 0000000..da43894
Binary files /dev/null and b/demo_r1/demo_reports/BL.detaille.zip differ
diff --git a/demo_r1/demo_reports/DataSource_to_Column.lrxml b/demo_r1/demo_reports/DataSource_to_Column.lrxml
new file mode 100644
index 0000000..76a2236
--- /dev/null
+++ b/demo_r1/demo_reports/DataSource_to_Column.lrxml
@@ -0,0 +1,492 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/Facture.lrxml b/demo_r1/demo_reports/Facture.lrxml
new file mode 100644
index 0000000..9cf6c0a
--- /dev/null
+++ b/demo_r1/demo_reports/Facture.lrxml
@@ -0,0 +1,2893 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/db.sqlite3 b/demo_r1/demo_reports/db.sqlite3
new file mode 100644
index 0000000..df18669
Binary files /dev/null and b/demo_r1/demo_reports/db.sqlite3 differ
diff --git a/demo_r1/demo_reports/form.lrd b/demo_r1/demo_reports/form.lrd
new file mode 100644
index 0000000..5af8712
Binary files /dev/null and b/demo_r1/demo_reports/form.lrd differ
diff --git a/demo_r1/demo_reports/ladder.lrxml b/demo_r1/demo_reports/ladder.lrxml
new file mode 100644
index 0000000..6bb2692
--- /dev/null
+++ b/demo_r1/demo_reports/ladder.lrxml
@@ -0,0 +1,1554 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/lr_git_test.lrxml b/demo_r1/demo_reports/lr_git_test.lrxml
new file mode 100644
index 0000000..381e7e4
--- /dev/null
+++ b/demo_r1/demo_reports/lr_git_test.lrxml
@@ -0,0 +1,2891 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/multimote/db.sqlite3 b/demo_r1/demo_reports/multimote/db.sqlite3
new file mode 100644
index 0000000..ffb9aa7
Binary files /dev/null and b/demo_r1/demo_reports/multimote/db.sqlite3 differ
diff --git a/demo_r1/demo_reports/multimote/test.lrxml b/demo_r1/demo_reports/multimote/test.lrxml
new file mode 100644
index 0000000..cb254c3
--- /dev/null
+++ b/demo_r1/demo_reports/multimote/test.lrxml
@@ -0,0 +1,617 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/template.lrxml b/demo_r1/demo_reports/template.lrxml
new file mode 100644
index 0000000..0491676
--- /dev/null
+++ b/demo_r1/demo_reports/template.lrxml
@@ -0,0 +1,3524 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test.zip b/demo_r1/demo_reports/test.zip
new file mode 100644
index 0000000..0ba84e3
Binary files /dev/null and b/demo_r1/demo_reports/test.zip differ
diff --git a/demo_r1/demo_reports/test/test.db b/demo_r1/demo_reports/test/test.db
new file mode 100644
index 0000000..0bbab6a
Binary files /dev/null and b/demo_r1/demo_reports/test/test.db differ
diff --git a/demo_r1/demo_reports/test/test.lrxml b/demo_r1/demo_reports/test/test.lrxml
new file mode 100644
index 0000000..4ae8ead
--- /dev/null
+++ b/demo_r1/demo_reports/test/test.lrxml
@@ -0,0 +1,432 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test1.lrxml b/demo_r1/demo_reports/test/test1.lrxml
new file mode 100644
index 0000000..cab68b0
--- /dev/null
+++ b/demo_r1/demo_reports/test/test1.lrxml
@@ -0,0 +1,843 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2.lrxml b/demo_r1/demo_reports/test/test2.lrxml
new file mode 100644
index 0000000..6f461e9
--- /dev/null
+++ b/demo_r1/demo_reports/test/test2.lrxml
@@ -0,0 +1,1908 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2_changed.lrxml b/demo_r1/demo_reports/test/test2_changed.lrxml
new file mode 100644
index 0000000..b120096
--- /dev/null
+++ b/demo_r1/demo_reports/test/test2_changed.lrxml
@@ -0,0 +1,1907 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2_changed.zip b/demo_r1/demo_reports/test/test2_changed.zip
new file mode 100644
index 0000000..a775f15
Binary files /dev/null and b/demo_r1/demo_reports/test/test2_changed.zip differ
diff --git a/demo_r1/demo_reports/test/test3_changed.lrxml b/demo_r1/demo_reports/test/test3_changed.lrxml
new file mode 100644
index 0000000..b2bef31
--- /dev/null
+++ b/demo_r1/demo_reports/test/test3_changed.lrxml
@@ -0,0 +1,1907 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test1.zip b/demo_r1/demo_reports/test1.zip
new file mode 100644
index 0000000..ffc9c6b
Binary files /dev/null and b/demo_r1/demo_reports/test1.zip differ
diff --git a/demo_r1/demo_reports/test3.zip b/demo_r1/demo_reports/test3.zip
new file mode 100644
index 0000000..baf050a
Binary files /dev/null and b/demo_r1/demo_reports/test3.zip differ
diff --git a/demo_r1/demo_reports/testqrcode.lrxml b/demo_r1/demo_reports/testqrcode.lrxml
new file mode 100644
index 0000000..0754937
--- /dev/null
+++ b/demo_r1/demo_reports/testqrcode.lrxml
@@ -0,0 +1,1156 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/testqrcode.zip b/demo_r1/demo_reports/testqrcode.zip
new file mode 100644
index 0000000..c9c79d9
Binary files /dev/null and b/demo_r1/demo_reports/testqrcode.zip differ
diff --git a/demo_r2/demo_reports/Facture.lrxml b/demo_r2/demo_reports/Facture.lrxml
new file mode 100644
index 0000000..9cf6c0a
--- /dev/null
+++ b/demo_r2/demo_reports/Facture.lrxml
@@ -0,0 +1,2893 @@
+
+
+
+
diff --git a/demo_r2/demo_reports/invoice.zip b/demo_r2/demo_reports/invoice.zip
new file mode 100644
index 0000000..fc9a75d
Binary files /dev/null and b/demo_r2/demo_reports/invoice.zip differ
diff --git a/include/lrglobal.h b/include/lrglobal.h
index b2fe56c..95f9801 100644
--- a/include/lrglobal.h
+++ b/include/lrglobal.h
@@ -125,12 +125,12 @@ namespace Const{
Q_DECLARE_FLAGS(PreviewHints, PreviewHint)
Q_FLAGS(PreviewHints)
- class ReportError : public std::runtime_error{
+ class LIMEREPORT_EXPORT ReportError : public std::runtime_error{
public:
ReportError(const QString& message);
};
- class ReportSettings{
+ class LIMEREPORT_EXPORT ReportSettings{
public:
ReportSettings():m_suppressAbsentFieldsAndVarsWarnings(false){}
void setDefaultValues(){m_suppressAbsentFieldsAndVarsWarnings = false;}
@@ -140,13 +140,13 @@ namespace Const{
bool m_suppressAbsentFieldsAndVarsWarnings;
};
- class IExternalPainter{
+ class LIMEREPORT_EXPORT IExternalPainter{
public:
virtual void paintByExternalPainter(const QString& objectName, QPainter* painter, const QStyleOptionGraphicsItem* options) = 0;
virtual ~IExternalPainter();
};
- class IPainterProxy{
+ class LIMEREPORT_EXPORT IPainterProxy{
public:
virtual void setExternalPainter(IExternalPainter* externalPainter) = 0;
virtual ~IPainterProxy();
@@ -168,7 +168,7 @@ namespace Const{
#endif
- class Enums
+ class LIMEREPORT_EXPORT Enums
{
public:
enum VariableDataType {Undefined, String, Bool, Int, Real, Date, Time, DateTime};
diff --git a/limereport/images/border_settings.png b/limereport/images/border_settings.png
new file mode 100644
index 0000000..3bae2c8
Binary files /dev/null and b/limereport/images/border_settings.png differ
diff --git a/limereport/items/borderframeeditor.cpp b/limereport/items/borderframeeditor.cpp
deleted file mode 100644
index a864550..0000000
--- a/limereport/items/borderframeeditor.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-#include "borderframeeditor.h"
-#include "ui_borderframeeditor.h"
-#include
-#include
-#include
-#include
-#include "lrbasedesignintf.h"
-#include "lrbordereditor.h"
-using namespace LimeReport;
-BorderFrameEditor::BorderFrameEditor(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::BorderFrameEditor)
-{
- ui->setupUi(this);
- scene = new QGraphicsScene(ui->graphicsView);
-
- QRect vRect = rect();
-
- //Draw corder lines
- //topLeft
- scene->addLine(10,5, 10,10,QPen(Qt::gray));
- scene->addLine(5,10, 10,10,QPen(Qt::gray));
- //bottomLeft
- scene->addLine(10,vRect.bottom() -5, 10,vRect.bottom()-10,QPen(Qt::gray));
- scene->addLine(5,vRect.bottom()-10,10,vRect.bottom()-10,QPen(Qt::gray));
- //bottomRight
- scene->addLine(vRect.right()-10,vRect.bottom() -5,vRect.right()- 10,vRect.bottom()-10,QPen(Qt::gray));
- scene->addLine(vRect.right()-5,vRect.bottom()-10,vRect.right()-10,vRect.bottom()-10,QPen(Qt::gray));
- //topRight
- scene->addLine(vRect.width()-10,5,vRect.width()- 10,10,QPen(Qt::gray));
- scene->addLine(vRect.width()-5,10, vRect.width()-10,10,QPen(Qt::gray));
- scene->setSceneRect(vRect);
- ui->graphicsView->setScene(scene);
- QGraphicsSimpleTextItem * io = new QGraphicsSimpleTextItem();
- io->setAcceptedMouseButtons(Qt::LeftButton);
- io->setPos(scene->sceneRect().center());
- io->setText(tr("Text"));
- scene->addItem(io);
-
- QRectF bR = io->sceneBoundingRect();
- io->setPos( scene->sceneRect().center().x() - bR.width()/2, scene->sceneRect().center().y() - bR.height()/2 );
- connect(this,SIGNAL(borderSideClicked(int, bool)),this,SLOT(SlotBorderSideClicked(int,bool)));
-
-}
-
-BorderFrameEditor::~BorderFrameEditor()
-{
- delete ui;
-}
-
-void BorderFrameEditor::setPen(QPen pen)
-{
- m_pen = pen;
- updateBorders();
-
-}
-
-QPen BorderFrameEditor::pen()
-{
- return m_pen;
-}
-
-void BorderFrameEditor::setAllLines()
-{
-
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
-
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
-
-
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
-
-}
-
-void BorderFrameEditor::unSetAllLines()
-{
- if(topLine)
- {
- scene->removeItem(topLine);
-
- }
- if(leftLine)
- {
- scene->removeItem(leftLine);
-
- }
- if(bottomLine)
- {
- scene->removeItem(bottomLine);
-
-
-
- }
- if(rightLine)
- {
- scene->removeItem(rightLine);
-
- }
-
-}
-
-void BorderFrameEditor::mousePressEvent(QMouseEvent *event)
-{
-
- if(event->x() >= 10 && event->y() <30)//Draw top border
- {
-
- if(!topLine)
- {
-
- emit borderSideClicked(1,true);
-
- }
- else
- {
-
- emit borderSideClicked(1,false);
- }
- }
-
- if((event->x() >= 10 && event->x() < 30) && (event->y() > 10)) //Draw border left
- {
- if(!leftLine)
- {
-
- emit borderSideClicked(4,true);
-
- }
- else
- {
-
- emit borderSideClicked(4,false);
-
- }
- }
-
- if(event->x() >= 10 && (event->y() >80 && event->y() < rect().bottom())) //Draw bottom border
- {
- if(!bottomLine)
- {
-
- emit borderSideClicked(2,true);
- }
-
- else
- {
-
- emit borderSideClicked(2,false);
-
- }
- }
-
- if((event->x() >= 130 && event->x() < rect().width()) && event->y() > 10) //Draw border right
- {
- if(!rightLine)
- {
-
- emit borderSideClicked(8,true);
-
- }
- else
- {
-
- emit borderSideClicked(8,false);
-
- }
-
- }
-
-
-}
-
-void BorderFrameEditor::SlotBorderSideClicked(int side, bool show)
-{
-
- switch(side)
- {
- case BaseDesignIntf::BorderSide::TopLine:
- {
- if(show)
- {
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
-
- }
- else
- {
- scene->removeItem(topLine);
- topLine = NULL;
-
- }
- }break;
- case BaseDesignIntf::LeftLine:
- {
- if(show)
- {
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
-
- }
- else
- {
- scene->removeItem(leftLine);
- leftLine = NULL;
-
-
- }
- }break;
- case BaseDesignIntf::BottomLine:
- {
- if(show)
- {
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
- }
-
- else
- {
- scene->removeItem(bottomLine);
- bottomLine = NULL;
-
-
- }
- }break;
- case BaseDesignIntf::RightLine:
- {
- if(show)
- {
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
- }
- else
- {
- scene->removeItem(rightLine);
- rightLine = NULL;
-
- }
-
- }
-
- }
- updateBorders();
-}
-
-void BorderFrameEditor::updateBorders()
-{
- //if a line is set we redraw it
- if(topLine)
- {
- scene->removeItem(topLine);
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
- }
- if(leftLine)
- {
- scene->removeItem(leftLine);
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
- }
- if(bottomLine)
- {
- scene->removeItem(bottomLine);
-
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
- }
- if(rightLine)
- {
- scene->removeItem(rightLine);
-
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
- }
-
-}
-
diff --git a/limereport/items/editors/lritemsborderseditorwidget.cpp b/limereport/items/editors/lritemsborderseditorwidget.cpp
index 7b4853a..a49aef2 100644
--- a/limereport/items/editors/lritemsborderseditorwidget.cpp
+++ b/limereport/items/editors/lritemsborderseditorwidget.cpp
@@ -44,7 +44,7 @@ void ItemsBordersEditorWidget::setItemEvent(BaseDesignIntf* item)
updateValues((BaseDesignIntf::BorderLines)borders.toInt());
setEnabled(true);
}
- itm = item;
+ m_item = item;
}
void ItemsBordersEditorWidget::properyChangedEvent(const QString& property, const QVariant& oldValue, const QVariant& newValue)
@@ -72,21 +72,18 @@ void ItemsBordersEditorWidget::allBordesClicked()
updateValues((BaseDesignIntf::BorderLines)borders);
}
-void ItemsBordersEditorWidget::buttonClicked(bool)
-{
-
-}
+void ItemsBordersEditorWidget::buttonClicked(bool){}
void ItemsBordersEditorWidget::editBorderClicked()
{
- lrbordereditor be;
- be.loadItem(itm);
- if(be.exec() == QDialog::Rejected)return;
+ BorderEditor be;
+ be.loadItem(m_item);
+ if ( be.exec() == QDialog::Rejected ) return;
updateValues(be.borderSides());
- itm->setBorderLinesFlags(be.borderSides());
- itm->setBorderLineSize(be.border_width());
- itm->setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.border_style());
- itm->setBorderColor(be.borderColor());
+ m_item->setBorderLinesFlags(be.borderSides());
+ m_item->setBorderLineSize(be.borderWidth());
+ m_item->setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle());
+ m_item->setBorderColor(be.borderColor());
}
void ItemsBordersEditorWidget::initEditor()
@@ -129,7 +126,7 @@ void ItemsBordersEditorWidget::initEditor()
addAction(m_allLines);
addSeparator();
m_BorderEditor = new QAction(tr("Edit border"),this);
- m_BorderEditor->setIcon(QIcon(":/report/images/allLines"));
+ m_BorderEditor->setIcon(QIcon(":/report/images/borderEditor"));
connect(m_BorderEditor,SIGNAL(triggered()),this,SLOT(editBorderClicked()));
addAction(m_BorderEditor);
@@ -140,20 +137,20 @@ void ItemsBordersEditorWidget::initEditor()
void ItemsBordersEditorWidget::updateValues(BaseDesignIntf::BorderLines borders)
{
m_changing = true;
- m_topLine->setChecked(borders&BaseDesignIntf::TopLine);
- m_bottomLine->setChecked(borders&BaseDesignIntf::BottomLine);
- m_leftLine->setChecked(borders&BaseDesignIntf::LeftLine);
- m_rightLine->setChecked(borders&BaseDesignIntf::RightLine);
+ m_topLine->setChecked(borders & BaseDesignIntf::TopLine);
+ m_bottomLine->setChecked(borders & BaseDesignIntf::BottomLine);
+ m_leftLine->setChecked(borders & BaseDesignIntf::LeftLine);
+ m_rightLine->setChecked(borders & BaseDesignIntf::RightLine);
m_changing = false;
}
BaseDesignIntf::BorderLines ItemsBordersEditorWidget::createBorders()
{
int borders = 0;
- borders += (m_topLine->isChecked())?BaseDesignIntf::TopLine:0;
- borders += (m_bottomLine->isChecked())?BaseDesignIntf::BottomLine:0;
- borders += (m_leftLine->isChecked())?BaseDesignIntf::LeftLine:0;
- borders += (m_rightLine->isChecked())?BaseDesignIntf::RightLine:0;
+ borders += (m_topLine->isChecked()) ? BaseDesignIntf::TopLine:0;
+ borders += (m_bottomLine->isChecked()) ? BaseDesignIntf::BottomLine:0;
+ borders += (m_leftLine->isChecked()) ? BaseDesignIntf::LeftLine:0;
+ borders += (m_rightLine->isChecked()) ? BaseDesignIntf::RightLine:0;
return (BaseDesignIntf::BorderLines)borders;
}
@@ -180,6 +177,21 @@ void ItemsBordersEditorWidgetForDesigner::allBordesClicked()
ItemsBordersEditorWidget::allBordesClicked();
m_reportEditor->setBorders(createBorders());
}
+
+void ItemsBordersEditorWidgetForDesigner::editBorderClicked()
+{
+ BorderEditor be;
+ be.loadItem(m_item);
+ if ( be.exec() == QDialog::Rejected ) return;
+
+ m_reportEditor->setBordersExt(
+ be.borderSides(),
+ be.borderWidth(),
+ (LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle(),
+ be.borderColor()
+ );
+}
+
#endif
} //namespace LimeReport
diff --git a/limereport/items/editors/lritemsborderseditorwidget.h b/limereport/items/editors/lritemsborderseditorwidget.h
index 2538258..ef83dbc 100644
--- a/limereport/items/editors/lritemsborderseditorwidget.h
+++ b/limereport/items/editors/lritemsborderseditorwidget.h
@@ -49,11 +49,12 @@ protected slots:
virtual void noBordesClicked();
virtual void allBordesClicked();
virtual void buttonClicked(bool);
- void editBorderClicked();
+ virtual void editBorderClicked();
protected:
void setItemEvent(BaseDesignIntf *item);
void properyChangedEvent(const QString &property, const QVariant &oldValue, const QVariant &newValue);
BaseDesignIntf::BorderLines createBorders();
+ BaseDesignIntf *m_item;
private:
void initEditor();
void updateValues(BaseDesignIntf::BorderLines borders);
@@ -66,7 +67,7 @@ private:
QAction* m_BorderEditor;
bool m_changing;
int m_borders;
- BaseDesignIntf *itm;
+
};
#ifdef HAVE_REPORT_DESIGNER
@@ -79,6 +80,7 @@ protected slots:
void buttonClicked(bool);
void noBordesClicked();
void allBordesClicked();
+ void editBorderClicked();
private:
ReportDesignWidget* m_reportEditor;
diff --git a/limereport/items/images/border_settings.png b/limereport/items/images/border_settings.png
new file mode 100644
index 0000000..a740874
Binary files /dev/null and b/limereport/items/images/border_settings.png differ
diff --git a/limereport/items/lrbordereditor.cpp b/limereport/items/lrbordereditor.cpp
index e8e2af3..63d8b88 100644
--- a/limereport/items/lrbordereditor.cpp
+++ b/limereport/items/lrbordereditor.cpp
@@ -2,181 +2,155 @@
#include "ui_lrbordereditor.h"
#include
#include "lrbasedesignintf.h"
-lrbordereditor::lrbordereditor(QWidget *parent) :
+
+namespace LimeReport{
+
+BorderEditor::BorderEditor(QWidget *parent) :
QDialog(parent),
- ui(new Ui::lrbordereditor)
+ ui(new Ui::BorderEditor),
+ m_borderStyle(1),
+ m_borderWidth(1)
{
ui->setupUi(this);
-
- connect(ui->borderFrame,SIGNAL(borderSideClicked(int, bool)), this, SLOT(checkToolButtons(int, bool)));
+ connect(
+ ui->borderFrame, SIGNAL(borderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool)),
+ this, SLOT(checkToolButtons(LimeReport::BaseDesignIntf::BorderSide, bool))
+ );
}
-void lrbordereditor::loadItem(LimeReport::BaseDesignIntf *i)
+void BorderEditor::loadItem(LimeReport::BaseDesignIntf *item)
{
- item = i;
- if(item->borderLines() & LimeReport::BaseDesignIntf::TopLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,true);
+ m_item = item;
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::TopLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::LeftLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::RightLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::BottomLine);
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::LeftLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,true);
-
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::RightLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,true);
-
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::BottomLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,true);
- }
QPen pen;
pen.setWidthF(item->borderLineSize());
pen.setColor(item->borderColor());
pen.setStyle((Qt::PenStyle)item->borderStyle());
ui->borderFrame->setPen(pen);
- border_color = item->borderColor().name();
+ m_borderColor = item->borderColor().name();
ui->listWidget->setCurrentRow((Qt::PenStyle)item->borderStyle());
ui->comboBox->setCurrentText(QString::number(item->borderLineSize()));
- borderWidth = ui->comboBox->currentText().toDouble();
- borderStyle =ui->listWidget->currentRow();
- ui->pushButton->setStyleSheet(QString("#pushButton{background-color:%1;}").arg(border_color));
+ m_borderWidth = ui->comboBox->currentText().toDouble();
+ m_borderStyle =ui->listWidget->currentRow();
+ ui->colorIndicator->setStyleSheet(QString("background-color:%1;").arg(m_borderColor));
}
-LimeReport::BaseDesignIntf::BorderLines lrbordereditor::borderSides()
+LimeReport::BaseDesignIntf::BorderLines BorderEditor::borderSides()
{
int borders = 0;
- borders += (ui->topLine->isChecked())?LimeReport::BaseDesignIntf::TopLine:0;
- borders += (ui->bottomLine->isChecked())?LimeReport::BaseDesignIntf::BottomLine:0;
- borders += (ui->leftLine->isChecked())?LimeReport::BaseDesignIntf::LeftLine:0;
- borders += (ui->rightLine->isChecked())?LimeReport::BaseDesignIntf::RightLine:0;
- return (LimeReport::BaseDesignIntf::BorderLines)borders;
+ borders += (ui->topLine->isChecked()) ? LimeReport::BaseDesignIntf::TopLine : 0;
+ borders += (ui->bottomLine->isChecked()) ? LimeReport::BaseDesignIntf::BottomLine : 0;
+ borders += (ui->leftLine->isChecked()) ? LimeReport::BaseDesignIntf::LeftLine : 0;
+ borders += (ui->rightLine->isChecked()) ? LimeReport::BaseDesignIntf::RightLine : 0;
+ return (LimeReport::BaseDesignIntf::BorderLines) borders;
}
-LimeReport::BaseDesignIntf::BorderStyle lrbordereditor::border_style()
+LimeReport::BaseDesignIntf::BorderStyle BorderEditor::borderStyle()
{
- return (LimeReport::BaseDesignIntf::BorderStyle)borderStyle;
+ return (LimeReport::BaseDesignIntf::BorderStyle) m_borderStyle;
}
-QString lrbordereditor::borderColor()
+QString BorderEditor::borderColor()
{
- return border_color;
+ return m_borderColor;
}
-double lrbordereditor::border_width()
+double BorderEditor::borderWidth()
{
- return borderWidth;
+ return m_borderWidth;
}
-lrbordereditor::~lrbordereditor()
+BorderEditor::~BorderEditor()
{
delete ui;
}
-void lrbordereditor::on_listWidget_currentRowChanged(int currentRow)
+void BorderEditor::on_listWidget_currentRowChanged(int currentRow)
{
QPen pen = ui->borderFrame->pen();
pen.setStyle((Qt::PenStyle)currentRow);
- borderStyle = currentRow;
+ m_borderStyle = currentRow;
ui->borderFrame->setPen(pen);
-
-
}
-
-void lrbordereditor::on_comboBox_currentTextChanged(const QString &arg1)
+void BorderEditor::on_comboBox_currentTextChanged(const QString &arg1)
{
QPen pen = ui->borderFrame->pen();
pen.setWidthF(arg1.toDouble());
ui->borderFrame->setPen(pen);
- borderWidth = arg1.toDouble();
+ m_borderWidth = arg1.toDouble();
}
-
-void lrbordereditor::on_pushButton_clicked()
+void BorderEditor::checkToolButtons(LimeReport::BaseDesignIntf::BorderSide side, bool check)
{
- QColorDialog cd(this);
- if(cd.exec() == QDialog::Rejected)return;
- QPen pen = ui->borderFrame->pen();
- pen.setColor(cd.selectedColor().name());
- border_color = pen.color().name();
-
- ui->pushButton->setStyleSheet(QString("#pushButton{background-color:%1;}").arg(border_color));
- ui->borderFrame->setPen(pen);
-}
-
-
-void lrbordereditor::on_toolButton_4_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,true);
- QPen pen = ui->borderFrame->pen();
-
- ui->borderFrame->setPen(pen);
-}
-
-
-void lrbordereditor::on_noLines_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,false);
-
-}
-
-
-void lrbordereditor::on_topLine_clicked()
-{
-
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,ui->topLine->isChecked());
-
-}
-
-void lrbordereditor::checkToolButtons(int side, bool check)
-{
-
switch(side)
{
- case LimeReport::BaseDesignIntf::BorderSide::TopLine:
- {
- ui->topLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::BottomLine:
- {
- ui->bottomLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::LeftLine:
- {
- ui->leftLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::RightLine:
- {
- ui->rightLine->setChecked(check);
- }break;
+ case BaseDesignIntf::BorderSide::TopLine:
+ ui->topLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::BottomLine:
+ ui->bottomLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::LeftLine:
+ ui->leftLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::RightLine:
+ ui->rightLine->setChecked(check);
+ break;
}
}
+void BorderEditor::on_topLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, checked);
+}
-void lrbordereditor::on_bottomLine_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,ui->bottomLine->isChecked());
+void BorderEditor::on_bottomLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::BottomLine, checked);
+}
+
+void BorderEditor::on_leftLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::LeftLine, checked);
+}
+
+void BorderEditor::on_rightLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::RightLine, checked);
}
-void lrbordereditor::on_leftLine_clicked()
+void BorderEditor::on_allLines_clicked()
{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,ui->leftLine->isChecked());
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine, true);
+}
+
+void BorderEditor::on_noLines_clicked()
+{
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine, false);
}
-void lrbordereditor::on_toolButton_3_clicked()
+void BorderEditor::on_selectColor_clicked()
{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,ui->rightLine->isChecked());
+ QColorDialog cd(this);
+ if(cd.exec() == QDialog::Rejected) return;
+ QPen pen = ui->borderFrame->pen();
+ pen.setColor(cd.selectedColor().name());
+ m_borderColor = pen.color().name();
+ ui->colorIndicator->setStyleSheet(QString("background-color:%1;").arg(m_borderColor));
+ ui->borderFrame->setPen(pen);
}
+} // namespace LimeReport
diff --git a/limereport/items/lrbordereditor.h b/limereport/items/lrbordereditor.h
index 3158b48..2baf2f3 100644
--- a/limereport/items/lrbordereditor.h
+++ b/limereport/items/lrbordereditor.h
@@ -3,54 +3,47 @@
#include
#include "lrbasedesignintf.h"
+
+namespace LimeReport{
+
namespace Ui {
-class lrbordereditor;
+ class BorderEditor;
}
-class LIMEREPORT_EXPORT lrbordereditor : public QDialog
+
+class LIMEREPORT_EXPORT BorderEditor : public QDialog
{
Q_OBJECT
public:
- explicit lrbordereditor(QWidget *parent = nullptr);
- void loadItem(LimeReport::BaseDesignIntf *i);
+ explicit BorderEditor(QWidget *parent = nullptr);
+ void loadItem(LimeReport::BaseDesignIntf *item);
LimeReport::BaseDesignIntf::BorderLines borderSides();
- LimeReport::BaseDesignIntf::BorderStyle border_style();
+ LimeReport::BaseDesignIntf::BorderStyle borderStyle();
QString borderColor();
- double border_width();
-
-
- ~lrbordereditor();
+ double borderWidth();
+ ~BorderEditor();
private slots:
void on_listWidget_currentRowChanged(int currentRow);
-
void on_comboBox_currentTextChanged(const QString &arg1);
-
- void on_pushButton_clicked();
-
- void on_toolButton_4_clicked();
-
void on_noLines_clicked();
-
- void on_topLine_clicked();
- void checkToolButtons(int side, bool check);
-
- void on_bottomLine_clicked();
-
- void on_leftLine_clicked();
-
- void on_toolButton_3_clicked();
+ void on_topLine_clicked(bool checked);
+ void on_bottomLine_clicked(bool checked);
+ void on_leftLine_clicked(bool checked);
+ void on_rightLine_clicked(bool checked);
+ void on_allLines_clicked();
+ void checkToolButtons(LimeReport::BaseDesignIntf::BorderSide side, bool check);
+ void on_selectColor_clicked();
private:
- Ui::lrbordereditor *ui;
- LimeReport::BaseDesignIntf *item;
- QString border_color;
- int borderStyle = 1;
- double borderWidth = 1;
-
-
+ Ui::BorderEditor *ui;
+ LimeReport::BaseDesignIntf *m_item;
+ QString m_borderColor;
+ int m_borderStyle;
+ double m_borderWidth;
};
+} // namespace LimeReport
#endif // LRBORDEREDITOR_H
diff --git a/limereport/items/lrbordereditor.ui b/limereport/items/lrbordereditor.ui
index 7cd7a39..fb975d3 100644
--- a/limereport/items/lrbordereditor.ui
+++ b/limereport/items/lrbordereditor.ui
@@ -1,13 +1,13 @@
- lrbordereditor
-
+ LimeReport::BorderEditor
+
0
0
381
- 311
+ 352
@@ -31,7 +31,7 @@
No lines
-
+
:/report/images/noLines:/report/images/noLines
@@ -46,12 +46,12 @@
-
-
+
Outline
-
+
:/report/images/allLines:/report/images/allLines
@@ -81,7 +81,7 @@
...
-
+
:/report/images/topLine:/report/images/topLine
@@ -108,7 +108,7 @@
...
-
+
:/report/images/bottomLine:/report/images/bottomLine
@@ -119,7 +119,7 @@
-
-
+
-
@@ -129,7 +129,7 @@
...
-
+
:/report/images/leftLine:/report/images/leftLine
@@ -156,7 +156,7 @@
...
-
+
:/report/images/rightLine:/report/images/rightLine
@@ -319,14 +319,34 @@
-
-
-
- #pushButton{background-color: black;}
-
-
- Select...
-
-
+
+
-
+
+
+
+ 20
+ 20
+
+
+
+
+ 10
+ 10
+
+
+
+ background-color: rgb(0, 0, 0);
+
+
+
+ -
+
+
+ Select
+
+
+
+
@@ -342,46 +362,43 @@
- BorderFrameEditor
+ LimeReport::BorderFrameEditor
QWidget
-
+
1
-
-
-
-
+
buttonBox
accepted()
- lrbordereditor
+ LimeReport::BorderEditor
accept()
- 253
- 255
+ 119
+ 322
- 219
- 275
+ 377
+ 309
buttonBox
rejected()
- lrbordereditor
+ LimeReport::BorderEditor
reject()
- 316
- 258
+ 48
+ 334
- 345
- 277
+ 66
+ 348
diff --git a/limereport/items/lrborderframeeditor.cpp b/limereport/items/lrborderframeeditor.cpp
new file mode 100644
index 0000000..46fd9b9
--- /dev/null
+++ b/limereport/items/lrborderframeeditor.cpp
@@ -0,0 +1,181 @@
+#include "lrborderframeeditor.h"
+#include "ui_lrborderframeeditor.h"
+#include
+#include
+#include
+#include
+#include "lrbasedesignintf.h"
+#include "lrbordereditor.h"
+
+namespace LimeReport{
+
+BorderFrameEditor::BorderFrameEditor(QWidget *parent)
+ : QWidget(parent)
+ , ui(new Ui::BorderFrameEditor)
+{
+ ui->setupUi(this);
+ scene = new QGraphicsScene(ui->graphicsView);
+
+ QRect vRect = rect();
+
+ //Draw corder lines
+ //topLeft
+ scene->addLine(10, 5, 10, 10, QPen(Qt::gray));
+ scene->addLine(5, 10, 10, 10, QPen(Qt::gray));
+ //bottomLeft
+ scene->addLine(10,vRect.bottom() -5, 10, vRect.bottom()-10, QPen(Qt::gray));
+ scene->addLine(5,vRect.bottom()-10, 10, vRect.bottom()-10, QPen(Qt::gray));
+ //bottomRight
+ scene->addLine(vRect.right() - 10, vRect.bottom() - 5, vRect.right()- 10, vRect.bottom() - 10, QPen(Qt::gray));
+ scene->addLine(vRect.right() - 5, vRect.bottom() - 10, vRect.right() - 10, vRect.bottom() - 10, QPen(Qt::gray));
+ //topRight
+ scene->addLine(vRect.width() - 10, 5, vRect.width() - 10, 10, QPen(Qt::gray));
+ scene->addLine(vRect.width() - 5, 10, vRect.width() - 10, 10, QPen(Qt::gray));
+ scene->setSceneRect(vRect);
+ ui->graphicsView->setScene(scene);
+ QGraphicsSimpleTextItem * io = new QGraphicsSimpleTextItem();
+ io->setAcceptedMouseButtons(Qt::LeftButton);
+ io->setPos(scene->sceneRect().center());
+ io->setText(tr("Text"));
+ scene->addItem(io);
+
+ QRectF bR = io->sceneBoundingRect();
+ io->setPos( scene->sceneRect().center().x() - bR.width()/2, scene->sceneRect().center().y() - bR.height()/2 );
+ connect(
+ this, SIGNAL(borderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool)),
+ this, SLOT(slotBorderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool))
+ );
+
+}
+
+BorderFrameEditor::~BorderFrameEditor()
+{
+ delete ui;
+}
+
+void BorderFrameEditor::setPen(QPen pen)
+{
+ m_pen = pen;
+ updateBorders();
+}
+
+QPen BorderFrameEditor::pen()
+{
+ return m_pen;
+}
+
+void BorderFrameEditor::setAllLines()
+{
+ if (!topLine)
+ topLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::TopLine);
+ if (!leftLine)
+ leftLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::LeftLine);
+ if (!bottomLine)
+ bottomLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::BottomLine);
+ if (!rightLine)
+ rightLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::RightLine);
+}
+
+void BorderFrameEditor::unSetAllLines()
+{
+ if (topLine){
+ scene->removeItem(topLine);
+ topLine = NULL;
+ }
+ if (leftLine){
+ scene->removeItem(leftLine);
+ leftLine = NULL;
+ }
+ if (bottomLine){
+ scene->removeItem(bottomLine);
+ bottomLine = NULL;
+ }
+ if (rightLine){
+ scene->removeItem(rightLine);
+ rightLine = NULL;
+ }
+
+}
+
+void BorderFrameEditor::mousePressEvent(QMouseEvent *event)
+{
+ if (event->x() >= 10 && event->y() <30)
+ emit borderSideClicked(BaseDesignIntf::BorderSide::TopLine, !topLine);
+
+ if ((event->x() >= 10 && event->x() < 30) && (event->y() > 10))
+ emit borderSideClicked(BaseDesignIntf::BorderSide::LeftLine, !leftLine);
+
+ if (event->x() >= 10 && (event->y() >80 && event->y() < rect().bottom()))
+ emit borderSideClicked(BaseDesignIntf::BorderSide::BottomLine, !bottomLine);
+
+ if ((event->x() >= 130 && event->x() < rect().width()) && event->y() > 10)
+ emit borderSideClicked(BaseDesignIntf::BorderSide::RightLine, !rightLine);
+}
+
+void BorderFrameEditor::slotBorderSideClicked(BaseDesignIntf::BorderSide side, bool show)
+{
+
+ switch(side){
+
+ case BaseDesignIntf::BorderSide::TopLine:
+ if (show){
+ if (!topLine) topLine = createSideLine(side);
+ } else {
+ if (topLine) scene->removeItem(topLine);
+ topLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::LeftLine:
+ if (show){
+ if (!leftLine) leftLine = createSideLine(side);
+ } else {
+ if (leftLine) scene->removeItem(leftLine);
+ leftLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::BottomLine:
+ if (show){
+ if (!bottomLine) bottomLine = createSideLine(side);
+ } else {
+ if (bottomLine) scene->removeItem(bottomLine);
+ bottomLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::RightLine:
+ if (show){
+ if (!rightLine) rightLine = createSideLine(side);
+ } else {
+ if(rightLine) scene->removeItem(rightLine);
+ rightLine = NULL;
+ }
+
+ }
+ updateBorders();
+}
+
+QGraphicsLineItem *BorderFrameEditor::createSideLine(LimeReport::BaseDesignIntf::BorderSide side)
+{
+ switch(side){
+ case BaseDesignIntf::BorderSide::TopLine:
+ return scene->addLine(QLineF(10, 10, rect().width() - 10, 10), m_pen);
+ case BaseDesignIntf::BorderSide::LeftLine:
+ return scene->addLine(QLineF(10, 10, 10, rect().height() - 10), m_pen);
+ case BaseDesignIntf::BorderSide::RightLine:
+ return scene->addLine(QLineF(rect().width() - 10, 10 ,rect().width() - 10, rect().height() - 10), m_pen);
+ case BaseDesignIntf::BorderSide::BottomLine:
+ return scene->addLine(QLineF(10, rect().bottom() - 10, rect().width() - 10, rect().bottom() - 10), m_pen);
+ }
+}
+
+void BorderFrameEditor::updateBorders()
+{
+ if (topLine) topLine->setPen(m_pen);
+ if (leftLine) leftLine->setPen(m_pen);
+ if (bottomLine) bottomLine->setPen(m_pen);
+ if (rightLine) rightLine->setPen(m_pen);
+}
+
+} //namespace LimeReport
diff --git a/limereport/items/borderframeeditor.h b/limereport/items/lrborderframeeditor.h
similarity index 61%
rename from limereport/items/borderframeeditor.h
rename to limereport/items/lrborderframeeditor.h
index f0beae8..9333677 100644
--- a/limereport/items/borderframeeditor.h
+++ b/limereport/items/lrborderframeeditor.h
@@ -5,9 +5,9 @@
#include
#include
#include "lrbasedesignintf.h"
-QT_BEGIN_NAMESPACE
+namespace LimeReport{
+
namespace Ui { class BorderFrameEditor; }
-QT_END_NAMESPACE
class BorderFrameEditor : public QWidget
{
@@ -23,20 +23,24 @@ public:
protected:
void mousePressEvent(QMouseEvent *event);
signals:
- void borderSideClicked(int side,bool show);
+ void borderSideClicked(LimeReport::BaseDesignIntf::BorderSide side, bool show);
private slots:
- void SlotBorderSideClicked(int side, bool show);
+ void slotBorderSideClicked(LimeReport::BaseDesignIntf::BorderSide side, bool show);
+private:
+ QGraphicsLineItem *createSideLine(LimeReport::BaseDesignIntf::BorderSide side);
+ void updateBorders();
private:
Ui::BorderFrameEditor *ui;
- QGraphicsScene *scene;
- QGraphicsLineItem *topLine = NULL
+ QGraphicsScene *scene;
+ QGraphicsLineItem *topLine = NULL
,*bottomLine = NULL
,*leftLine = NULL
,*rightLine = NULL;
- QPen m_pen;
- void updateBorders();
+ QPen m_pen;
+
};
+} // namespace LimeReport
#endif // WIDGET
diff --git a/limereport/items/borderframeeditor.ui b/limereport/items/lrborderframeeditor.ui
similarity index 94%
rename from limereport/items/borderframeeditor.ui
rename to limereport/items/lrborderframeeditor.ui
index 3324d90..3f70f12 100644
--- a/limereport/items/borderframeeditor.ui
+++ b/limereport/items/lrborderframeeditor.ui
@@ -1,7 +1,7 @@
- BorderFrameEditor
-
+ LimeReport::BorderFrameEditor
+
0
diff --git a/limereport/items/lrpageeditor.cpp b/limereport/items/lrpageeditor.cpp
index 0efe6f2..3748e7a 100644
--- a/limereport/items/lrpageeditor.cpp
+++ b/limereport/items/lrpageeditor.cpp
@@ -1,14 +1,15 @@
#include "lrpageeditor.h"
#include "ui_lrpageeditor.h"
+#include "lrpagedesignintf.h"
#include "lrpageitemdesignintf.h"
#include
#include
-using namespace LimeReport;
+namespace LimeReport{
-lrpageeditor::lrpageeditor(QWidget *parent, PageItemDesignIntf *page) :
+PageEditor::PageEditor(QWidget *parent, LimeReport::PageItemDesignIntf *page) :
QDialog(parent),
- ui(new Ui::lrpageeditor)
+ ui(new Ui::PageEditor)
{
ui->setupUi(this);
m_page = page;
@@ -19,10 +20,10 @@ lrpageeditor::lrpageeditor(QWidget *parent, PageItemDesignIntf *page) :
ui->format->addItem(pageSizes.key(i));
}
ui->format->setCurrentIndex(m_page->pageSize());
- ui->width->setValue(m_page->width() / Const::mmFACTOR);
- ui->height->setValue(m_page->height() / Const::mmFACTOR);
- ui->portrait->setChecked(m_page->pageOrientation() == PageItemDesignIntf::Portrait);
- ui->landscape->setChecked(m_page->pageOrientation() == PageItemDesignIntf::Landscape);
+ ui->width->setValue(m_page->width() / m_page->unitFactor());
+ ui->height->setValue(m_page->height() / m_page->unitFactor());
+ ui->portrait->setChecked(m_page->pageOrientation() == LimeReport::PageItemDesignIntf::Portrait);
+ ui->landscape->setChecked(m_page->pageOrientation() == LimeReport::PageItemDesignIntf::Landscape);
//Margins
ui->marginTop->setValue(m_page->topMargin());
ui->marginRight->setValue(m_page->rightMargin());
@@ -36,18 +37,17 @@ lrpageeditor::lrpageeditor(QWidget *parent, PageItemDesignIntf *page) :
ui->fullPage->setChecked(m_page->fullPage());
}
-lrpageeditor::~lrpageeditor()
+PageEditor::~PageEditor()
{
delete ui;
}
-void lrpageeditor::applyChanges()
+void PageEditor::applyChanges()
{
- m_page->setPageSize(static_cast(ui->format->currentIndex()));
- m_page->setWidth(ui->width->value()* Const::mmFACTOR);
- m_page->setHeight(ui->height->value()* Const::mmFACTOR);
- m_page->setPageOrientation(ui->portrait->isChecked()?PageItemDesignIntf::Portrait : PageItemDesignIntf::Landscape);
-
+ m_page->setPageSize(static_cast(ui->format->currentIndex()));
+ m_page->setWidth(ui->width->value() * LimeReport::Const::mmFACTOR);
+ m_page->setHeight(ui->height->value() * LimeReport::Const::mmFACTOR);
+ m_page->setPageOrientation(ui->portrait->isChecked()? LimeReport::PageItemDesignIntf::Portrait : LimeReport::PageItemDesignIntf::Landscape);
m_page->setTopMargin(ui->marginTop->value());
m_page->setBottomMargin(ui->marginBottom->value());
m_page->setRightMargin(ui->marginRight->value());
@@ -55,53 +55,56 @@ void lrpageeditor::applyChanges()
m_page->setDropPrinterMargins(ui->dropPrinterMargins->isChecked());
ui->endlessHeight->setChecked(ui->endlessHeight->isChecked());
m_page->setExtendedHeight(ui->extendedHeight->value());
+ ui->width->setValue(m_page->getItemWidth());
+ ui->height->setValue(m_page->getItemHeight());
}
-void lrpageeditor::on_buttonBox_accepted()
-{
- applyChanges();
- accept();
-
-}
-
-QSizeF lrpageeditor::getRectByPageSize(const PageItemDesignIntf::PageSize& size)
+QSizeF PageEditor::getRectByPageSize(const LimeReport::PageItemDesignIntf::PageSize& size)
{
if (size != PageItemDesignIntf::Custom) {
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
- printer.setOrientation(ui->portrait->isChecked()?QPrinter::Portrait : QPrinter::Landscape);
+ printer.setOrientation(ui->portrait->isChecked() ? QPrinter::Portrait : QPrinter::Landscape);
printer.setPaperSize((QPrinter::PageSize)size);
- return QSizeF(printer.paperSize(QPrinter::Millimeter).width() * 10,
- printer.paperSize(QPrinter::Millimeter).height() * 10);
+ return QSizeF(printer.paperSize(QPrinter::Millimeter).width() * m_page->unitFactor(),
+ printer.paperSize(QPrinter::Millimeter).height() * m_page->unitFactor());
#else
- QPageSize pageSize = QPageSize((QPageSize::PageSizeId)size);
- qreal width = pageSize.size(QPageSize::Millimeter).width() * 10;
- qreal height = pageSize.size(QPageSize::Millimeter).height() * 10;
- return QSizeF(m_page->pageOrientation() == PageItemDesignIntf::Portrait ? width : height,
- m_page->pageOrientation() == PageItemDesignIntf::Orientation::Portrait ? height : width);
-
-// printer.setPageOrientation((QPageLayout::Orientation)pageOrientation());
-// printer.setPageSize(QPageSize((QPageSize::PageSizeId)size));
-// return QSizeF(printer.pageLayout().pageSize().size(QPageSize::Millimeter).width() * 10,
-// printer.pageLayout().pageSize().size(QPageSize::Millimeter).height() * 10);
+ printer.setPageOrientation((QPageLayout::Orientation)m_page->pageOrientation());
+ printer.setPageSize(QPageSize((QPageSize::PageSizeId)size));
+ return QSizeF(printer.pageLayout().pageSize().size(QPageSize::Millimeter).width() * m_page->unitFactor(),
+ printer.pageLayout().pageSize().size(QPageSize::Millimeter).height() * m_page->unitFactor());
#endif
- }
-
- else {
- return QSizeF(width(),height());
+ } else {
+ return QSizeF(m_page->getItemWidth(), m_page->getItemHeight());
}
}
-void lrpageeditor::on_format_currentIndexChanged(int index)
+
+void PageEditor::on_format_currentIndexChanged(int index)
{
QPageSize ps = *new QPageSize();
if(ui->format->currentText() != "Custom")
{
- QSizeF pageSize = getRectByPageSize(static_cast(index));
- ui->width->setValue(pageSize.width()/10);
- ui->height->setValue(pageSize.height()/10);
+ QSizeF pageSize = getRectByPageSize(static_cast(index));
+ ui->width->setValue(pageSize.width() / m_page->unitFactor());
+ ui->height->setValue(pageSize.height() / m_page->unitFactor());
}
}
+
+void PageEditor::on_buttonBox_clicked(QAbstractButton *button)
+{
+ switch(ui->buttonBox->buttonRole(button)){
+ case QDialogButtonBox::ApplyRole:
+ applyChanges();
+ break;
+ case QDialogButtonBox::AcceptRole:
+ applyChanges();
+ accept();
+ }
+
+}
+
+} // namespace
diff --git a/limereport/items/lrpageeditor.h b/limereport/items/lrpageeditor.h
index d1ed8d5..f2c07c2 100644
--- a/limereport/items/lrpageeditor.h
+++ b/limereport/items/lrpageeditor.h
@@ -4,28 +4,33 @@
#include
#include "lrpageitemdesignintf.h"
#include
+namespace LimeReport{
+
namespace Ui {
-class lrpageeditor;
+ class PageEditor;
}
-class LIMEREPORT_EXPORT lrpageeditor : public QDialog
+class LIMEREPORT_EXPORT PageEditor : public QDialog
{
Q_OBJECT
public:
- explicit lrpageeditor(QWidget *parent = nullptr,LimeReport::PageItemDesignIntf *page = nullptr);
- ~lrpageeditor();
+ explicit PageEditor(QWidget *parent = nullptr,LimeReport::PageItemDesignIntf *page = nullptr);
+ ~PageEditor();
private slots:
- void on_buttonBox_accepted();
+// void on_buttonBox_accepted();
void on_format_currentIndexChanged(int index);
+ void on_buttonBox_clicked(QAbstractButton *button);
private:
- Ui::lrpageeditor *ui;
+ Ui::PageEditor *ui;
LimeReport::PageItemDesignIntf* m_page;
void applyChanges();
QSizeF getRectByPageSize(const LimeReport::PageItemDesignIntf::PageSize& size);
};
+} // namespace LimeReport
+
#endif // LRPAGEEDITOR_H
diff --git a/limereport/items/lrpageeditor.ui b/limereport/items/lrpageeditor.ui
index 70ca440..e42f06c 100644
--- a/limereport/items/lrpageeditor.ui
+++ b/limereport/items/lrpageeditor.ui
@@ -1,13 +1,13 @@
- lrpageeditor
-
+ LimeReport::PageEditor
+
0
0
306
- 322
+ 356
@@ -131,6 +131,19 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
@@ -297,7 +310,7 @@
Qt::Horizontal
- QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+ QDialogButtonBox::Apply|QDialogButtonBox::Close|QDialogButtonBox::Ok
@@ -305,22 +318,6 @@
-
- buttonBox
- rejected()
- lrpageeditor
- reject()
-
-
- 325
- 312
-
-
- 286
- 274
-
-
-
endlessHeight
clicked(bool)
@@ -328,12 +325,12 @@
setEnabled(bool)
- 60
- 50
+ 72
+ 81
- 130
- 85
+ 131
+ 134
diff --git a/limereport/limereport.pri b/limereport/limereport.pri
index 524d3d8..c86b575 100644
--- a/limereport/limereport.pri
+++ b/limereport/limereport.pri
@@ -80,7 +80,7 @@ SOURCES += \
$$REPORT_PATH/lraxisdata.cpp \
$$REPORT_PATH/lrpreparedpages.cpp \
$$REPORT_PATH/items/lrpageeditor.cpp \
- $$REPORT_PATH/items/borderframeeditor.cpp \
+ $$REPORT_PATH/items/lrborderframeeditor.cpp \
$$REPORT_PATH/items/lrbordereditor.cpp
CONFIG(staticlib) {
@@ -181,7 +181,7 @@ HEADERS += \
$$REPORT_PATH/lraxisdata.h \
$$REPORT_PATH/lrpreparedpagesintf.h \
$$REPORT_PATH/items/lrpageeditor.h \
- $$REPORT_PATH/items/borderframeeditor.h \
+ $$REPORT_PATH/items/lrborderframeeditor.h \
$$REPORT_PATH/items/lrbordereditor.h
CONFIG(staticlib) {
@@ -207,7 +207,7 @@ FORMS += \
$$REPORT_PATH/items/lrimageitemeditor.ui \
$$REPORT_PATH/scripteditor/lrscripteditor.ui \
$$REPORT_PATH/items/lrpageeditor.ui \
- $$REPORT_PATH/items/borderframeeditor.ui \
+ $$REPORT_PATH/items/lrborderframeeditor.ui \
$$REPORT_PATH/items/lrbordereditor.ui
RESOURCES += \
diff --git a/limereport/lrbasedesignintf.cpp b/limereport/lrbasedesignintf.cpp
index d31165f..d66efeb 100644
--- a/limereport/lrbasedesignintf.cpp
+++ b/limereport/lrbasedesignintf.cpp
@@ -431,7 +431,7 @@ void BaseDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsItem *o
setupPainter(ppainter);
drawBorder(ppainter, rect());
if(m_shadow)
- drawShadow(ppainter, rect());
+ drawShadow(ppainter, rect(), 6);
// if (m_joinMarkerOn) { drawMarker(ppainter, Const::JOIN_COLOR);}
// if (isSelected() && !m_joinMarkerOn) {drawMarker(ppainter, Const::SELECTION_COLOR);}
drawResizeZone(ppainter);
@@ -1145,10 +1145,9 @@ void BaseDesignIntf::drawBorder(QPainter *painter, QRectF rect) const
painter->restore();
}
-void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect) const
+void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect, qreal shadowSize) const
{
-
- qreal shWidth = rect.width()/100;
+ qreal shWidth = shadowSize;
QRectF rshadow(rect.topRight() + QPointF(0, shWidth),
rect.bottomRight() + QPointF(shWidth, 0));
QLinearGradient rgrad(rshadow.topLeft(), rshadow.topRight());
@@ -1167,8 +1166,6 @@ void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect) const
cgrad.setColorAt(0.0, QColor(0,0,0,255));
cgrad.setColorAt(1.0, QColor(0,0,0,0));
painter->fillRect(cshadow, QBrush(cgrad));
-
-
}
void BaseDesignIntf::setGeometry(QRectF rect)
@@ -1486,7 +1483,7 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
menu.addSeparator();
QAction* noBordersAction = menu.addAction(QIcon(":/report/images/noLines"), tr("No borders"));
QAction* allBordersAction = menu.addAction(QIcon(":/report/images/allLines"), tr("All borders"));
- QAction* editBorderAction = menu.addAction(QIcon(":/report/images/allLines"), tr("Edit borders..."));
+ QAction* editBorderAction = menu.addAction(QIcon(":/report/images/borderEditor"), tr("Edit borders..."));
preparePopUpMenu(menu);
QAction* a = menu.exec(event->screenPos());
if (a){
@@ -1507,15 +1504,12 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
page->setBorders(BaseDesignIntf::NoLine);
if (a == allBordersAction)
page->setBorders(BaseDesignIntf::AllLines);
- if(a == editBorderAction)
+ if (a == editBorderAction)
{
- lrbordereditor be;
+ BorderEditor be;
be.loadItem(this);
- if(be.exec() == QDialog::Rejected)return;
- setBorderLinesFlags(be.borderSides());
- setBorderLineSize(be.border_width());
- setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.border_style());
- setBorderColor(be.borderColor());
+ if (be.exec() == QDialog::Rejected) return;
+ page->setBordersExt(be.borderSides(), be.borderWidth(), (LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle(), be.borderColor());
}
if (a == createHLayout)
page->addHLayout();
diff --git a/limereport/lrbasedesignintf.h b/limereport/lrbasedesignintf.h
index 44267c0..4314de9 100644
--- a/limereport/lrbasedesignintf.h
+++ b/limereport/lrbasedesignintf.h
@@ -389,7 +389,7 @@ protected:
void drawBorder(QPainter* painter, QRectF rect) const;
- void drawShadow(QPainter* painter, QRectF rect) const;
+ void drawShadow(QPainter* painter, QRectF rect, qreal shadowSize) const;
void drawDesignModeBorder(QPainter* painter, QRectF rect) const;
void drawRenderModeBorder(QPainter *painter, QRectF rect) const;
void drawResizeZone(QPainter*);
diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp
index 55907b4..bd0e583 100644
--- a/limereport/lrpagedesignintf.cpp
+++ b/limereport/lrpagedesignintf.cpp
@@ -1826,6 +1826,20 @@ void PageDesignIntf::setBorders(const BaseDesignIntf::BorderLines& border)
changeSelectedGroupProperty("borders", (int)border);
}
+void PageDesignIntf::setBordersExt(
+ const BaseDesignIntf::BorderLines& border,
+ const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style,
+ const QString color
+
+)
+{
+ changeSelectedGroupProperty("borders", (int)border);
+ changeSelectedGroupProperty("borderLineSize", borderWidth);
+ changeSelectedGroupProperty("borderStyle", style);
+ changeSelectedGroupProperty("borderColor", color);
+}
+
void PageDesignIntf::lockSelectedItems()
{
foreach(QGraphicsItem* graphicItem, selectedItems()){
diff --git a/limereport/lrpagedesignintf.h b/limereport/lrpagedesignintf.h
index 0a49b4d..c64b501 100644
--- a/limereport/lrpagedesignintf.h
+++ b/limereport/lrpagedesignintf.h
@@ -254,6 +254,11 @@ namespace LimeReport {
void setFont(const QFont &font);
void setTextAlign(const Qt::Alignment& alignment);
void setBorders(const BaseDesignIntf::BorderLines& border);
+ void setBordersExt(const BaseDesignIntf::BorderLines &border,
+ const double borderWidth,
+ const BaseDesignIntf::BorderStyle style,
+ const QString color
+ );
void lockSelectedItems();
void unlockSelectedItems();
void selectOneLevelItems();
diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp
index 0311707..57f05ae 100644
--- a/limereport/lrpageitemdesignintf.cpp
+++ b/limereport/lrpageitemdesignintf.cpp
@@ -98,38 +98,10 @@ void PageItemDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsIte
paintGrid(ppainter, rect);
ppainter->setPen(gridColor());
ppainter->drawRect(boundingRect());
- //Draw shadow
- qreal shWidth = boundingRect().width()/100;
- QRectF rshadow(boundingRect().topRight() + QPointF(0, shWidth),
- boundingRect().bottomRight() + QPointF(shWidth, 0));
- QLinearGradient rgrad(rshadow.topLeft(), rshadow.topRight());
- rgrad.setColorAt(0.0, QColor(0,0,0,255));
- rgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(rshadow, QBrush(rgrad));
- QRectF bshadow(boundingRect().bottomLeft() + QPointF(shWidth, 0),
- boundingRect().bottomRight() + QPointF(0, shWidth));
- QLinearGradient bgrad(bshadow.topLeft(), bshadow.bottomLeft());
- bgrad.setColorAt(0.0, QColor(0,0,0,255));
- bgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(bshadow, QBrush(bgrad));
- QRectF cshadow(boundingRect().bottomRight(),
- boundingRect().bottomRight() + QPointF(shWidth, shWidth));
- QRadialGradient cgrad(cshadow.topLeft(), shWidth, cshadow.topLeft());
- cgrad.setColorAt(0.0, QColor(0,0,0,255));
- cgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(cshadow, QBrush(cgrad));
- if (m_isExtendedInDesignMode){
- QPen pen;
- pen.setColor(Qt::red);
- pen.setStyle(Qt::DashLine);
- pen.setWidth(2);
- ppainter->setPen(pen);
- ppainter->drawLine(pageRect().bottomLeft(),pageRect().bottomRight());
- }
+ drawShadow(ppainter, boundingRect(), 10);
ppainter->restore();
}
-
if (itemMode() & PreviewMode) {
ppainter->save();
ppainter->fillRect(rect(), Qt::white);
@@ -145,8 +117,6 @@ void PageItemDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsIte
BaseDesignIntf::paint(ppainter,option,widget);
}
-
-
}
BaseDesignIntf *PageItemDesignIntf::createSameTypeItem(QObject *owner, QGraphicsItem *parent)
@@ -828,7 +798,7 @@ void PageItemDesignIntf::processPopUpAction(QAction *action)
}
if(action->text() == tr("Edit"))
{
- lrpageeditor pageEdit(NULL,this);
+ PageEditor pageEdit(NULL,this);
pageEdit.exec();
}
diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp
index 19c3a3e..58570bc 100644
--- a/limereport/lrreportdesignwidget.cpp
+++ b/limereport/lrreportdesignwidget.cpp
@@ -704,6 +704,16 @@ void ReportDesignWidget::setBorders(const BaseDesignIntf::BorderLines& borders)
activePage()->setBorders(borders);
}
+void ReportDesignWidget::setBordersExt(
+ const BaseDesignIntf::BorderLines& border,
+ const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style,
+ const QString color
+){
+ if (activePage())
+ activePage()->setBordersExt(border, borderWidth, style, color);
+}
+
void ReportDesignWidget::prepareReport()
{
m_report->scriptContext()->setInitScript(m_scriptEditor->toPlainText());
diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h
index 8057f13..9a5a68a 100644
--- a/limereport/lrreportdesignwidget.h
+++ b/limereport/lrreportdesignwidget.h
@@ -194,6 +194,8 @@ public slots:
void setFont(const QFont &font);
void setTextAlign(const bool &horizontalAlign, const Qt::AlignmentFlag &alignment);
void setBorders(const BaseDesignIntf::BorderLines& borders);
+ void setBordersExt(const BaseDesignIntf::BorderLines &border, const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style, const QString color);
void editSetting();
void setUseGrid(bool value);
void previewReport();
diff --git a/limereport/report.qrc b/limereport/report.qrc
index 89999d9..dc59710 100644
--- a/limereport/report.qrc
+++ b/limereport/report.qrc
@@ -186,5 +186,6 @@
images/designer.png
images/lock.png
images/unlock.png
+ images/border_settings.png
diff --git a/translations/limereport_ar.ts b/translations/limereport_ar.ts
index bf3a955..21a2348 100644
--- a/translations/limereport_ar.ts
+++ b/translations/limereport_ar.ts
@@ -8,17 +8,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -520,6 +509,120 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
@@ -1355,6 +1458,93 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ الصيغة
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LimeReport::PageFooter
@@ -3397,194 +3587,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- الصيغة
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/translations/limereport_es.ts b/translations/limereport_es.ts
index 7219087..e853314 100644
--- a/translations/limereport_es.ts
+++ b/translations/limereport_es.ts
@@ -8,17 +8,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -648,6 +637,120 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
@@ -1483,6 +1586,93 @@ p, li { white-space: pre-wrap; }
Exportar a PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ Formato
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Retrato
+
+
+
+ Apaisado (Horizontal)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Página completa
+
+
LimeReport::PageFooter
@@ -3527,194 +3717,4 @@ Esta vista previa ya no es válida.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- Formato
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Retrato
-
-
-
- Apaisado (Horizontal)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Página completa
-
-
-
-
-
-
diff --git a/translations/limereport_fr.ts b/translations/limereport_fr.ts
index b7d37b4..6c600d3 100644
--- a/translations/limereport_fr.ts
+++ b/translations/limereport_fr.ts
@@ -9,19 +9,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -567,67 +554,212 @@ p, li { white-space: pre-wrap; }
LimeReport::BaseDesignIntf
-
-
+
+
Verrouiller la géométrie d'un élément
-
+
Copier
-
+
Couper
-
+
Coller
-
+
Placer au premier-plan
-
+
Placer en arrière-plan
-
+
Créer une disposition horizontale
-
+
Créer une disposition verticale
-
+
Aucune bordure
-
+
Toutes les bordures
-
+
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
-
+
Connexion par défaut
@@ -954,51 +1086,51 @@ p, li { white-space: pre-wrap; }
LimeReport::DataSourceManager
-
+
La connexion "%1" n'est pas ouverte
-
-
-
-
+
+
+
+
Variable "%1" introuvable!
-
-
+
+
Paramètre inconnu %1 pour la variable %2 !
-
-
+
+
Source de donnée "%1" introuvable!
-
+
La connexion avec le nom "%1" existe déjà!
-
-
-
-
-
+
+
+
+
+
La source de donnée avec le nom "%1" existe déjà!
-
+
Base de données "%1 introuvable
-
+
Connexion invalide
@@ -1503,29 +1635,29 @@ p, li { white-space: pre-wrap; }
LimeReport::ImageItem
-
-
+
+
Edition
-
-
+
+
Filigrane
-
+
-
+
Image
-
+
Externe.
@@ -1599,37 +1731,37 @@ p, li { white-space: pre-wrap; }
LimeReport::ItemsBordersEditorWidget
-
+
ligne haute
-
+
Ligne basse
-
+
Ligne gauche
-
+
Ligne droite
-
+
Aucune bordure
-
+
Toutes les bordures
-
+
@@ -1637,12 +1769,12 @@ p, li { white-space: pre-wrap; }
LimeReport::MasterDetailProxyModel
-
+
Le champ: "%1"est introuvable dans la source de donnée enfant "%2"
-
+
Le champ: "%1"est introuvable dans la source de donnée principale "%2"
@@ -1650,7 +1782,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ModelToDataSource
-
+
Le modèle a été supprimé
@@ -1689,6 +1821,119 @@ p, li { white-space: pre-wrap; }
Exporter au format PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Paysage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page entière
+
+
LimeReport::PageFooter
@@ -1720,43 +1965,43 @@ p, li { white-space: pre-wrap; }
LimeReport::PageItemDesignIntf
-
-
+
+
Edition
-
+
Coller
-
-
+
+
Table de contenus
-
-
+
+
Réinitialiser le numéro de page
-
-
+
+
Page entière
-
-
+
+
Adapterr la taille de la page à l'imprimante
-
-
+
+
@@ -1976,7 +2221,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ProxyHolder
-
+
La source de donnée n'a pas été validée
@@ -2692,16 +2937,16 @@ p, li { white-space: pre-wrap; }
LimeReport::RectUnitPropItem
-
-
-
+
+
+
Largeur
-
-
-
+
+
+
Hauteur
@@ -3168,24 +3413,24 @@ Cet aperçu n'est plus valide.
-
+
Erreur
-
+
Indice de la page dépassé
-
-
+
+
Bande de données "%1 introuvable
-
-
+
+
Utilisation incorrecte de la fonction "%1"
@@ -3235,7 +3480,7 @@ Cet aperçu n'est plus valide.
-
+
Aperçu
@@ -3267,7 +3512,7 @@ Cet aperçu n'est plus valide.
-
+
@@ -3297,48 +3542,48 @@ Cet aperçu n'est plus valide.
-
+
Erreur
-
+
Nom de source de donnée est vide!
-
+
SQL est vide!
-
+
La source de donnée avec le nom "%1" existe déja!
-
+
Connexion par défaut
-
+
La source de donnée avec le nom "%1" existe déja
-
-
+
+
-
+
La connexion n'est pas spécifiée
-
+
Actualiser
@@ -3451,13 +3696,13 @@ Cet aperçu n'est plus valide.
LimeReport::ScriptEngineContext
-
+
Le dialogue avec le nom "%1" ne peut pas être crée
-
-
+
+
Erreur
@@ -3470,20 +3715,20 @@ Cet aperçu n'est plus valide.
Fonctions de groupe
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Valeur
-
+
Nom de la bande
@@ -3494,7 +3739,7 @@ Cet aperçu n'est plus valide.
-
+
Nom du champ
@@ -3506,125 +3751,125 @@ Cet aperçu n'est plus valide.
-
+
Champ "%1 introuvable dans %2!
-
+
Système
-
-
-
+
+
+
Nombre
-
-
-
-
-
+
+
+
+
+
-
+
Précision
-
-
-
-
+
+
+
+
Local
-
-
-
-
-
-
+
+
+
+
+
+
Date&Heure
-
+
Symbolde de la monnaie
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
General
-
-
-
+
+
+
Nom
-
+
Source de donnée
-
+
Valeur
-
+
Clé
-
+
Valeur de la clé
-
+
-
-
-
+
+
+
Identifiant unique
-
-
+
+
Contenu
-
+
Indenter
-
+
Nom de source de donnée
@@ -3819,18 +4064,18 @@ Cet aperçu n'est plus valide.
Masquer si vide
-
-
+
+
Erreur
-
+
L'élément texte " %1 " a toujours un copain " %2 "
-
+
Elément "%1" introuvable!
@@ -4073,32 +4318,32 @@ Cet aperçu n'est plus valide.
-
+
Connexion invalidé %1
-
+
Source de donnée principale "%1" introuvable!
-
+
Source de donnée principale "%1" introuvable!
-
+
Enfant
-
+
est enfant
-
+
Source de donnée "%1" introuvable!
@@ -4214,14 +4459,14 @@ Cet aperçu n'est plus valide.
-
-
+
+
-
-
+
+
Les éléments sélectionnés ont un parent différent
@@ -4231,12 +4476,12 @@ Cet aperçu n'est plus valide.
L'objet avec le nom "%1" existe déja!
-
+
La fonction %1 est introuvable ou contient des paramètres incorrects
-
+
Gestionnaire de source de donnée introuvable
@@ -4251,16 +4496,16 @@ Cet aperçu n'est plus valide.
-
-
+
+
-
-
+
+
@@ -4327,20 +4572,20 @@ Cet aperçu n'est plus valide.
Clair
-
+
par défaut
-
-
+
+
Millimètres
-
-
+
+
Pouces
@@ -4386,249 +4631,4 @@ Cet aperçu n'est plus valide.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Paysage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page entière
-
-
diff --git a/translations/limereport_pl.ts b/translations/limereport_pl.ts
index aca5301..9294011 100644
--- a/translations/limereport_pl.ts
+++ b/translations/limereport_pl.ts
@@ -9,19 +9,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -579,67 +566,212 @@ p, li { white-space: pre-wrap; }
LimeReport::BaseDesignIntf
-
-
+
+
Zablokuj geometrię pozycji
-
+
Kopiuj
-
+
Wytnij
-
+
Wklej
-
+
Przenieś na górę
-
+
Przenieś na dół
-
+
Utwórz układ poziomy
-
+
Utwórz układ pionowy
-
+
Bez obramowania
-
+
Pełne obramowanie
-
+
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
-
+
Domyślne połączenie
@@ -966,51 +1098,51 @@ p, li { white-space: pre-wrap; }
LimeReport::DataSourceManager
-
+
Połączenie "%1" nie jest otwarte
-
-
-
-
+
+
+
+
Zmienna "%1" nie znaleziona!
-
-
+
+
Nieznany parametr "%1" dla znalezionej zmiennej "%2"!
-
-
+
+
Źródło danych %1" nie znalezione!
-
+
Połączenie o nazwie "%1" już istnieje!
-
-
-
-
-
+
+
+
+
+
Źródło danych o nazwie "%1" już istnieje!
-
+
Baza danych "%1" nie znaleziona
-
+
Nieprawidłowe połączenie
@@ -1515,29 +1647,29 @@ p, li { white-space: pre-wrap; }
LimeReport::ImageItem
-
-
+
+
Edycja
-
-
+
+
Znak wodny
-
+
-
+
Obraz
-
+
Zewn.
@@ -1611,37 +1743,37 @@ p, li { white-space: pre-wrap; }
LimeReport::ItemsBordersEditorWidget
-
+
Górna krawędź
-
+
Dolna krawędź
-
+
Lewa krawędź
-
+
Prawa krawędź
-
+
Bez krawędzi
-
+
Wszystkie krawędzie
-
+
@@ -1649,12 +1781,12 @@ p, li { white-space: pre-wrap; }
LimeReport::MasterDetailProxyModel
-
+
Pole: "%1" nie znalezione w "%2" źródle danch dziecka
-
+
Pole: "%1" nie znalezione w "%2" głównym źródle danch
@@ -1662,7 +1794,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ModelToDataSource
-
+
Model danych jest zniszczony
@@ -1701,6 +1833,119 @@ p, li { white-space: pre-wrap; }
Eksport do PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Format
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Portret
+
+
+
+
+ Pejzaż
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cała strona
+
+
LimeReport::PageFooter
@@ -1732,43 +1977,43 @@ p, li { white-space: pre-wrap; }
LimeReport::PageItemDesignIntf
-
-
+
+
Edycja
-
+
Wklej
-
-
+
+
Strona to spis treści
-
-
+
+
Zresetuj numer strony
-
-
+
+
Cała strona
-
-
+
+
Ustaw rozmiar strony na drukarkę
-
-
+
+
@@ -1988,7 +2233,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ProxyHolder
-
+
Źródło danych zostało unieważnione
@@ -2704,16 +2949,16 @@ p, li { white-space: pre-wrap; }
LimeReport::RectUnitPropItem
-
-
-
+
+
+
Szerokość
-
-
-
+
+
+
Wysokość
@@ -3180,24 +3425,24 @@ Ten podgląd nie jest już prawidłowy.
-
+
Błąd
-
+
indeks strony poza zakresem
-
-
+
+
Sekcja danych "%1" nie znaleziona
-
-
+
+
Złe użycie funkcji %1
@@ -3247,7 +3492,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
Podgląd
@@ -3279,7 +3524,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
CSV
@@ -3309,48 +3554,48 @@ Ten podgląd nie jest już prawidłowy.
Ok
-
+
Błąd
-
+
Nazwa źródła danych jest pusta!
-
+
SQL jest pusty!
-
+
Źródło danych o nazwie: "%1" już istnieje!
-
+
Domyślne połączenie
-
+
Źródło danych o nazwie %1 już istnieje
-
-
+
+
Uwaga
-
+
Połączenie nie zostało określone
-
+
Odśwież
@@ -3463,13 +3708,13 @@ Ten podgląd nie jest już prawidłowy.
LimeReport::ScriptEngineContext
-
+
Okno dialogowe z nazwą:%1 nie można utworzyć
-
-
+
+
Błąd
@@ -3482,20 +3727,20 @@ Ten podgląd nie jest już prawidłowy.
FUNKCJE GRUPUJĄCE
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Wartość
-
+
Nazwa sekcji
@@ -3506,7 +3751,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
Nazwa pola
@@ -3518,125 +3763,125 @@ Ten podgląd nie jest już prawidłowy.
-
+
Pole %1 nie znalezione w %2!
-
+
SYSTEM
-
-
-
+
+
+
LICZBA
-
-
-
-
-
+
+
+
+
+
Format
-
+
Precyzja
-
-
-
-
+
+
+
+
Ustawienia lokalne
-
-
-
-
-
-
+
+
+
+
+
+
Data i czas
-
+
Źródło danych
-
+
Pole wartości
-
+
Pole klucza
-
+
Wartość pola klucza
-
+
Indeks wiersza
-
-
-
+
+
+
Unikalny identyfikator
-
-
+
+
Zawartość
-
+
Akapit
-
+
Nazwa źródła danych
-
+
Symbol waluty
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
OGÓLNY
-
-
-
+
+
+
Nazwa
@@ -3831,18 +4076,18 @@ Ten podgląd nie jest już prawidłowy.
Ukryj jeśli pusty
-
-
+
+
Błąd
-
+
Pole tekstowe " %1 " już ma folower " %2 "
-
+
Nie znaleziono pole tekstowego "%1"!
@@ -4085,32 +4330,32 @@ Ten podgląd nie jest już prawidłowy.
-
+
Nieprawidłowe połączenie! %1
-
+
Nie znaleziono głównego źródła danych "%1"!
-
+
Nie znaleziono głównego źródła danych "%1"!
-
+
Dziecko
-
+
i dziecko
-
+
nie znaleziono źródła danych "%1"!
@@ -4226,14 +4471,14 @@ Ten podgląd nie jest już prawidłowy.
Ciąg znaków
-
-
+
+
Uwaga!
-
-
+
+
Wybrane elementy mają różne pojemniki nadrzędne
@@ -4243,12 +4488,12 @@ Ten podgląd nie jest już prawidłowy.
Obiekt o nazwie %1 już istnieje!
-
+
Funkcja %1 nie znaleziona lub ma błędne argumenty
-
+
Nie znaleziono menedżera źródła danych
@@ -4263,16 +4508,16 @@ Ten podgląd nie jest już prawidłowy.
-
-
+
+
mm
-
-
+
+
"
@@ -4339,20 +4584,20 @@ Ten podgląd nie jest już prawidłowy.
Jasny
-
+
Domyślny
-
-
+
+
Milimetry
-
-
+
+
Cale
@@ -4398,249 +4643,4 @@ Ten podgląd nie jest już prawidłowy.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
- lrpageeditor
-
-
-
-
-
-
-
-
-
-
-
-
-
- Format
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Portret
-
-
-
-
- Pejzaż
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cała strona
-
-
diff --git a/translations/limereport_ru.qm b/translations/limereport_ru.qm
index cbbea89..c90174a 100644
Binary files a/translations/limereport_ru.qm and b/translations/limereport_ru.qm differ
diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts
index 3dd7d0b..be5561d 100644
--- a/translations/limereport_ru.ts
+++ b/translations/limereport_ru.ts
@@ -8,17 +8,6 @@
$ClassName$
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -525,6 +514,120 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
@@ -1360,6 +1463,93 @@ p, li { white-space: pre-wrap; }
Экспортировать в PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ Формат
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Портретная
+
+
+
+ Альбомная
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ На всю страницу
+
+
LimeReport::PageFooter
@@ -3402,194 +3592,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- Формат
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Портретная
-
-
-
- Альбомная
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- На всю страницу
-
-
-
-
-
-
diff --git a/translations/limereport_zh.ts b/translations/limereport_zh.ts
index 3e62d44..2811da7 100644
--- a/translations/limereport_zh.ts
+++ b/translations/limereport_zh.ts
@@ -8,17 +8,6 @@
$ClassName$
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -532,6 +521,120 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::BorderEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LimeReport::BorderFrameEditor
+
+
+
+
+
+
+
+
+
LimeReport::ConnectionDesc
@@ -1367,6 +1470,93 @@ p, li { white-space: pre-wrap; }
导出为PDF文件
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ 格式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 纵向
+
+
+
+ 横向
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全页
+
+
LimeReport::PageFooter
@@ -3411,194 +3601,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- 格式
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 纵向
-
-
-
- 横向
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 全页
-
-
-
-
-
-