diff --git a/3rdparty/zint-2.6.1/backend_qt/qzint.h b/3rdparty/zint-2.6.1/backend_qt/qzint.h index 70b5acc..7343e55 100644 --- a/3rdparty/zint-2.6.1/backend_qt/qzint.h +++ b/3rdparty/zint-2.6.1/backend_qt/qzint.h @@ -18,6 +18,7 @@ #define BARCODERENDER_H #include #include +#include #include "qzint_global.h" #include "zint.h" diff --git a/README.md b/README.md index 140ffd3..1f3ef97 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# LimeReport v1.5.35 [![Build Status](https://api.travis-ci.org/fralx/LimeReport.svg?branch=master)](https://travis-ci.org/fralx/LimeReport) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/bc31412ea4814f30825b5ed3723e9a70)](https://app.codacy.com/app/fralx/LimeReport?utm_source=github.com&utm_medium=referral&utm_content=fralx/LimeReport&utm_campaign=Badge_Grade_Dashboard) +# LimeReport v1.5.35 [![Build Status](https://api.travis-ci.org/fralx/LimeReport.svg?branch=master)](https://travis-ci.org/fralx/LimeReport) [![Build status](https://ci.appveyor.com/api/projects/status/wna5429pix7ilcmo/branch/master?svg=true)](https://ci.appveyor.com/project/fralx/limereport/branch/master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/bc31412ea4814f30825b5ed3723e9a70)](https://app.codacy.com/app/fralx/LimeReport?utm_source=github.com&utm_medium=referral&utm_content=fralx/LimeReport&utm_campaign=Badge_Grade_Dashboard) ## Official LimeReport web site [http://limereport.ru](http://limereport.ru) diff --git a/common.pri b/common.pri index c76b3d2..99786de 100644 --- a/common.pri +++ b/common.pri @@ -134,7 +134,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MINOR = 5 -LIMEREPORT_VERSION_RELEASE = 50 +LIMEREPORT_VERSION_RELEASE = 78 LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}' DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\" diff --git a/demo_r1/demo_r1.pro b/demo_r1/demo_r1.pro index 6a780f9..36505d3 100644 --- a/demo_r1/demo_r1.pro +++ b/demo_r1/demo_r1.pro @@ -33,7 +33,7 @@ macx{ unix:{ DESTDIR = $$DEST_DIR # QMAKE_POST_LINK += mkdir -p $$quote($$REPORTS_DIR) | - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$REPORTS_DIR\" $$escape_expand(\n\t) linux{ #Link share lib to ../lib rpath @@ -49,7 +49,7 @@ unix:{ win32 { DESTDIR = $$DEST_DIR contains(QMAKE_HOST.os, Linux){ - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$REPORTS_DIR\" $$escape_expand(\n\t) } else { EXTRA_DIR ~= s,/,\\,g DEST_DIR ~= s,/,\\,g diff --git a/demo_r2/demo_r2.pro b/demo_r2/demo_r2.pro index bcb7fc2..c8abe1f 100644 --- a/demo_r2/demo_r2.pro +++ b/demo_r2/demo_r2.pro @@ -33,7 +33,7 @@ macx{ unix:{ DESTDIR = $$DEST_DIR - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$REPORTS_DIR\" $$escape_expand(\n\t) linux{ #Link share lib to ../lib rpath QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN @@ -48,7 +48,7 @@ unix:{ win32 { DESTDIR = $$DEST_DIR contains(QMAKE_HOST.os, Linux){ - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$REPORTS_DIR\" $$escape_expand(\n\t) } else { EXTRA_DIR ~= s,/,\\,g DEST_DIR ~= s,/,\\,g diff --git a/limereport/bands/lrdataband.h b/limereport/bands/lrdataband.h index fc6e4ad..c44c93c 100644 --- a/limereport/bands/lrdataband.h +++ b/limereport/bands/lrdataband.h @@ -87,6 +87,7 @@ class DataFooterBand : public BandDesignIntf { Q_OBJECT Q_PROPERTY(int columnsCount READ columnsCount WRITE setColumnsCount) + Q_PROPERTY(bool splittable READ isSplittable WRITE setSplittable) Q_PROPERTY(BandColumnsLayoutType columnsFillDirection READ columnsFillDirection WRITE setColumnsFillDirection) Q_PROPERTY(bool printAlways READ printAlways WRITE setPrintAlways) public: diff --git a/limereport/bands/lrsubdetailband.h b/limereport/bands/lrsubdetailband.h index bbcdc88..d64eee9 100644 --- a/limereport/bands/lrsubdetailband.h +++ b/limereport/bands/lrsubdetailband.h @@ -77,6 +77,7 @@ class SubDetailFooterBand : public BandDesignIntf { Q_OBJECT Q_PROPERTY(int columnsCount READ columnsCount WRITE setColumnsCount) + Q_PROPERTY(bool splittable READ isSplittable WRITE setSplittable) Q_PROPERTY(BandColumnsLayoutType columnsFillDirection READ columnsFillDirection WRITE setColumnsFillDirection) Q_PROPERTY(bool printAlways READ printAlways() WRITE setPrintAlways()) public: diff --git a/limereport/databrowser/images/closed_eye.png b/limereport/databrowser/images/closed_eye.png new file mode 100755 index 0000000..7548406 Binary files /dev/null and b/limereport/databrowser/images/closed_eye.png differ diff --git a/limereport/databrowser/images/eye.png b/limereport/databrowser/images/eye.png new file mode 100755 index 0000000..e1b7e24 Binary files /dev/null and b/limereport/databrowser/images/eye.png differ diff --git a/limereport/databrowser/lrconnectiondialog.cpp b/limereport/databrowser/lrconnectiondialog.cpp index 96204c4..07c53a5 100644 --- a/limereport/databrowser/lrconnectiondialog.cpp +++ b/limereport/databrowser/lrconnectiondialog.cpp @@ -118,7 +118,7 @@ ConnectionDesc *ConnectionDialog::uiToConnection(LimeReport::ConnectionDesc* con result ->setName(ConnectionDesc::connectionNameForReport(ui->leConnectionName->text())); result ->setHost(ui->leServerName->text()); if (!ui->lePort->text().isEmpty()) - result->setPort(ui->lePort->text().toInt()); + result->setPort(ui->lePort->text()); result ->setDriver(ui->cbbDrivers->currentText()); result ->setUserName(ui->leUserName->text()); result ->setPassword(ui->lePassword->text()); @@ -141,7 +141,7 @@ void ConnectionDialog::connectionToUI() ui->cbbDrivers->setCurrentIndex(ui->cbbDrivers->findText(m_connection->driver())); ui->cbAutoConnect->setChecked(m_connection->autoconnect()); ui->cbbKeepCredentials->setChecked(!m_connection->keepDBCredentials()); - ui->lePort->setText(m_connection->port()!=-1?QString::number(m_connection->port()):""); + ui->lePort->setText(m_connection->port()); } void ConnectionDialog::on_toolButton_clicked() @@ -160,6 +160,10 @@ void ConnectionDialog::on_cbbUseDefaultConnection_toggled(bool checked) ui->leConnectionName->setEnabled(true); } } +void ConnectionDialog::on_toolButton_2_toggled(bool checked) +{ + ui->lePassword->setEchoMode(checked ? QLineEdit::Normal : QLineEdit::Password); +} } // namespace LimeReport @@ -167,3 +171,5 @@ void ConnectionDialog::on_cbbUseDefaultConnection_toggled(bool checked) + + diff --git a/limereport/databrowser/lrconnectiondialog.h b/limereport/databrowser/lrconnectiondialog.h index 531666a..12140b1 100644 --- a/limereport/databrowser/lrconnectiondialog.h +++ b/limereport/databrowser/lrconnectiondialog.h @@ -60,6 +60,8 @@ private slots: void on_toolButton_clicked(); void on_cbbUseDefaultConnection_toggled(bool checked); + void on_toolButton_2_toggled(bool checked); + private: Ui::ConnectionDialog *ui; ConnectionDesc* m_connection; diff --git a/limereport/databrowser/lrconnectiondialog.ui b/limereport/databrowser/lrconnectiondialog.ui index d76b765..e7b7367 100644 --- a/limereport/databrowser/lrconnectiondialog.ui +++ b/limereport/databrowser/lrconnectiondialog.ui @@ -7,7 +7,7 @@ 0 0 420 - 323 + 365 @@ -44,7 +44,7 @@ - + @@ -114,14 +114,39 @@ - - - + + + 2 - - QLineEdit::Password - - + + + + + + + QLineEdit::Password + + + + + + + Qt::ClickFocus + + + + + + + :/databrowser/images/closed_eye.png + :/databrowser/images/eye.png:/databrowser/images/closed_eye.png + + + true + + + + @@ -137,6 +162,9 @@ + + Qt::ClickFocus + ... @@ -158,7 +186,7 @@ - Dont keep credentals in lrxml + Don't keep credentials in lrxml @@ -221,8 +249,24 @@ + + leConnectionName + cbbUseDefaultConnection + cbbDrivers + leServerName + lePort + leUserName + lePassword + leDataBase + cbAutoConnect + cbbKeepCredentials + pbCheckConnection + pbCancel + pbOk + + diff --git a/limereport/databrowser/lrdatabrowser.cpp b/limereport/databrowser/lrdatabrowser.cpp index d475826..32e9995 100644 --- a/limereport/databrowser/lrdatabrowser.cpp +++ b/limereport/databrowser/lrdatabrowser.cpp @@ -677,7 +677,7 @@ SQLEditResult::ResultMode DataBrowser::currentDatasourceType(const QString& data void DataBrowser::applyChanges(SQLEditResult result) { - if (result.resultMode == currentDatasourceType(result.datasourceName)){ + if (result.resultMode == currentDatasourceType(result.oldDatasourceName)){ switch(result.resultMode){ case SQLEditResult::Query: changeQuery(result); @@ -694,7 +694,7 @@ void DataBrowser::applyChanges(SQLEditResult result) default: break; } } else { - removeDatasource(result.datasourceName); + removeDatasource(result.oldDatasourceName); addDatasource(result); } activateItem(result.datasourceName, DataBrowserTree::Table); diff --git a/limereport/databrowser/lrdatabrowser.qrc b/limereport/databrowser/lrdatabrowser.qrc index aa4f852..de2ce88 100644 --- a/limereport/databrowser/lrdatabrowser.qrc +++ b/limereport/databrowser/lrdatabrowser.qrc @@ -44,5 +44,7 @@ images/value_edit2.png images/value1.png images/varToReport.png + images/eye.png + images/closed_eye.png diff --git a/limereport/items/charts/lrhorizontalbarchart.cpp b/limereport/items/charts/lrhorizontalbarchart.cpp index e2713dd..3d539d9 100644 --- a/limereport/items/charts/lrhorizontalbarchart.cpp +++ b/limereport/items/charts/lrhorizontalbarchart.cpp @@ -28,6 +28,8 @@ void HorizontalBarChart::paintChart(QPainter *painter, QRectF chartRect) void HorizontalBarChart::paintHorizontalBars(QPainter *painter, QRectF barsRect) { + if (seriesCount() == 0) return; + painter->save(); painter->setRenderHint(QPainter::Antialiasing,false); int delta = int(maxValue()-minValue()); diff --git a/limereport/items/charts/lrlineschart.cpp b/limereport/items/charts/lrlineschart.cpp index 30f2949..9ee2b81 100644 --- a/limereport/items/charts/lrlineschart.cpp +++ b/limereport/items/charts/lrlineschart.cpp @@ -65,6 +65,8 @@ void LinesChart::drawDesignMode(QPainter* painter, qreal hStep, qreal vStep, qre void LinesChart::paintSerialLines(QPainter* painter, QRectF barsRect) { + if (valuesCount() == 0) return; + painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); int delta = int(maxValue() - minValue()); diff --git a/limereport/items/charts/lrpiechart.cpp b/limereport/items/charts/lrpiechart.cpp index f54e62d..d6afb0c 100644 --- a/limereport/items/charts/lrpiechart.cpp +++ b/limereport/items/charts/lrpiechart.cpp @@ -70,7 +70,7 @@ void PieChart::paintChart(QPainter *painter, QRectF chartRect) drawPercent(painter, chartRect, currentDegree, sectorDegree); currentDegree += sectorDegree; } - } else { + } else if (m_chartItem->itemMode() == DesignMode){ painter->setBrush(color_map[0]); painter->drawPie(chartRect,0,260*16); drawPercent(painter, chartRect, 0, 260); @@ -122,7 +122,7 @@ void PieChart::paintChartLegend(QPainter *painter, QRectF legendRect) ); cw += painter->fontMetrics().height(); } - } else { + } else if (m_chartItem->itemMode() == DesignMode){ qreal cw = 0; for (int i=0;iseries().isEmpty() && (m_chartItem->itemMode() != DesignMode)){ int curSeries = 0; foreach (SeriesItem* series, m_chartItem->series()) { @@ -93,6 +97,8 @@ void VerticalBarChart::paintVerticalBars(QPainter *painter, QRectF barsRect) void VerticalBarChart::paintSerialLines(QPainter* painter, QRectF barsRect) { + if (valuesCount() == 0 ) return; + painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); int delta = int(maxValue() - minValue()); diff --git a/limereport/items/lralignpropitem.cpp b/limereport/items/lralignpropitem.cpp index a91c243..1321b4f 100644 --- a/limereport/items/lralignpropitem.cpp +++ b/limereport/items/lralignpropitem.cpp @@ -160,7 +160,10 @@ QString AlignmentItemEditor::displayValue() const void AlignmentItemEditor::setPropertyValue(QVariant value) { - ObjectPropItem::setPropertyValue(extractAcceptableValue(value.toInt())[0]); + QVector _accpepttableValueList= extractAcceptableValue(value.toInt()); + if(_accpepttableValueList.isEmpty()) return; + + ObjectPropItem::setPropertyValue(_accpepttableValueList[0]); } } diff --git a/limereport/items/lrbarcodeitem.cpp b/limereport/items/lrbarcodeitem.cpp index 9161c20..bbdcfee 100644 --- a/limereport/items/lrbarcodeitem.cpp +++ b/limereport/items/lrbarcodeitem.cpp @@ -333,6 +333,13 @@ bool BarcodeItem::isEmpty() const return m_content.isEmpty(); } +void BarcodeItem::expandContent(QString data, DataSourceManager* dataManager, RenderPass pass) +{ + setContent(expandUserVariables(data, pass, NoEscapeSymbols, dataManager)); + setContent(expandScripts(content(), dataManager)); + setContent(expandDataFields(content(), NoEscapeSymbols, dataManager)); +} + void BarcodeItem::updateItemSize(DataSourceManager* dataManager, RenderPass pass, int maxHeight) { if (content().isEmpty()) @@ -346,21 +353,19 @@ void BarcodeItem::updateItemSize(DataSourceManager* dataManager, RenderPass pass if (data.isValid()) { switch(pass) - { - case FirstPass: - setContent(expandUserVariables(data.toString(),pass,NoEscapeSymbols, dataManager)); - setContent(expandDataFields(data.toString(), NoEscapeSymbols, dataManager)); - break; - default:; - } + { + case FirstPass: + expandContent(data.toString(), dataManager, pass); + break; + default:; + } } } } } else { switch(pass){ case FirstPass: - setContent(expandUserVariables(content(),pass,NoEscapeSymbols, dataManager)); - setContent(expandDataFields(content(), NoEscapeSymbols, dataManager)); + expandContent(content(), dataManager, pass); break; default:; } diff --git a/limereport/items/lrbarcodeitem.h b/limereport/items/lrbarcodeitem.h index 8dc091d..c09fbe9 100644 --- a/limereport/items/lrbarcodeitem.h +++ b/limereport/items/lrbarcodeitem.h @@ -191,20 +191,19 @@ public: void setSecurityLevel(int securityLevel); int pdf417CodeWords() const; void setPdf417CodeWords(int pdf417CodeWords); - InputMode inputMode() const; void setInputMode(const InputMode &inputMode); - bool hideText() const; void setHideText(bool hideText); - int option3() const; void setOption3(int option3); - bool hideIfEmpty() const; void setHideIfEmpty(bool hideIfEmpty); bool isEmpty() const; +private: + void expandContent(QString data, DataSourceManager *dataManager, RenderPass pass); + private: QString m_content; QString m_datasource; diff --git a/limereport/items/lrchartitem.cpp b/limereport/items/lrchartitem.cpp index 5d1ca0e..15f76fa 100644 --- a/limereport/items/lrchartitem.cpp +++ b/limereport/items/lrchartitem.cpp @@ -584,7 +584,10 @@ QSizeF AbstractSeriesChart::calcChartLegendSize(const QFont &font) return QSizeF(maxWidth+fm.height()*2,cw); } -bool AbstractSeriesChart::verticalLabels(QPainter* painter, QRectF labelsRect){ +bool AbstractSeriesChart::verticalLabels(QPainter* painter, QRectF labelsRect) +{ + if (valuesCount() == 0) return false; + qreal hStep = (labelsRect.width() / valuesCount()); QFontMetrics fm = painter->fontMetrics(); foreach(QString label, m_chartItem->labels()){ @@ -597,6 +600,8 @@ bool AbstractSeriesChart::verticalLabels(QPainter* painter, QRectF labelsRect){ void AbstractSeriesChart::paintHorizontalLabels(QPainter *painter, QRectF labelsRect) { + if (valuesCount() == 0) return; + painter->save(); qreal hStep = (labelsRect.width() / valuesCount()); if (!m_chartItem->labels().isEmpty()){ @@ -623,6 +628,8 @@ void AbstractSeriesChart::paintHorizontalLabels(QPainter *painter, QRectF labels void AbstractSeriesChart::paintVerticalLabels(QPainter *painter, QRectF labelsRect) { + if (valuesCount() == 0) return; + painter->save(); painter->setFont(adaptLabelsFont(labelsRect.adjusted(0, 0, -hPadding(m_chartItem->rect()), 0), painter->font())); @@ -771,7 +778,7 @@ void AbstractBarChart::paintChartLegend(QPainter *painter, QRectF legendRect) ); cw += painter->fontMetrics().height(); } - } else { + } else if (m_chartItem->itemMode() == DesignMode){ qreal cw = 0; for (int i=0;iinitFromItem(this); foreach(BaseDesignIntf* item,childBaseItems()){ - if ((item->geometry().top() < height) && ( item->geometry().bottom() > height )){ + if (item->geometry().bottom() > height){ int sliceHeight = height - item->geometry().top(); - if (item->canBeSplitted(sliceHeight)){ + if ((item->geometry().top() < height) && (item->canBeSplitted(sliceHeight))){ BaseDesignIntf* tmpItem = item->cloneBottomPart(sliceHeight, bottomPart, bottomPart); - tmpItem->setPos(tmpItem->pos().x(),0); tmpItem->setHeight(sliceHeight); + bottomPart->addChild(tmpItem); } else { - item->cloneItem(item->itemMode(), bottomPart, bottomPart); - item->setPos(item->pos().x(), 0); - } - } else { - if (item->geometry().top() >= height){ - BaseDesignIntf* tmpItem = item->cloneItem(item->itemMode(), bottomPart, bottomPart); - tmpItem->setPos(item->pos().x(), item->pos().y() - height); + bottomPart->addChild(item->cloneItem(item->itemMode(), bottomPart, bottomPart)); } } } diff --git a/limereport/limereport.pro b/limereport/limereport.pro index f790982..b641305 100644 --- a/limereport/limereport.pro +++ b/limereport/limereport.pro @@ -47,28 +47,28 @@ include(limereport.pri) unix:{ DESTDIR = $${DEST_LIBS} linux{ - QMAKE_POST_LINK += mkdir -p $$quote($${DEST_INCLUDE_DIR}) $$escape_expand(\\n\\t) # qmake need make mkdir -p on subdirs more than root/ + QMAKE_POST_LINK += mkdir -p \"$${DEST_INCLUDE_DIR}\" $$escape_expand(\\n\\t) # qmake need make mkdir -p on subdirs more than root/ for(FILE,EXTRA_FILES){ - QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($${DEST_INCLUDE_DIR}) $$escape_expand(\\n\\t) # inside of libs make /include/files + QMAKE_POST_LINK += $$QMAKE_COPY \"$$FILE\" \"$${DEST_INCLUDE_DIR}\" $$escape_expand(\\n\\t) # inside of libs make /include/files } } macx{ for(FILE,EXTRA_FILES){ - QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($${DEST_INCLUDE_DIR}) $$escape_expand(\\n\\t) + QMAKE_POST_LINK += $$QMAKE_COPY \"$$FILE\" \"$${DEST_INCLUDE_DIR}\" $$escape_expand(\\n\\t) } - QMAKE_POST_LINK += mkdir -p $$quote($${DESTDIR}/include) $$escape_expand(\\n\\t) + QMAKE_POST_LINK += mkdir -p \"$${DESTDIR}/include\" $$escape_expand(\\n\\t) } - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($${DEST_INCLUDE_DIR}) $$quote($${DESTDIR}) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$${DEST_INCLUDE_DIR}\" \"$${DESTDIR}\" } win32 { DESTDIR = $${DEST_LIBS} contains(QMAKE_HOST.os, Linux){ - QMAKE_POST_LINK += mkdir -p $$quote($${DEST_INCLUDE_DIR}) $$escape_expand(\\n\\t) # qmake need make mkdir -p on subdirs more than root/ + QMAKE_POST_LINK += mkdir -p \"$${DEST_INCLUDE_DIR}\" $$escape_expand(\\n\\t) # qmake need make mkdir -p on subdirs more than root/ for(FILE,EXTRA_FILES){ - QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($${DEST_INCLUDE_DIR}) $$escape_expand(\\n\\t) # inside of libs make /include/files + QMAKE_POST_LINK += $$QMAKE_COPY \"$$FILE\" \"$${DEST_INCLUDE_DIR}\" $$escape_expand(\\n\\t) # inside of libs make /include/files } - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($${DEST_INCLUDE_DIR}) $$quote($${DESTDIR}) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$${DEST_INCLUDE_DIR}\" \"$${DESTDIR}\" } else { EXTRA_FILES ~= s,/,\\,g BUILD_DIR ~= s,/,\\,g @@ -121,20 +121,13 @@ contains(CONFIG,build_translations){ TRANSLATIONS = $$prependAll(LANGUAGES, \"$$TRANSLATIONS_PATH/limereport_,.ts\") qtPrepareTool(LUPDATE, lupdate) - -greaterThan(QT_MAJOR_VERSION, 4) { - ts.commands = $$LUPDATE $$shell_quote($$PWD) -noobsolete -ts $$TRANSLATIONS -} -lessThan(QT_MAJOR_VERSION, 5){ - ts.commands = $$LUPDATE $$quote($$PWD) -noobsolete -ts $$TRANSLATIONS -} + ts.commands = $$LUPDATE \"$$PWD\" -noobsolete -ts $$TRANSLATIONS TRANSLATIONS_FILES = qtPrepareTool(LRELEASE, lrelease) for(tsfile, TRANSLATIONS) { qmfile = $$tsfile qmfile ~= s,".ts\"$",".qm\"", qm.commands += $$LRELEASE -removeidentical $$tsfile -qm $$qmfile $$escape_expand(\\n\\t) - tmp_command = $$LRELEASE -removeidentical $$tsfile -qm $$qmfile $$escape_expand(\\n\\t) TRANSLATIONS_FILES += $$qmfile } qm.depends = ts diff --git a/limereport/lrbanddesignintf.cpp b/limereport/lrbanddesignintf.cpp index 4bb1c2a..afd5a04 100644 --- a/limereport/lrbanddesignintf.cpp +++ b/limereport/lrbanddesignintf.cpp @@ -273,6 +273,12 @@ void BandDesignIntf::setPpm(int ppm) updateBandMarkerGeometry(QRectF(pos(),size())); } +void BandDesignIntf::copyBandAttributes(BandDesignIntf *source) +{ + this->copyBookmarks(source); + this->setBackgroundColor(source->backgroundColor()); +} + void BandDesignIntf::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { prepareRect(painter, option, widget); @@ -776,6 +782,11 @@ void BandDesignIntf::emitBandRendered(BandDesignIntf* band) emit bandRendered(band); } +void BandDesignIntf::emitBandReRendered(BandDesignIntf *oldBand, BandDesignIntf *newBand) +{ + emit bandReRendered(oldBand, newBand); +} + void BandDesignIntf::setSplittable(bool value){ if (m_splitable!=value){ bool oldValue = m_splitable; diff --git a/limereport/lrbanddesignintf.h b/limereport/lrbanddesignintf.h index 8c8a541..83c2770 100644 --- a/limereport/lrbanddesignintf.h +++ b/limereport/lrbanddesignintf.h @@ -219,6 +219,7 @@ public: void parentObjectLoadFinished(); void finishLoading(); void emitBandRendered(BandDesignIntf *band); + void emitBandReRendered(BandDesignIntf* oldBand, BandDesignIntf* newBand); bool isSplittable() const {return m_splitable;} void setSplittable(bool value); @@ -255,6 +256,7 @@ public: bool startFromNewPage() const; void setStartFromNewPage(bool startFromNewPage); bool canContainChildren() const{ return true;} + bool canAcceptPaste() const{ return true;} bool printAlways() const; void setPrintAlways(bool printAlways); bool repeatOnEachRow() const; @@ -281,8 +283,10 @@ public: void setPaddingBottom(int paddingBottom); QRectF boundingRect() const; + void copyBandAttributes(BandDesignIntf* source); signals: void bandRendered(BandDesignIntf* band); + void bandReRendered(BandDesignIntf* oldBand, BandDesignIntf* newBand); void preparedForRender(); void bandRegistred(); protected: diff --git a/limereport/lrbasedesignintf.cpp b/limereport/lrbasedesignintf.cpp index 35f90b1..b4589dc 100644 --- a/limereport/lrbasedesignintf.cpp +++ b/limereport/lrbasedesignintf.cpp @@ -87,6 +87,8 @@ BaseDesignIntf::BaseDesignIntf(const QString &storageTypeName, QObject *owner, Q m_itemGeometryLocked(false), m_isChangingPos(false), m_ppm(Const::STORAGE_MM_FACTOR) + m_isMoveable(false) + { setGeometry(QRectF(0, 0, m_width, m_height)); if (BaseDesignIntf *item = dynamic_cast(parent)) { @@ -390,6 +392,10 @@ void BaseDesignIntf::setFixedPos(bool fixedPos) m_fixedPos = fixedPos; } +void BaseDesignIntf::onChangeGeometryTimeOut(){ + m_isMoveable = true; +} + void BaseDesignIntf::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { @@ -398,7 +404,9 @@ void BaseDesignIntf::mousePressEvent(QGraphicsSceneMouseEvent *event) m_startPos = pos(); m_oldGeometry = geometry(); QGraphicsItem::mousePressEvent(event); - emit(itemSelected(this)); + emit itemSelected(this); + m_isMoveable = false; + QTimer::singleShot(200, this, SLOT(onChangeGeometryTimeOut())); } else QGraphicsItem::mousePressEvent(event); } @@ -527,6 +535,7 @@ void BaseDesignIntf::hoverEnterEvent(QGraphicsSceneHoverEvent* /*event*/) void BaseDesignIntf::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { + if (!m_isMoveable) return; if (!isSelected()){ QGraphicsItem::mouseMoveEvent(event); return; diff --git a/limereport/lrbasedesignintf.h b/limereport/lrbasedesignintf.h index d5b3cd1..8a80507 100644 --- a/limereport/lrbasedesignintf.h +++ b/limereport/lrbasedesignintf.h @@ -324,6 +324,7 @@ public: void setBorderColor(const QColor &borderColor); void setItemVisible(const bool& value); virtual bool canContainChildren() const { return false;} + virtual bool canAcceptPaste() const{ return false;} ReportSettings* reportSettings() const; void setReportSettings(ReportSettings *reportSettings); void setZValueProperty(qreal value); @@ -338,6 +339,15 @@ public: virtual void setWatermark(bool watermark); void updateSelectionMarker(); void turnOnSelectionMarker(bool value); + bool fillTransparentInDesignMode() const; + void setFillTransparentInDesignMode(bool fillTransparentInDesignMode); + void emitPosChanged(QPointF oldPos, QPointF newPos); + void emitObjectNamePropertyChanged(const QString& oldName, const QString& newName); + bool isGeometryLocked() const; + void setGeometryLocked(bool itemLocked); + bool isChangingPos() const; + void setIsChangingPos(bool isChangingPos); + Q_INVOKABLE QString setItemWidth(qreal width); Q_INVOKABLE QString setItemHeight(qreal height); Q_INVOKABLE qreal getItemWidth(); @@ -434,6 +444,10 @@ private: void moveSelectedItems(QPointF delta); Qt::CursorShape getPossibleCursor(int cursorFlags); void updatePossibleDirectionFlags(); + +private slots: + void onChangeGeometryTimeOut(); + private: QPointF m_startPos; int m_resizeHandleSize; @@ -495,19 +509,21 @@ private: bool m_itemGeometryLocked; bool m_isChangingPos; int m_ppm; + bool m_isMoveable; + signals: void geometryChanged(QObject* object, QRectF newGeometry, QRectF oldGeometry); void posChanging(QObject* object, QPointF newPos, QPointF oldPos); void posChanged(QObject* object, QPointF newPos, QPointF oldPos); void itemSelected(LimeReport::BaseDesignIntf *item); - void itemSelectedHasBeenChanged(BaseDesignIntf *item, bool value); + void itemSelectedHasBeenChanged(LimeReport::BaseDesignIntf *item, bool value); void loadCollectionFinished(const QString& collectionName); void objectLoaded(QObject* object); void objectChanged(QObject* object); void propertyChanged(const QString& propertName, const QVariant& oldValue,const QVariant& newValue); void propertyObjectNameChanged(const QString& oldValue, const QString& newValue); void propertyesChanged(QVector propertyNames); - void itemAlignChanged(BaseDesignIntf* item, const ItemAlign& oldValue, const ItemAlign& newValue); + void itemAlignChanged(BaseDesignIntf* item, const BaseDesignIntf::ItemAlign& oldValue, const BaseDesignIntf::ItemAlign& newValue); void itemVisibleHasChanged(BaseDesignIntf* item); void beforeRender(); void afterData(); diff --git a/limereport/lrdatadesignintf.cpp b/limereport/lrdatadesignintf.cpp index aca04e3..b16d77d 100644 --- a/limereport/lrdatadesignintf.cpp +++ b/limereport/lrdatadesignintf.cpp @@ -336,13 +336,13 @@ void ModelToDataSource::slotModelDestroed() ConnectionDesc::ConnectionDesc(QSqlDatabase db, QObject *parent) : QObject(parent), m_connectionName(db.connectionName()), m_connectionHost(db.hostName()), m_connectionDriver(db.driverName()), - m_databaseName(db.databaseName()), m_user(db.userName()), m_password(db.password()), m_port(-1), m_autoconnect(false), + m_databaseName(db.databaseName()), m_user(db.userName()), m_password(db.password()), m_port(""), m_autoconnect(false), m_internal(false), m_keepDBCredentials(true) {} ConnectionDesc::ConnectionDesc(QObject *parent) :QObject(parent),m_connectionName(""),m_connectionHost(""), m_connectionDriver(""), - m_databaseName(""), m_user(""), m_password(""), m_port(-1), m_autoconnect(false), + m_databaseName(""), m_user(""), m_password(""), m_port(""), m_autoconnect(false), m_internal(false), m_keepDBCredentials(true) {} @@ -377,12 +377,12 @@ QString ConnectionDesc::connectionNameForReport(const QString &connectionName) return connectionName.compare(tr("defaultConnection")) == 0 ? QSqlDatabase::defaultConnection : connectionName; } -int ConnectionDesc::port() const +QString ConnectionDesc::port() const { return m_port; } -void ConnectionDesc::setPort(int port) +void ConnectionDesc::setPort(QString port) { m_port = port; } diff --git a/limereport/lrdatadesignintf.h b/limereport/lrdatadesignintf.h index 867cbbb..71543cb 100644 --- a/limereport/lrdatadesignintf.h +++ b/limereport/lrdatadesignintf.h @@ -78,7 +78,7 @@ class ConnectionDesc : public QObject{ Q_PROPERTY(QString host READ host WRITE setHost) Q_PROPERTY(bool autoconnect READ autoconnect WRITE setAutoconnect) Q_PROPERTY(bool keepDBCredentials READ keepDBCredentials WRITE setKeepDBCredentials) - Q_PROPERTY(int port READ port WRITE setPort) + Q_PROPERTY(QString port READ port WRITE setPort) public: typedef QSharedPointer Ptr; ConnectionDesc(QSqlDatabase db, QObject* parent=0); @@ -103,8 +103,8 @@ public: void setInternal(bool value) {m_internal = value;} bool keepDBCredentials() const; void setKeepDBCredentials(bool keepDBCredentials); - int port() const; - void setPort(int port); + QString port() const; + void setPort(QString port); public: static QString connectionNameForUser(const QString& connectionName); static QString connectionNameForReport(const QString& connectionName); @@ -117,7 +117,7 @@ private: QString m_databaseName; QString m_user; QString m_password; - int m_port; + QString m_port; bool m_autoconnect; bool m_internal; bool m_keepDBCredentials; diff --git a/limereport/lrdatasourcemanager.cpp b/limereport/lrdatasourcemanager.cpp index 9b9b876..382a05c 100644 --- a/limereport/lrdatasourcemanager.cpp +++ b/limereport/lrdatasourcemanager.cpp @@ -675,8 +675,6 @@ CSVDesc *DataSourceManager::csvByName(const QString &datasourceName) void DataSourceManager::removeDatasource(const QString &name) { - invalidateLinkedDatasources(name); - if (m_datasources.contains(name)){ IDataSourceHolder *holder; holder=m_datasources.value(name); @@ -703,6 +701,7 @@ void DataSourceManager::removeDatasource(const QString &name) delete m_csvs.at(csvIndex); m_csvs.removeAt(csvIndex); } + invalidateLinkedDatasources(name); m_hasChanges = true; emit datasourcesChanged(); } @@ -808,12 +807,12 @@ bool DataSourceManager::initAndOpenDB(QSqlDatabase& db, ConnectionDesc& connecti bool connected = false; - db.setHostName(replaceVariables(connectionDesc.host())); db.setUserName(replaceVariables(connectionDesc.userName())); db.setPassword(replaceVariables(connectionDesc.password())); - if (connectionDesc.port()!=-1) - db.setPort(connectionDesc.port()); + db.setDatabaseName(replaceVariables(connectionDesc.databaseName())); + if (connectionDesc.port()!="") + db.setPort(replaceVariables(connectionDesc.port()).toInt()); if (!connectionDesc.keepDBCredentials() && m_dbCredentialsProvider){ if (!m_dbCredentialsProvider->getUserName(connectionDesc.name()).isEmpty()) @@ -1011,14 +1010,15 @@ void DataSourceManager::disconnectConnection(const QString& connectionName) foreach(QString datasourceName, dataSourceNames()){ if (isQuery(datasourceName) || isSubQuery(datasourceName)){ QueryHolder* qh = dynamic_cast(dataSourceHolder(datasourceName)); - if (qh && qh->connectionName().compare(connectionName,Qt::CaseInsensitive)==0){ - qh->invalidate(designTime()?IDataSource::DESIGN_MODE:IDataSource::RENDER_MODE); + if (qh && qh->connectionName().compare(connectionName, Qt::CaseInsensitive) == 0){ + qh->invalidate(designTime() ? IDataSource::DESIGN_MODE : IDataSource::RENDER_MODE, true); qh->setLastError(tr("invalid connection")); } } } ConnectionDesc* connectionDesc = connectionByName(connectionName); + if (connectionDesc->isInternal()){ { QSqlDatabase db = QSqlDatabase::database(connectionName); @@ -1347,12 +1347,12 @@ void DataSourceManager::invalidateLinkedDatasources(QString datasourceName) { foreach(QString name, dataSourceNames()){ if (isSubQuery(name)){ - if (subQueryByName(name)->master() == datasourceName) + if (subQueryByName(name)->master().compare(datasourceName) == 0) dataSourceHolder(name)->invalidate(designTime()?IDataSource::DESIGN_MODE:IDataSource::RENDER_MODE); } if (isProxy(name)){ ProxyDesc* proxy = proxyByName(name); - if ((proxy->master() == datasourceName) || (proxy->child() == datasourceName)) + if ((proxy->master().compare(datasourceName) == 0) || (proxy->child().compare(datasourceName) == 0)) dataSourceHolder(name)->invalidate(designTime()?IDataSource::DESIGN_MODE:IDataSource::RENDER_MODE); } @@ -1437,13 +1437,13 @@ void DataSourceManager::clear(ClearMethod method) case All: invalidateLinkedDatasources(dit.key()); delete dit.value(); - m_datasources.erase(dit++); + dit = m_datasources.erase(dit); break; default: if (owned){ invalidateLinkedDatasources(dit.key()); delete dit.value(); - m_datasources.erase(dit++); + dit = m_datasources.erase(dit); } else { ++dit; } diff --git a/limereport/lrgroupfunctions.cpp b/limereport/lrgroupfunctions.cpp index 1061ea5..edc516e 100644 --- a/limereport/lrgroupfunctions.cpp +++ b/limereport/lrgroupfunctions.cpp @@ -97,6 +97,14 @@ void GroupFunction::slotBandRendered(BandDesignIntf *band) } } +void GroupFunction::slotBandReRendered(BandDesignIntf *oldBand, BandDesignIntf *newBand) +{ + if (m_valuesByBand.contains(oldBand)){ + m_valuesByBand.insert(newBand, m_valuesByBand.value(oldBand)); + m_valuesByBand.remove(oldBand); + } +} + QVariant GroupFunction::addition(QVariant value1, QVariant value2) { return value1.toDouble()+value2.toDouble(); diff --git a/limereport/lrgroupfunctions.h b/limereport/lrgroupfunctions.h index 28cc08b..0c4acba 100644 --- a/limereport/lrgroupfunctions.h +++ b/limereport/lrgroupfunctions.h @@ -56,6 +56,7 @@ public: virtual QVariant calculate(PageItemDesignIntf* page = 0)=0; public slots: void slotBandRendered(BandDesignIntf* band); + void slotBandReRendered(BandDesignIntf* oldBand, BandDesignIntf* newBand); protected: void setName(const QString& value){m_name=value;} QVariant addition(QVariant value1, QVariant value2); diff --git a/limereport/lritemscontainerdesignitf.cpp b/limereport/lritemscontainerdesignitf.cpp index ea5eafc..836fbea 100644 --- a/limereport/lritemscontainerdesignitf.cpp +++ b/limereport/lritemscontainerdesignitf.cpp @@ -1,5 +1,6 @@ #include "lritemscontainerdesignitf.h" #include "lritemdesignintf.h" +#include "lrbanddesignintf.h" namespace LimeReport { @@ -37,11 +38,15 @@ bool itemSortContainerLessThen(const PItemSortContainer c1, const PItemSortConta else return c1->m_rect.y()m_rect.y(); } -void ItemsContainerDesignInft::snapshotItemsLayout() +void ItemsContainerDesignInft::snapshotItemsLayout(SnapshotType type) { m_containerItems.clear(); - foreach(BaseDesignIntf *childItem,childBaseItems()){ - m_containerItems.append(PItemSortContainer(new ItemSortContainer(childItem))); + foreach(BaseDesignIntf *childItem, childBaseItems()){ + if (type == IgnoreBands){ + if (!dynamic_cast(childItem)) + m_containerItems.append(PItemSortContainer(new ItemSortContainer(childItem))); + } else + m_containerItems.append(PItemSortContainer(new ItemSortContainer(childItem))); } qSort(m_containerItems.begin(),m_containerItems.end(),itemSortContainerLessThen); } diff --git a/limereport/lritemscontainerdesignitf.h b/limereport/lritemscontainerdesignitf.h index b9aa421..483bf95 100644 --- a/limereport/lritemscontainerdesignitf.h +++ b/limereport/lritemscontainerdesignitf.h @@ -42,8 +42,9 @@ class ItemsContainerDesignInft : public BookmarkContainerDesignIntf{ public: ItemsContainerDesignInft(const QString& xmlTypeName, QObject* owner = 0, QGraphicsItem* parent=0): BookmarkContainerDesignIntf(xmlTypeName, owner, parent){} + enum SnapshotType{Full, IgnoreBands}; protected: - void snapshotItemsLayout(); + void snapshotItemsLayout(SnapshotType type = Full); void arrangeSubItems(RenderPass pass, DataSourceManager *dataManager, ArrangeType type = AsNeeded); qreal findMaxBottom() const; qreal findMaxHeight() const; diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index a5657b7..407941e 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -132,23 +132,6 @@ void PageDesignIntf::updatePageRect() emit sceneRectChanged(sceneRect()); } -//PageDesignIntf::Orientation PageDesignIntf::getOrientation() -//{ -// return m_orientation; -//} - -//void PageDesignIntf::setPageSize(PageDesignIntf::PageSize sizeType, QSizeF sizeValue) -//{ -// m_pageSize = sizeType; -// m_pageSizeValue = sizeValue; -// updatePageRect(); -//} - -//PageDesignIntf::PageSize PageDesignIntf::pageSize() const -//{ -// return m_pageSize; -//} - void PageDesignIntf::keyPressEvent(QKeyEvent *event) { if (event->modifiers() == Qt::NoModifier || @@ -1385,9 +1368,9 @@ void PageDesignIntf::copy() } BaseDesignIntf* PageDesignIntf::findDestObject(BaseDesignIntf* item){ - if (item && item->canContainChildren()) return item; + if (item && item->canAcceptPaste()) return item; BaseDesignIntf * curItem = item; - while (curItem && !curItem->canContainChildren()){ + while (curItem && !curItem->canAcceptPaste()){ curItem = dynamic_cast(curItem->parentItem()); } return curItem; @@ -2150,6 +2133,9 @@ bool PasteCommand::insertItem(ItemsReaderIntf::Ptr reader) if (page()->reportItemsByName(item->objectName()).size()>1){ item->setObjectName(objectName); } + foreach (BaseDesignIntf* child, item->childBaseItems()){ + changeName(page(), child); + }; m_itemNames.push_back(item->objectName()); } return true; @@ -2157,6 +2143,14 @@ bool PasteCommand::insertItem(ItemsReaderIntf::Ptr reader) return false; } +void PasteCommand::changeName(PageDesignIntf *page, BaseDesignIntf* item) +{ + item->setObjectName(page->genObjectName(*item)); + foreach(BaseDesignIntf* child, item->childBaseItems()){ + changeName(page, child); + }; +} + CommandIf::Ptr CutCommand::create(PageDesignIntf *page) { CutCommand *command = new CutCommand(); diff --git a/limereport/lrpagedesignintf.h b/limereport/lrpagedesignintf.h index 3c6fe9d..076d3e9 100644 --- a/limereport/lrpagedesignintf.h +++ b/limereport/lrpagedesignintf.h @@ -266,7 +266,7 @@ namespace LimeReport { void bandDeleted(QObject* band); void slotPageItemLoaded(QObject *); void slotSelectionChanged(); - void slotAnimationStoped(QObject *animation); + void slotAnimationStoped(QObject *animation); private: template BaseDesignIntf* internalAddBand(T bandType); @@ -430,6 +430,7 @@ namespace LimeReport { void setItemsXML(const QString& itemsXML); void setParent(BaseDesignIntf* parent){m_parentItemName = parent->objectName();} bool insertItem(ItemsReaderIntf::Ptr reader); + void changeName(PageDesignIntf* page, BaseDesignIntf *item); private: QString m_itemsXML; QString m_parentItemName; diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp index 84dd06c..addde9e 100644 --- a/limereport/lrpageitemdesignintf.cpp +++ b/limereport/lrpageitemdesignintf.cpp @@ -50,8 +50,9 @@ PageItemDesignIntf::PageItemDesignIntf(QObject *owner, QGraphicsItem *parent) : m_topMargin(0), m_bottomMargin(0), m_leftMargin(0), m_rightMargin(0), m_pageOrientaion(Portrait), m_pageSize(A4), m_sizeChainging(false), m_fullPage(false), m_oldPrintMode(false), m_resetPageNumber(false), - m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false), m_setPageSizeToPrinter(false), - m_endlessHeight(false), m_printable(true), m_pageFooter(0), m_printBehavior(Split) + m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false), + m_setPageSizeToPrinter(false), m_endlessHeight(false), m_printable(true), + m_pageFooter(0), m_printBehavior(Split), m_dropPrinterMargins(false) { setFixedPos(true); setPossibleResizeDirectionFlags(Fixed); @@ -64,8 +65,9 @@ PageItemDesignIntf::PageItemDesignIntf(const PageSize pageSize, const QRectF &re m_topMargin(0), m_bottomMargin(0), m_leftMargin(0), m_rightMargin(0), m_pageOrientaion(Portrait), m_pageSize(pageSize), m_sizeChainging(false), m_fullPage(false), m_oldPrintMode(false), m_resetPageNumber(false), - m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false), m_setPageSizeToPrinter(false), - m_endlessHeight(false), m_printable(true), m_pageFooter(0), m_printBehavior(Split) + m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false), + m_setPageSizeToPrinter(false), m_endlessHeight(false), m_printable(true), + m_pageFooter(0), m_printBehavior(Split), m_dropPrinterMargins(false) { setFixedPos(true); setPossibleResizeDirectionFlags(Fixed); @@ -129,7 +131,8 @@ BaseDesignIntf *PageItemDesignIntf::createSameTypeItem(QObject *owner, QGraphics void PageItemDesignIntf::geometryChangedEvent(QRectF newRect, QRectF) { Q_UNUSED(newRect) - updateMarginRect(); + if (itemMode() == DesignMode || !endlessHeight()) + updateMarginRect(); PageSize oldSize = m_pageSize; if (!m_sizeChainging && !isLoading()) m_pageSize = Custom; @@ -241,8 +244,7 @@ int PageItemDesignIntf::calcBandIndex(BandDesignIntf::BandsType bandType, BandDe } else { int maxChildIndex = 0; foreach(BandDesignIntf* band, m_bands){ - if (band->bandType() == BandDesignIntf::Data) - maxChildIndex = std::max(maxChildIndex, band->maxChildIndex()); + maxChildIndex = std::max(maxChildIndex, band->maxChildIndex()); } bandIndex = std::max(bandIndex, maxChildIndex + 1); } @@ -345,6 +347,16 @@ void PageItemDesignIntf::initColumnsPos(QVector &posByColumns, qreal pos, } } +bool PageItemDesignIntf::dropPrinterMargins() const +{ + return m_dropPrinterMargins; +} + +void PageItemDesignIntf::setDropPrinterMargins(bool dropPrinterMargins) +{ + m_dropPrinterMargins = dropPrinterMargins; +} + void PageItemDesignIntf::setPrintBehavior(const PrintBehavior &printBehavior) { m_printBehavior = printBehavior; @@ -518,8 +530,10 @@ void PageItemDesignIntf::setResetPageNumber(bool resetPageNumber) void PageItemDesignIntf::updateSubItemsSize(RenderPass pass, DataSourceManager *dataManager) { - snapshotItemsLayout(); - arrangeSubItems(pass, dataManager); + if (!endlessHeight()){ + snapshotItemsLayout(IgnoreBands); + arrangeSubItems(pass, dataManager); + } } bool PageItemDesignIntf::oldPrintMode() const diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h index d9db8a9..44ccdcf 100644 --- a/limereport/lrpageitemdesignintf.h +++ b/limereport/lrpageitemdesignintf.h @@ -61,6 +61,7 @@ class PageItemDesignIntf : public ItemsContainerDesignInft Q_PROPERTY(QString printerName READ printerName WRITE setPrinterName) Q_PROPERTY(UnitType units READ unitType WRITE setUnitTypeProperty) Q_PROPERTY(PrintBehavior printBehavior READ printBehavior WRITE setPrintBehavior) + Q_PROPERTY(bool dropPrinterMargins READ dropPrinterMargins WRITE setDropPrinterMargins) friend class ReportRender; public: enum Orientation { Portrait = QPrinter::Portrait, Landscape = QPrinter::Landscape }; @@ -143,6 +144,7 @@ public: bool oldPrintMode() const; void setOldPrintMode(bool oldPrintMode); bool canContainChildren() const{ return true;} + bool canAcceptPaste() const{ return true;} bool resetPageNumber() const; void setResetPageNumber(bool resetPageNumber); void updateSubItemsSize(RenderPass pass, DataSourceManager *dataManager); @@ -181,6 +183,10 @@ public: QRectF transformFromStorageToScenePpm(const QRectF& rect); void zoomIn(); void zoomOut(); + + bool dropPrinterMargins() const; + void setDropPrinterMargins(bool dropPrinterMargins); + signals: void beforeFirstPageRendered(); void afterLastPageRendered(); @@ -225,6 +231,7 @@ private: QString m_printerName; BandDesignIntf* m_pageFooter; PrintBehavior m_printBehavior; + bool m_dropPrinterMargins; }; diff --git a/limereport/lrpreparedpages.cpp b/limereport/lrpreparedpages.cpp index 2cc7a1b..5408d70 100644 --- a/limereport/lrpreparedpages.cpp +++ b/limereport/lrpreparedpages.cpp @@ -60,6 +60,7 @@ void PreparedPages::clear() bool PreparedPages::readPages(ItemsReaderIntf::Ptr reader) { + clear(); if (reader->first()){ PageItemDesignIntf::Ptr page = PageItemDesignIntf::create(0); if (!reader->readItem(page.data())) diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index 433e9ed..8a2ff1d 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -135,6 +135,7 @@ ReportDesignWindow::ReportDesignWindow(ReportEnginePrivateInterface* report, QWi m_hideLeftPanel->setChecked(isDockAreaVisible(Qt::LeftDockWidgetArea)); m_hideRightPanel->setChecked(isDockAreaVisible(Qt::RightDockWidgetArea)); createProgressBar(); + m_deletePageAction->setEnabled(report->pageCount()>1); } ReportDesignWindow::~ReportDesignWindow() @@ -1126,6 +1127,7 @@ void ReportDesignWindow::slotSaveReport() QString filename = m_reportDesignWidget->reportFileName(); m_lblReportName->setText(filename); if(!filename.isEmpty()) addRecentFile(filename); + setWindowTitle(m_reportDesignWidget->report()->reportName() + " - Lime Report Designer"); } void ReportDesignWindow::slotSaveReportAs() @@ -1137,6 +1139,7 @@ void ReportDesignWindow::slotSaveReportAs() m_reportDesignWidget->saveToFile(fileName); m_lblReportName->setText(m_reportDesignWidget->reportFileName()); addRecentFile(fileName); + setWindowTitle(m_reportDesignWidget->report()->reportName() + " - Lime Report Designer"); } } diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index 1e4ef03..bf8696b 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -206,7 +206,7 @@ void ReportEnginePrivate::collectionLoadFinished(const QString &) page->setReportSettings(&m_reportSettings); page->setSceneRect(-Const::SCENE_MARGIN,-Const::SCENE_MARGIN, page->pageItem()->width()+Const::SCENE_MARGIN*2, - page->pageItem()->height()+Const::SCENE_MARGIN*2); + page->pageItem()->boundingRect().height()+Const::SCENE_MARGIN*2); } emit pagesLoadFinished(); } @@ -878,6 +878,7 @@ bool ReportEnginePrivate::saveToFile(const QString &fileName) } } dropChanges(); + this->setReportName(fi.baseName()); return saved; } @@ -1801,9 +1802,6 @@ bool PrintProcessor::printPage(PageItemDesignIntf::Ptr page) if (!m_firstPage && !m_painter->isActive()) return false; PageDesignIntf* backupPage = dynamic_cast(page->scene()); - //LimeReport::PageDesignIntf m_renderPage; - //m_renderPage.setItemMode(PrintMode); - QPointF backupPagePos = page->pos(); page->setPos(0,0); int currentPpm = page->ppm(); @@ -1852,7 +1850,14 @@ bool PrintProcessor::printPage(PageItemDesignIntf::Ptr page) } } else { - m_renderPage.render(m_painter); + if (page->getSetPageSizeToPrinter()){ + QRectF source = page->geometry(); + QSizeF inchSize = source.size() / (100 * 2.54); + QRectF target = QRectF(QPoint(0,0), inchSize * m_printer->resolution()); + m_renderPage.render(m_painter, target, source); + } else { + m_renderPage.render(m_painter); + } } page->setPos(backupPagePos); page->setPpm(currentPpm); @@ -1876,13 +1881,15 @@ void PrintProcessor::initPrinter(PageItemDesignIntf* page) m_printer->setPaperSize(pageSize,QPrinter::Millimeter); } else { m_printer->setFullPage(page->fullPage()); + if (page->dropPrinterMargins()) + m_printer->setPageMargins(0, 0, 0, 0, QPrinter::Point); m_printer->setOrientation(static_cast(page->pageOrientation())); if (page->pageSize()==PageItemDesignIntf::Custom){ QSizeF pageSize = (page->pageOrientation()==PageItemDesignIntf::Landscape)? QSizeF(page->sizeMM().height(),page->sizeMM().width()): page->sizeMM(); if (page->getSetPageSizeToPrinter() || m_printer->outputFormat() == QPrinter::PdfFormat) - m_printer->setPaperSize(pageSize,QPrinter::Millimeter); + m_printer->setPaperSize(pageSize, QPrinter::Millimeter); } else { if (page->getSetPageSizeToPrinter() || m_printer->outputFormat() == QPrinter::PdfFormat) m_printer->setPaperSize(static_cast(page->pageSize())); diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index 1ca7feb..694c5f0 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -386,7 +386,10 @@ void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentIt if (dataBand){ GroupFunction* gf = datasources()->addGroupFunction(functionName,captures.at(Const::VALUE_INDEX),band->objectName(),dataBand->objectName()); if (gf){ - connect(dataBand,SIGNAL(bandRendered(BandDesignIntf*)),gf,SLOT(slotBandRendered(BandDesignIntf*))); + connect(dataBand, SIGNAL(bandRendered(BandDesignIntf*)), + gf, SLOT(slotBandRendered(BandDesignIntf*))); + connect(dataBand, SIGNAL(bandReRendered(BandDesignIntf*, BandDesignIntf*)), + gf, SLOT(slotBandReRendered(BandDesignIntf*, BandDesignIntf*))); } } else { GroupFunction* gf = datasources()->addGroupFunction(functionName,captures.at(Const::VALUE_INDEX),band->objectName(),captures.at(dsIndex)); @@ -463,6 +466,15 @@ void ReportRender::replaceGroupsFunction(BandDesignIntf *band) replaceGroupFunctionsInContainer(band, band); } +QColor ReportRender::makeBackgroundColor(BandDesignIntf* band){ + if (band->useAlternateBackgroundColor()){ + return datasources()->variable(QLatin1String("line_") + band->objectName().toLower()).toInt() %2 == 0 ? + band->backgroundColor() : + band->alternateBackgroundColor(); + } + return band->backgroundColor(); +} + BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesignIntf* bandData, ReportRender::DataRenderMode mode, bool isLast) { QCoreApplication::processEvents(); @@ -490,18 +502,9 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign if (patternBand->isFooter()) m_lastRenderedFooter = patternBand; - if (bandClone->useAlternateBackgroundColor()){ - bandClone->setBackgroundColor( - (datasources()->variable(QLatin1String("line_")+patternBand->objectName().toLower()).toInt() %2 == 0 ? - bandClone->backgroundColor() : - bandClone->alternateBackgroundColor() - ) - ); - } - + bandClone->setBackgroundColor(makeBackgroundColor(patternBand)); patternBand->emitBandRendered(bandClone); m_scriptEngineContext->setCurrentBand(bandClone); - emit(patternBand->afterRender()); if ( isLast && bandClone->keepFooterTogether() && bandClone->sliceLastRow() ){ if (m_maxHeightByColumn[m_currentColumn] < (bandClone->height()+m_reportFooterHeight)) @@ -545,8 +548,9 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign savePage(); startNewPage(); if (!bandIsSliced){ - BandDesignIntf* t = renderData(patternBand); - t->copyBookmarks(bandClone); + BandDesignIntf* t = renderData(patternBand, false); + t->copyBandAttributes(bandClone); + patternBand->emitBandReRendered(bandClone, t); delete bandClone; bandClone = t; } @@ -554,6 +558,7 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign if (!registerBand(bandClone)) { BandDesignIntf* upperPart = dynamic_cast(bandClone->cloneUpperPart(m_maxHeightByColumn[m_currentColumn])); registerBand(upperPart); + patternBand->emitBandReRendered(bandClone, upperPart); delete bandClone; bandClone = NULL; }; @@ -571,6 +576,7 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign if (patternBand->isFooter()) datasources()->clearGroupFunctionValues(patternBand->objectName()); + emit(patternBand->afterRender()); return bandClone; } return 0; @@ -832,7 +838,7 @@ void ReportRender::recalcIfNeeded(BandDesignIntf* band){ void ReportRender::renderDataHeader(BandDesignIntf *header) { recalcIfNeeded(header); - BandDesignIntf* renderedHeader = renderBand(header, 0); + BandDesignIntf* renderedHeader = renderBand(header, 0, StartNewPageAsNeeded); if (containsGroupFunctions(header)) m_recalcBands.append(renderedHeader); } @@ -1253,13 +1259,14 @@ BandDesignIntf *ReportRender::saveUppperPartReturnBottom(BandDesignIntf *band, i return bottomBandPart; } -BandDesignIntf *ReportRender::renderData(BandDesignIntf *patternBand) +BandDesignIntf *ReportRender::renderData(BandDesignIntf *patternBand, bool emitBeforeRender) { BandDesignIntf* bandClone = dynamic_cast(patternBand->cloneItem(PreviewMode)); m_scriptEngineContext->baseDesignIntfToScript(patternBand->parent()->objectName(), bandClone); m_scriptEngineContext->setCurrentBand(bandClone); - emit(patternBand->beforeRender()); + if (emitBeforeRender) + emit(patternBand->beforeRender()); if (patternBand->isFooter()){ replaceGroupsFunction(bandClone); diff --git a/limereport/lrreportrender.h b/limereport/lrreportrender.h index 739018e..46a35d0 100644 --- a/limereport/lrreportrender.h +++ b/limereport/lrreportrender.h @@ -169,12 +169,10 @@ private: BandDesignIntf *sliceBand(BandDesignIntf* band, BandDesignIntf *patternBand, bool isLast); BandDesignIntf* saveUppperPartReturnBottom(BandDesignIntf *band, int height, BandDesignIntf *patternBand); - BandDesignIntf* renderData(BandDesignIntf* patternBand); + BandDesignIntf* renderData(BandDesignIntf* patternBand, bool emitBeforeRender = true); void startNewColumn(); void startNewPage(bool isFirst = false); void resetPageNumber(ResetPageNuberType resetType); - //int findLastPageNumber(int currentPage); - //int findPageNumber(int currentPage); void savePage(bool isLast = false); QString toString(); void initColumns(); @@ -187,8 +185,8 @@ private: void renameChildItems(BaseDesignIntf *item); void renderGroupFooterByHeader(BandDesignIntf *groupHeader); void updateTOC(BaseDesignIntf* item, int pageNumber); - //PagesRange& currentRange(bool isTOC = false){ return (isTOC) ? m_ranges.first(): m_ranges.last();} void placeBandOnPage(BandDesignIntf *band, int columnIndex); + QColor makeBackgroundColor(BandDesignIntf *band); private: DataSourceManager* m_datasources; ScriptEngineContext* m_scriptEngineContext; @@ -223,7 +221,6 @@ private: bool m_newPageStarted; bool m_lostHeadersMoved; - }; } // namespace LimeReport #endif // LRREPORTRENDER_H diff --git a/limereport/lrscriptenginemanager.cpp b/limereport/lrscriptenginemanager.cpp index ba990d4..804a758 100644 --- a/limereport/lrscriptenginemanager.cpp +++ b/limereport/lrscriptenginemanager.cpp @@ -1937,7 +1937,10 @@ bool DatasourceFunctions::invalidate(const QString& datasourceName) QObject* DatasourceFunctions::createTableBuilder(QObject* horizontalLayout) { - return new TableBuilder(dynamic_cast(horizontalLayout), dynamic_cast(m_dataManager)); + LimeReport::HorizontalLayout* l = dynamic_cast(horizontalLayout); + if (l) + return new TableBuilder(l, m_dataManager); + return 0; } TableBuilder::TableBuilder(HorizontalLayout* layout, DataSourceManager* dataManager) @@ -1987,16 +1990,19 @@ void TableBuilder::fillInRowData(QObject* row) void TableBuilder::buildTable(const QString& datasourceName) { checkBaseLayout(); - m_dataManager->dataSourceHolder(datasourceName)->invalidate(IDataSource::RENDER_MODE); - IDataSource* ds = m_dataManager->dataSource(datasourceName); - if (ds){ - bool firstTime = true; - QObject* row = m_horizontalLayout; - while(!ds->eof()){ - if (!firstTime) row = addRow(); - else firstTime = false; - fillInRowData(row); - ds->next(); + IDataSourceHolder* dh = m_dataManager->dataSourceHolder(datasourceName); + if (dh) { + dh->invalidate(IDataSource::RENDER_MODE); + IDataSource* ds = m_dataManager->dataSource(datasourceName); + if (ds){ + bool firstTime = true; + QObject* row = m_horizontalLayout; + while(!ds->eof()){ + if (!firstTime) row = addRow(); + else firstTime = false; + fillInRowData(row); + ds->next(); + } } } } diff --git a/limereport/lrscriptenginemanager.h b/limereport/lrscriptenginemanager.h index 7f86a33..c5271f3 100644 --- a/limereport/lrscriptenginemanager.h +++ b/limereport/lrscriptenginemanager.h @@ -332,7 +332,7 @@ class DatasourceFunctions : public QObject{ Q_OBJECT public: explicit DatasourceFunctions(IDataSourceManager* dataManager) - : m_dataManager(dataManager){} + : m_dataManager(dynamic_cast(dataManager)){} Q_INVOKABLE bool first(const QString& datasourceName); Q_INVOKABLE bool next(const QString& datasourceName); Q_INVOKABLE bool prior(const QString& datasourceName); @@ -340,7 +340,7 @@ public: Q_INVOKABLE bool invalidate(const QString& datasourceName); Q_INVOKABLE QObject *createTableBuilder(QObject *horizontalLayout); private: - IDataSourceManager* m_dataManager; + DataSourceManager* m_dataManager; }; class ScriptFunctionsManager : public QObject{ diff --git a/limereport/lrsimplecrypt.cpp b/limereport/lrsimplecrypt.cpp index 6ebf15c..bc28a53 100644 --- a/limereport/lrsimplecrypt.cpp +++ b/limereport/lrsimplecrypt.cpp @@ -29,6 +29,8 @@ ****************************************************************************/ #include "lrsimplecrypt.h" +namespace LimeReport { + #if defined(LP64) || defined(_LP64) || defined(__LP64__) typedef unsigned int WORD; /* Should be 32-bit = 4 bytes */ #else @@ -62,8 +64,6 @@ void initPt(WTB& pt, QByteArray::Iterator* it, QByteArray::Iterator end){ } } -namespace LimeReport { - class ChipperPrivate{ friend class Chipper; public: @@ -117,7 +117,7 @@ QByteArray Chipper::cryptString(QString value) { QByteArray buff; QByteArray result; - buff += value; + buff += value.toUtf8(); WTB pt, ct, prior; if (!d->isPrepared()) diff --git a/limereport/scripteditor/lrscripthighlighter.cpp b/limereport/scripteditor/lrscripthighlighter.cpp index 0af09ba..6a65546 100644 --- a/limereport/scripteditor/lrscripthighlighter.cpp +++ b/limereport/scripteditor/lrscripthighlighter.cpp @@ -175,15 +175,15 @@ void ScriptHighlighter::highlightBlock(const QString& text) bool ScriptHighlighter::isKeyWord(const QString& word) { - for (int i = 0; i < KEYWORDS_COUNT-1; ++i){ - if (QLatin1String(keywords[i]) == word) return true; - } - return false; + return m_keywords.contains(word); } ScriptHighlighter::ScriptHighlighter(QTextDocument* parent): QSyntaxHighlighter(parent) { + for(int i=0; i +#include namespace LimeReport{ @@ -43,6 +44,8 @@ protected: QTextCharFormat m_formats[FormatsCount]; bool isKeyWord(const QString& word); void createParentheisisInfo(const char& literal, TextBlockData *data, const QString& text); +private: + QSet m_keywords; }; diff --git a/translations/limereport_ar.ts b/translations/limereport_ar.ts index 0240adc..dff2574 100644 --- a/translations/limereport_ar.ts +++ b/translations/limereport_ar.ts @@ -55,6 +55,29 @@ + + ImageItemEditor + + Image Item Editor + + + + Image + صورة + + + ... + + + + Resource path + + + + Select image file + + + LRVariableDialog @@ -375,18 +398,22 @@ p, li { white-space: pre-wrap; } Keep bottom space - - Start from new page - - - - Start new page - - Keep top space + + Cut + قص + + + Copy + نسخ + + + Print if empty + + LimeReport::BaseDesignIntf @@ -422,6 +449,14 @@ p, li { white-space: pre-wrap; } Create Horizontal Layout + + Lock item geometry + + + + Create Vertical Layout + + LimeReport::ConnectionDesc @@ -500,10 +535,6 @@ p, li { white-space: pre-wrap; } Use default application connection - - Dont keep credentals in lrxml - - defaultConnection @@ -516,6 +547,10 @@ p, li { white-space: pre-wrap; } Port + + Don't keep credentials in lrxml + + LimeReport::DataBand @@ -527,6 +562,26 @@ p, li { white-space: pre-wrap; } Use alternate background color + + Keep footer together + + + + Keep subdetail together + + + + Slice last row + + + + Start from new page + + + + Start new page + + LimeReport::DataBrowser @@ -621,6 +676,10 @@ p, li { white-space: pre-wrap; } DataFooter ذيل جدول البيانات + + Print always + + LimeReport::DataHeaderBand @@ -628,6 +687,18 @@ p, li { white-space: pre-wrap; } DataHeader رأس جدول البيانات + + Reprint on each page + + + + Repeat on each row + + + + Print always + + LimeReport::DataSourceManager @@ -659,6 +730,10 @@ p, li { white-space: pre-wrap; } Datasource with name "%1" already exists! + + Unknown parameter "%1" for variable "%2" found! + + LimeReport::DataSourceModel @@ -932,6 +1007,30 @@ p, li { white-space: pre-wrap; } TitleAlignCenter + + Layout + + + + Table + + + + Millimeters + + + + Inches + + + + Scale + + + + Split + + LimeReport::FlagsPropItem @@ -1049,6 +1148,18 @@ p, li { white-space: pre-wrap; } Watermark + + Edit + تحرير + + + Images (*.gif *.icns *.ico *.jpeg *.tga *.tiff *.wbmp *.webp *.png *.jpg *.bmp);;All(*.*) + + + + Ext. + + LimeReport::ItemLocationPropItem @@ -1156,6 +1267,28 @@ p, li { white-space: pre-wrap; } الكائن + + LimeReport::ObjectInspectorWidget + + Clear + + + + Filter + + + + Translate properties + + + + + LimeReport::PDFExporter + + Export to PDF + + + LimeReport::PageFooter @@ -1207,14 +1340,14 @@ p, li { white-space: pre-wrap; } Form نموذج - - PDF file name - أسم ملف PDF - Report file name أسم التقرير + + %1 file name + + LimeReport::PreviewReportWindow @@ -1226,10 +1359,6 @@ p, li { white-space: pre-wrap; } Report تقرير - - toolBar - شريط الأدوات - Print طباعة @@ -1330,6 +1459,46 @@ p, li { white-space: pre-wrap; } Text align + + MainToolBar + + + + EditModeTools + + + + InsertTextItem + + + + Add new TextItem + + + + Selection Mode + + + + Delete Item + + + + Del + + + + Printing + + + + Attention + Attention + + + The printing is in process + + LimeReport::ProxyHolder @@ -1800,16 +1969,65 @@ p, li { white-space: pre-wrap; } variable - - - LimeReport::RectMMPropItem - width - العرض + replaceCRwithBR + - height - الأرتفاع + hideIfEmpty + + + + hideEmptyItems + + + + useExternalPainter + + + + layoutSpacing + + + + printerName + + + + fontLetterSpacing + + + + hideText + + + + option3 + + + + units + + + + geometryLocked + + + + printBehavior + + + + shiftItems + + + + showLegend + + + + removeGap + @@ -1823,6 +2041,17 @@ p, li { white-space: pre-wrap; } الأرتفاع + + LimeReport::RectUnitPropItem + + width + العرض + + + height + الأرتفاع + + LimeReport::ReportDesignWidget @@ -2020,18 +2249,6 @@ p, li { white-space: pre-wrap; } Report file name أسم التقرير - - Rendering report - جاري قراءة التقرير - - - Abort - إجهاض - - - page rendered - تم إنشاء الصفحة - Warning تحذير @@ -2120,6 +2337,38 @@ p, li { white-space: pre-wrap; } Hide right panel | Alt+R + + Rendered %1 pages + + + + Cancel report rendering + + + + Vertical layout + + + + Lock selected items + + + + Unlock selected items + + + + Select one level items + + + + Attention + Attention + + + The rendering is in process + + LimeReport::ReportEnginePrivate @@ -2149,6 +2398,10 @@ This preview is no longer valid. Designer not found! + + %1 file name + + LimeReport::ReportFooter @@ -2285,6 +2538,41 @@ This preview is no longer valid. Datasource with name: "%1" already exists! + + CSV + + + + Separator + + + + ; + + + + Use first row as header + + + + + LimeReport::SVGItem + + SVG Image + + + + SVG (*.svg) + + + + Edit + تحرير + + + Watermark + + LimeReport::ScriptBrowser @@ -2457,6 +2745,10 @@ This preview is no longer valid. Function manager with name "%1" already exists! + + RowIndex + + LimeReport::SettingDialog @@ -2480,24 +2772,40 @@ This preview is no longer valid. Horizontal grid step تباعد الشبكة الأفقي - - Designer Setting - - - - Report Setting - - Suppress absent fields and variables warning - Use dark theme + Language - Language + Designer settings + + + + Theme + + + + Report units + + + + Script editor settings + + + + Font + خط + + + Indent size + + + + Report settings @@ -2515,6 +2823,13 @@ This preview is no longer valid. رأس البيانات الفرعية + + LimeReport::SvgEditor + + Select image file + + + LimeReport::TearOffBand @@ -2591,6 +2906,10 @@ This preview is no longer valid. Watermark + + Hide if empty + + LimeReport::TextItemEditor @@ -2602,22 +2921,10 @@ This preview is no longer valid. Content المحتوى - - Editor settings - إعدادات المحرر - - - Editor font - خطوط المحرر - Cancel إلغاء الأمر - - ... - - Ok موافق @@ -2915,5 +3222,57 @@ This preview is no longer valid. Datasource manager not found + + Export to PDF + + + + SVG Item + + + + VLayout + + + + image + + + + Dark + + + + Light + + + + Default + + + + Millimeters + + + + Inches + + + + margin + + + + '' + + + + series + + + + Series + + diff --git a/translations/limereport_es.ts b/translations/limereport_es.ts index 5123997..f8baa0b 100644 --- a/translations/limereport_es.ts +++ b/translations/limereport_es.ts @@ -55,6 +55,29 @@ Nombre de la Serie + + ImageItemEditor + + Image Item Editor + + + + Image + Imagen + + + ... + + + + Resource path + + + + Select image file + + + LRVariableDialog @@ -515,6 +538,10 @@ p, li { white-space: pre-wrap; } Print if empty Imprimir si está vacío + + Keep top space + + LimeReport::BaseDesignIntf @@ -554,6 +581,10 @@ p, li { white-space: pre-wrap; } Create Vertical Layout Crear diseño vertical + + Lock item geometry + + LimeReport::ConnectionDesc @@ -632,10 +663,6 @@ p, li { white-space: pre-wrap; } Use default application connection Utilice la conexión de aplicación predeterminada - - Dont keep credentals in lrxml - No mantener credentals en el lrxml - defaultConnection Conexión por defecto @@ -648,6 +675,10 @@ p, li { white-space: pre-wrap; } Port Puerto + + Don't keep credentials in lrxml + No mantener credentals en el lrxml + LimeReport::DataBand @@ -1112,6 +1143,22 @@ p, li { white-space: pre-wrap; } Table Tabla + + Millimeters + + + + Inches + + + + Scale + + + + Split + + LimeReport::FlagsPropItem @@ -1233,6 +1280,14 @@ p, li { white-space: pre-wrap; } Ext. Ext. + + Edit + Editar + + + Images (*.gif *.icns *.ico *.jpeg *.tga *.tiff *.wbmp *.webp *.png *.jpg *.bmp);;All(*.*) + + LimeReport::ItemLocationPropItem @@ -1350,6 +1405,10 @@ p, li { white-space: pre-wrap; } Filter Filtrar + + Translate properties + + LimeReport::PDFExporter @@ -1432,10 +1491,6 @@ p, li { white-space: pre-wrap; } Report Reporte - - toolBar - Barra herramientas - Print Imprimir @@ -1532,10 +1587,6 @@ p, li { white-space: pre-wrap; } Show toolbar Mostrar barra herramientas - - toolBar_2 - barra herramientas_2 - InsertTextItem Insertar objeto de texto @@ -1556,6 +1607,26 @@ p, li { white-space: pre-wrap; } Del Supr + + MainToolBar + + + + EditModeTools + + + + Printing + + + + Attention + Atención + + + The printing is in process + + LimeReport::ProxyHolder @@ -2062,16 +2133,29 @@ p, li { white-space: pre-wrap; } option3 Opción3 - - - LimeReport::RectMMPropItem - width - ancho + units + - height - alto + geometryLocked + + + + printBehavior + + + + shiftItems + + + + showLegend + + + + removeGap + @@ -2085,6 +2169,17 @@ p, li { white-space: pre-wrap; } alto + + LimeReport::RectUnitPropItem + + width + ancho + + + height + alto + + LimeReport::ReportDesignWidget @@ -2302,18 +2397,6 @@ p, li { white-space: pre-wrap; } Report file name Nombre de archivo del reporte - - Rendering report - Generando reporte - - - Abort - Abortar - - - page rendered - página generada - Warning Advertencia @@ -2386,6 +2469,34 @@ p, li { white-space: pre-wrap; } Vertical layout Diseño vertical + + Rendered %1 pages + + + + Cancel report rendering + + + + Lock selected items + + + + Unlock selected items + + + + Select one level items + + + + Attention + Atención + + + The rendering is in process + + LimeReport::ReportEnginePrivate @@ -2574,6 +2685,25 @@ Esta vista previa ya no es válida. Usa la primera fila como encabezado + + LimeReport::SVGItem + + SVG Image + + + + SVG (*.svg) + + + + Edit + Editar + + + Watermark + Marca de agua + + LimeReport::ScriptBrowser @@ -2776,10 +2906,6 @@ Esta vista previa ya no es válida. Suppress absent fields and variables warning Suprimir campos ausentes y variables de advertencia. - - Use dark theme - Usar tema oscuro - Language Idioma @@ -2808,6 +2934,10 @@ Esta vista previa ya no es válida. Theme Tema + + Report units + + LimeReport::SubDetailBand @@ -2823,6 +2953,13 @@ Esta vista previa ya no es válida. Encabezado sub-detalle + + LimeReport::SvgEditor + + Select image file + + + LimeReport::TearOffBand @@ -3227,5 +3364,45 @@ Esta vista previa ya no es válida. Default Por defecto + + SVG Item + + + + image + imagen + + + Dark + + + + Light + + + + Millimeters + + + + Inches + + + + margin + margen + + + '' + + + + series + series + + + Series + + diff --git a/translations/limereport_fr.ts b/translations/limereport_fr.ts index f7ec14c..cec566c 100644 --- a/translations/limereport_fr.ts +++ b/translations/limereport_fr.ts @@ -67,6 +67,38 @@ Séries + + ImageItemEditor + + + Image Item Editor + Éditeur d'image + + + + Image + Image + + + + + + + ... + + + + + Resource path + Chemin de ressources + + + + + Select image file + Sélectionner une image + + LRVariableDialog @@ -338,116 +370,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 @@ -455,53 +494,53 @@ 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 @@ -509,8 +548,8 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDesc - - + + defaultConnection Connexion par défaut @@ -564,32 +603,32 @@ p, li { white-space: pre-wrap; } Base de données - + ... - + Auto connect Connexion automatique - - Dont keep credentals in lrxml + + Don't keep credentials in lrxml Ne pas enregistrer les informations personnelles dans lrxml - + Check connection Tester la connexion - + Cancel Annuler - + Ok @@ -754,7 +793,7 @@ p, li { white-space: pre-wrap; } - + Attention @@ -784,12 +823,12 @@ p, li { white-space: pre-wrap; } Vouz-vous vraiment supprimer la source de donnée "%1"? - + Do you really want to delete variable "%1"? Vouz-vous vraiment supprimer la variable "%1"? - + Error Erreur @@ -853,32 +892,32 @@ p, li { white-space: pre-wrap; } Paramètre inconnu %1 pour la variable %2 ! - - + + Datasource "%1" not found! Source de donnée "%1" introuvable! - + Connection with name "%1" already exists! La connexion avec le nom "%1" existe déjà! - - - - - + + + + + Datasource with name "%1" already exists! La source de donnée avec le nom "%1" existe déjà! - + Database "%1" not found Base de données "%1 introuvable - + invalid connection Connexion invalide @@ -909,32 +948,32 @@ p, li { white-space: pre-wrap; } Editeur de Widgets - + Widget Box Widgets - + Object Inspector Inspecteur d'objets - + Property Editor Editeur de propriété - + Signals && Slots Editor Editeur de Signaux & Slots - + Resource Editor Editeur de ressource - + Action Editor Editeur d'actions @@ -1383,18 +1422,29 @@ p, li { white-space: pre-wrap; } LimeReport::ImageItem - - + + + Edit + Edition + + + + Watermark Filigrane - + + Images (*.gif *.icns *.ico *.jpeg *.tga *.tiff *.wbmp *.webp *.png *.jpg *.bmp);;All(*.*) + + + + Image Image - + Ext. Externe. @@ -1501,12 +1551,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" @@ -1514,7 +1564,7 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - + model is destroyed Le modèle a été supprimé @@ -1530,17 +1580,17 @@ p, li { white-space: pre-wrap; } LimeReport::ObjectInspectorWidget - + Clear Effacer - + Filter Filtrer - + Translate properties Traduire les popriétés @@ -1584,31 +1634,31 @@ p, li { white-space: pre-wrap; } LimeReport::PageItemDesignIntf - + Paste Coller - - + + Page is TOC Table de contenus - - + + Reset page number Réinitialiser le numéro de page - - + + Full page Page entière - - + + Set page size to printer Adapterr la taille de la page à l'imprimante @@ -1650,13 +1700,13 @@ p, li { white-space: pre-wrap; } - toolBar - Barre d'outils + MainToolBar + Barre d'outils principale - toolBar_2 - Barre d'élements + EditModeTools + Outils d'édition @@ -1790,30 +1840,45 @@ 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 + LimeReport::ProxyHolder - + Datasource has been invalidated La source de donnée n'a pas été validée @@ -2443,17 +2508,32 @@ p, li { white-space: pre-wrap; } Méthode d'impression - + + shiftItems + Décaler les éléments + + + + showLegend + Afficher la légende + + + + removeGap + Supprimer l'espace + + + Property Name Propriété - + Property value Valeur - + Warning Avertissement @@ -2491,27 +2571,27 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWidget - + Script Script - + Translations Traductions - + Report file name Nom du rapport - + Error Erreur - + Wrong file format Format de fichier incorrect @@ -2519,364 +2599,370 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWindow - + + + Rendered %1 pages + %1 pages préparées + + + + Cancel report rendering + Annuler la préparation + + + New Report Nouveau rapport - + New Report Page Nouvelle page - + Delete Report Page Supprimer une page - + Edit Mode Mode d'édition - + Undo Annuler - + Redo Répéter - + Copy Copier - + Paste Coller - + Cut Couper - + Settings Paramètres - + Use grid Utiliser la grille - + Use magnet Utiliser l'aimant - + Text Item Elément de texte - + Save Report Enregistrer le rapport - + Save Report As Enregistrer le rapport sous - + Load Report Ouvrir un rapport - + Delete item Supprimer élément - + Zoom In Zoom avant - + Zoom Out Zoom arrière - + Render Report Afficher l'aperçu du rapport - + Edit layouts mode Modifier le mode de mise en forme - + Horizontal layout Mise en page horizontale - + Vertical layout Disposition verticale - + About A propos - + Hide left panel | Alt+L Masquer le volet gauche - + Hide right panel | Alt+R Masquer le volet droite - + Delete dialog Supprimer la boite du dialogue - + Add new dialog Ajouter une boite de dialogue - + Lock selected items Verrouiller les éléments sélectionnés - + Unlock selected items Déverrouiller les éléments sélectionnés - + Select one level items Sélectionner un niveau d'éléments - + Report Tools Outils de rapport - + Main Tools Outils principales - + Font Police - + Text alignment Alignement de texte - + Items alignment Alignement des éléments - + Borders Bordures - + Report bands Bandesde rapport - + Report Header En-tête du rapport - + Report Footer Pied de rapport - + Page Header En-tête de page - + Page Footer Pied de page - + Data Données - + Data Header En-tête de données - + Data Footer Pied de données - + SubDetail Sous-détails - + SubDetailHeader En-tête de sous-détails - + SubDetailFooter Pied de sous-détails - + GroupHeader En-tête de groupe - + GroupFooter Pied de groupe - + Tear-off Band Bande détachable - + File Fichier - + Edit Edition - + Info - + Recent Files Fichiers récents - - + + Object Inspector Inspecteur d'objets - + Report structure Structure du rapport - + Widget Box Boite de Widget - + Property Editor Editeur de propriété - + Action Editor Editeur d'action - + Resource Editor Editeur de ressource - + SignalSlot Editor Editeur de Signaux & Slots - + Dialog Designer Tools Boite à outils du Designer - + Data Browser Navigateur de données - + Script Browser Navigateur de script - + Report has been modified! Do you want save the report? Le rapport a été modifié! Voulez-vous l'enregistrer? - - + + Report file name Nom du fichier du rapport - - Rendering report - Afficher l'aperçu du rapport + + Attention + Attention - - Abort - Quitter + + The rendering is in process + La préparation du rapport est en cours - - page rendered - du rendu de la page - - - + Warning Avertissement - + File "%1" not found! Fichier "%1" introuvable! @@ -2894,17 +2980,17 @@ p, li { white-space: pre-wrap; } Erreur - + %1 file name %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. @@ -2913,12 +2999,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 @@ -2942,24 +3028,24 @@ Cet aperçu n'est plus valide. LimeReport::ReportRender - - - + + + Error Erreur - + page index out of range Indice de la page dépassé - + Databand "%1" not found Bande de données "%1 introuvable - + Wrong using function %1 Utilisation incorrecte de la fonction "%1" @@ -3009,7 +3095,7 @@ Cet aperçu n'est plus valide. - + Preview Aperçu @@ -3041,6 +3127,7 @@ Cet aperçu n'est plus valide. + CSV @@ -3100,22 +3187,47 @@ Cet aperçu n'est plus valide. La source de donnée avec le nom "%1" existe déja - - + + Attention - + Connection is not specified La connexion n'est pas spécifiée - + Refresh Actualiser + + LimeReport::SVGItem + + + SVG Image + Image SVG + + + + SVG (*.svg) + + + + + + Edit + Edition + + + + + Watermark + Filigrane + + LimeReport::ScriptBrowser @@ -3129,27 +3241,24 @@ Cet aperçu n'est plus valide. Fonctions - - - - - - + + + ... - + Dialogs Dialogues - + Type - + Name Nom @@ -3202,13 +3311,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 @@ -3216,164 +3325,164 @@ Cet aperçu n'est plus valide. LimeReport::ScriptEngineManager - + GROUP FUNCTIONS Fonctions de groupe - - - - - - - - - - Value - Valeur - - - - - BandName - Nom de la bande - - - - Function manager with name "%1" already exists! - la fonction avec le nom \"%1\" existe déja! - - - - - FieldName - Nom du champ - - - - Variable %1 not found - Variable "%1" introuvable - - - - Field %1 not found in %2! - Champ "%1 introuvable dans %2! - - - - SYSTEM - Système - - - - NUMBER - Nombre - - - - - - - - Format - - - - - Precision - Précision - - - - - - - Locale - Local - - - - + + + + Value + Valeur + + + + + BandName + Nom de la bande + + + + Function manager with name "%1" already exists! + la fonction avec le nom \"%1\" existe déja! + + + + + FieldName + Nom du champ + + + + Variable %1 not found + Variable "%1" introuvable + + + + Field %1 not found in %2! + 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 + - - - - - - - - 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 @@ -3467,6 +3576,14 @@ Cet aperçu n'est plus valide. En-tête de sous-détails + + LimeReport::SvgEditor + + + Select image file + Sélectionner une image + + LimeReport::TearOffBand @@ -3653,17 +3770,17 @@ Cet aperçu n'est plus valide. Vérifié - + Report Item Element du rapport - + Property Propriété - + Source text Texte source @@ -3696,45 +3813,45 @@ Cet aperçu n'est plus valide. - + Data Données - + DataHeader En-tête de données - + DataFooter Pied de données - + GroupHeader En-tête de groupe - + GroupFooter Pied de groupe - + Page Footer Pied de page - + Page Header En-tête de page @@ -3753,67 +3870,67 @@ Cet aperçu n'est plus valide. - + SubDetail Sous-détails - + SubDetailHeader En-tête de sous-détails - + SubDetailFooter Pied de sous-détails - + Tear-off Band Bande détachable - + alignment Alignement - + Barcode Item Elément de code barre - + HLayout - - + + Image Item - + Shape Item - + itemLocation - + Text Item @@ -3824,153 +3941,165 @@ 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! - + bool - + QColor - + content Contenu - - + + + + datasource Source de donnée - - + + + + field Champ - + enum - + flags - + QFont - + QImage - + + + + + image + Image + + + int - - + + qreal - + QRect - + QRectF - + geometry - + QString - - + + Attention! - - + + Selected elements have different parent containers Les éléments sélectionnés ont un parent différent - + Object with name %1 already exists! 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 @@ -3996,16 +4125,7 @@ Cet aperçu n'est plus valide. '' - - - - - - - - - - + @@ -4028,23 +4148,23 @@ Cet aperçu n'est plus valide. Contenu vide - - + + Chart Item Elément du graphe - + First Prémier - + Second Second - + Thrid Troisième @@ -4055,7 +4175,7 @@ Cet aperçu n'est plus valide. - + Export to PDF Exporter au format PDF @@ -4070,22 +4190,38 @@ Cet aperçu n'est plus valide. Clair - + Default par défaut - - - + + + Millimeters Millimètres - + Inches Pouces + + + + SVG Item + + + + + series + Séries + + + + Series + Séries + diff --git a/translations/limereport_pl.ts b/translations/limereport_pl.ts index 61f693b..af65f1f 100644 --- a/translations/limereport_pl.ts +++ b/translations/limereport_pl.ts @@ -13,61 +13,51 @@ ChartItemEditor - Series editor Edytor serii - Series Serie - Add Dodaj - Delete Usuń - Name Nazwa - Values field Pole wartości - Color Kolor - Type Typ - Labels field Pole etykiet - Ok Ok @@ -77,35 +67,62 @@ Nazwa serii + + ImageItemEditor + + + Image Item Editor + + + + + Image + Obraz + + + + + + + ... + ... + + + + Resource path + + + + + + Select image file + + + LRVariableDialog - Variable Zmienna - Name Nazwa - Value Wartość - Type Typ - Mandatory Obowiązkowy @@ -119,13 +136,11 @@ LanguageSelectDialog - Dialog Dialog - Language Język @@ -134,19 +149,16 @@ LimeReport::AboutDialog - About O - Lime Report Lime Report - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -176,13 +188,11 @@ p, li { white-space: pre-wrap; } - Author Autor - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -193,13 +203,11 @@ p, li { white-space: pre-wrap; } - License Licencja - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -318,13 +326,11 @@ p, li { white-space: pre-wrap; } - Close Zamknij - Version 1.1.1 Wersja 1.1.1 @@ -376,116 +382,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 @@ -493,53 +506,53 @@ 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 @@ -547,8 +560,8 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDesc - - + + defaultConnection Domyślne połączenie @@ -558,91 +571,76 @@ p, li { white-space: pre-wrap; } - Connection Połączenie - Connection Name Nazwa połączenia - Use default application connection Używaj domyślnego połączenia aplikacji - Driver Sterownik - Server Serwer - Port Port - User Użytkownik - Password Hasło - Database Baza danych - - + ... ... - - + Auto connect Automatyczne połączenie - - - Dont keep credentals in lrxml + + Don't keep credentials in lrxml Nie przechowuj referencji w lrxml - - + Check connection Sprawdź połączenie - - + Cancel Anuluj - - + Ok Ok @@ -728,14 +726,11 @@ p, li { white-space: pre-wrap; } - - Datasources Źródła danych - Add database connection Dodaj połączenie z bazą danych @@ -753,79 +748,56 @@ p, li { white-space: pre-wrap; } - - - - - - - - - - - - - ... ... - Add new datasource Dodaj źródło danych - View data Podgląd danych - Change datasource Zmień źródło danych - Delete datasource Usuń źródło danych - Show error Pokaż błąd - Variables Zmienne - Add new variable Dodaj zmienną - Edit variable Edytuj zmienną - Delete variable Usuń zmienną - Grab variable Chwyć zmienną @@ -833,7 +805,7 @@ p, li { white-space: pre-wrap; } - + Attention Uwaga @@ -863,12 +835,12 @@ p, li { white-space: pre-wrap; } Czy chcesz naprawdę skasować "%1" źródło danych? - + Do you really want to delete variable "%1"? Czy chcesz naprawdę skasować zmienną "%1"? - + Error Błąd @@ -932,32 +904,32 @@ p, li { white-space: pre-wrap; } Nieznany parametr "%1" dla znalezionej zmiennej "%2"! - - + + Datasource "%1" not found! Źródło danych %1" nie znalezione! - + Connection with name "%1" already exists! Połączenie o nazwie "%1" już istnieje! - - - - - + + + + + Datasource with name "%1" already exists! Źródło danych o nazwie "%1" już istnieje! - + Database "%1" not found Baza danych "%1" nie znaleziona - + invalid connection Nieprawidłowe połączenie @@ -988,32 +960,32 @@ p, li { white-space: pre-wrap; } Edytuj widżety - + Widget Box Pudełko widżetów - + Object Inspector Inspektor obiektów - + Property Editor Edytor właściwości - + Signals && Slots Editor Edytor sygnałów i slotów - + Resource Editor Edytor zasobów - + Action Editor Edytor akcji @@ -1462,18 +1434,29 @@ p, li { white-space: pre-wrap; } LimeReport::ImageItem - - + + + Edit + Edycja + + + + Watermark Znak wodny - + + Images (*.gif *.icns *.ico *.jpeg *.tga *.tiff *.wbmp *.webp *.png *.jpg *.bmp);;All(*.*) + + + + Image Obraz - + Ext. Zewn. @@ -1580,12 +1563,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 @@ -1593,7 +1576,7 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - + model is destroyed Model danych jest zniszczony @@ -1609,17 +1592,17 @@ p, li { white-space: pre-wrap; } LimeReport::ObjectInspectorWidget - + Clear Wyczyść - + Filter Filtr - + Translate properties Przetłumacz właściwości @@ -1663,31 +1646,31 @@ p, li { white-space: pre-wrap; } LimeReport::PageItemDesignIntf - + Paste Wklej - - + + Page is TOC Strona to spis treści - - + + Reset page number Zresetuj numer strony - - + + Full page Cała strona - - + + Set page size to printer Ustaw rozmiar strony na drukarkę @@ -1696,7 +1679,6 @@ p, li { white-space: pre-wrap; } LimeReport::PreviewReportWidget - Form Formatka @@ -1715,221 +1697,200 @@ p, li { white-space: pre-wrap; } LimeReport::PreviewReportWindow - Preview Podgląd - View Widok - Report Raport - MainToolBar Główny pasek narzędzi - EditModeTools Narzędzia trybu edycji - Print Drukuj - Ctrl+P Ctrl+P - Zoom In Powiększenie - Zoom Out Pomniejszenie - - Prior Page Poprzednia strona - - Next Page Następna strona - - Close Preview Zamknij podgląd - Esc Esc - Edit Mode Tryb edycji - - Save to file Zapisz do pliku - - Show errors Pokaż błędy - First Page Pierwsza strona - First page Pierwsza strona - - Last Page Ostatnia strona - Print To PDF Drukuj do PDF - Fit page width Dopasuj szerokość strony - Fit page Dopasowanie do strony - One to one Jeden do jednego - Show Toolbar Pokaż pasek narzędzi - Show toolbar Pokaż pasek narzędzi - InsertTextItem Wstaw element tekstowy - Add new TextItem Dodaj nowy element tekstowy - Selection Mode Tryb wyboru - Delete Item Usuń element - Del Usuń - + + Printing + + + + Page: Strona: - + Font Czcionka - + Text align Wyrównanie tekstu - + of %1 z %1 + + + Attention + Uwaga + + + + The printing is in process + + LimeReport::ProxyHolder - + Datasource has been invalidated Źródło danych zostało unieważnione @@ -2559,17 +2520,32 @@ p, li { white-space: pre-wrap; } Zachowanie drukowania - + + shiftItems + + + + + showLegend + + + + + removeGap + + + + Property Name Nazwa właściwości - + Property value Wartość właściwości - + Warning Uwaga @@ -2607,27 +2583,27 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWidget - + Script Skrypt - + Translations Tłumaczenia - + Report file name Nazwa pliku raportu - + Error Błąd - + Wrong file format Zły format pliku @@ -2635,364 +2611,370 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWindow - + + + Rendered %1 pages + + + + + Cancel report rendering + + + + New Report Nowy raport - + New Report Page Nowa strona raportu - + Delete Report Page Usuń stronę raportu - + Edit Mode Tryb edycji - + Undo Cofnij - + Redo Ponów - + Copy Kopiuj - + Paste Wklej - + Cut Wytnij - + Settings Ustawienia - + Use grid Użyj siatki - + Use magnet Użyj magnesu - + Text Item Element tekstowy - + Save Report Zapisz raport - + Save Report As Zapisz raport jako - + Load Report Wczytaj raport - + Delete item Usuń pozycję - + Zoom In Powiększ - + Zoom Out Pomniejsz - + Render Report Renderuj raport - + Edit layouts mode Edytuj tryb układu - + Horizontal layout Układ poziomy - + Vertical layout Układ pionowy - + About O - + Hide left panel | Alt+L Ukryj lewy panel | Alt+L - + Hide right panel | Alt+R Ukryj prawy panel | Alt+R - + Delete dialog Dialog kasowania - + Add new dialog Dodaj nowy dialog - + Lock selected items Zablokuj zaznaczone elementy - + Unlock selected items Odblokuj zaznaczone elementy - + Select one level items Wybierz elementy na jednym poziomie - + Report Tools Narzędzia raportu - + Main Tools Główne narzędzia - + Font Czcionka - + Text alignment Wyrównanie tekstu - + Items alignment Wyrównanie elementów - + Borders Krawędzie - + Report bands Pasma raportu - + Report Header Nagłówek raportu - + Report Footer Stopka raportu - + Page Header Nagłówek strony - + Page Footer Stopka strony - + Data Dane - + Data Header Nagłówek danych - + Data Footer Stopka danych - + SubDetail Pod szczegóły - + SubDetailHeader Nagłówek pod szczegółów - + SubDetailFooter Stopka pod szczegółów - + GroupHeader Nagłówek grupujący - + GroupFooter Stopka grupująca - + Tear-off Band Sekcja zrywająca - + File Plik - + Edit Edycja - + Info Informacja - + Recent Files Ostatnie pliki - - + + Object Inspector Inspektor obiektów - + Report structure Struktura raportu - + Widget Box Pudełko widżetów - + Property Editor Edytor właściowości - + Action Editor Edytor akcji - + Resource Editor Edytor zasobów - + SignalSlot Editor Edytor sygnałów i slotów - + Dialog Designer Tools Narzędzia projektowania dialogów - + Data Browser Przeglądarka danych - + Script Browser Przeglądarka skryptów - + Report has been modified! Do you want save the report? Raport został zmodyfikowany! Czy chcesz zapisać raport? - - + + Report file name Nazwa pliku raportu - - Rendering report - Renderowanie raportu + + Attention + Uwaga - - Abort - Przerwij + + The rendering is in process + - - page rendered - strona wyrenderowana - - - + Warning Ostrzeżenie - + File "%1" not found! Plik "%1" nie znaleziony! @@ -3010,17 +2992,17 @@ p, li { white-space: pre-wrap; } Błąd - + %1 file name %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. @@ -3029,12 +3011,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 @@ -3058,24 +3040,24 @@ Ten podgląd nie jest już prawidłowy. LimeReport::ReportRender - - - + + + Error Błąd - + page index out of range indeks strony poza zakresem - + Databand "%1" not found Sekcja danych "%1" nie znaleziona - + Wrong using function %1 Złe użycie funkcji %1 @@ -3084,126 +3066,105 @@ Ten podgląd nie jest już prawidłowy. LimeReport::SQLEditDialog - Datasource Źródło danych - Connection Połączenie - Datasource Name Nazwa źródła danych - Subdetail Podszczegóły - Master datasource Główne źródło danych - Subquery mode Tryb podkwerendy - Filter mode Tryb filtra - - SQL SQL - - + Preview Podgląd - Hide Preview Ukryj podgląd - Child datasource Źródło danych dziecka - Fields map Mapa pól - - ... ... - Data preview Podgląd danych - + CSV CSV - Separator Separator - ; ; - Use first row as header Użyj pierwszego wiersza jako nagłówka - Cancel Anuluj - Ok Ok @@ -3238,67 +3199,78 @@ Ten podgląd nie jest już prawidłowy. Źródło danych o nazwie %1 już istnieje - - + + Attention Uwaga - + Connection is not specified Połączenie nie zostało określone - + Refresh Odśwież + + LimeReport::SVGItem + + + SVG Image + + + + + SVG (*.svg) + + + + + + Edit + Edycja + + + + + Watermark + Znak wodny + + LimeReport::ScriptBrowser - Form Formatka - Functions Funkcje - - - - - - - - - - - - + + + ... ... - - + Dialogs Dialogi - - + Type Typ - - + Name Nazwa @@ -3334,19 +3306,16 @@ Ten podgląd nie jest już prawidłowy. LimeReport::ScriptEditor - Form Formatka - Data Dane - Functions Funkcje @@ -3354,13 +3323,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 @@ -3368,164 +3337,164 @@ Ten podgląd nie jest już prawidłowy. LimeReport::ScriptEngineManager - + GROUP FUNCTIONS FUNKCJE GRUPUJĄCE - - - - - - - - - - Value - Wartość - - - - - BandName - Nazwa sekcji - - - - Function manager with name "%1" already exists! - Menedżer funkcji o nazwie "%1" już istnieje! - - - - - FieldName - Nazwa pola - - - - Variable %1 not found - Nie znaleziono zmiennej %1 - - - - Field %1 not found in %2! - Pole %1 nie znalezione w %2! - - - - SYSTEM - SYSTEM - - - - NUMBER - LICZBA - - - - - - - - Format - Format - - - - Precision - Precyzja - - - - - - - Locale - Ustawienia lokalne - - - - + + + + Value + Wartość + + + + + BandName + Nazwa sekcji + + + + Function manager with name "%1" already exists! + Menedżer funkcji o nazwie "%1" już istnieje! + + + + + FieldName + Nazwa pola + + + + Variable %1 not found + Nie znaleziono zmiennej %1 + + + + Field %1 not found in %2! + 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 - + CurrencySymbol Symbol waluty + + + + + + + + + + + + GENERAL + OGÓLNY + - - - - - - - - GENERAL - OGÓLNY - - - - - Name Nazwa @@ -3534,85 +3503,71 @@ Ten podgląd nie jest już prawidłowy. LimeReport::SettingDialog - Designer setting Ustawienia projektanta - Designer settings Ustawienia projektowania - Default font Domyślna czcionka - Grid Siatka - Vertical grid step Pionowy krok siatki - Horizontal grid step Poziomy krok siatki - Language Język - Theme Motyw - Report units Jednostki raportu - Script editor settings Ustawienia edytora skryptów - Font Czcionka - Indent size Rozmiar akapitu - Report settings Ustawienia raportu - Suppress absent fields and variables warning Pomiń ostrzerzenie o nieobecności pól i zmiennych @@ -3633,6 +3588,14 @@ Ten podgląd nie jest już prawidłowy. Nagłówek pod szczegółów + + LimeReport::SvgEditor + + + Select image file + + + LimeReport::TearOffBand @@ -3746,37 +3709,31 @@ Ten podgląd nie jest już prawidłowy. LimeReport::TextItemEditor - Text Item Editor Edytor pozycji tekstowych - Content Zawartość - Ok Ok - Ctrl+Return Ctrl+Return - Cancel Anuluj - Esc Esc @@ -3785,66 +3742,57 @@ Ten podgląd nie jest już prawidłowy. LimeReport::TranslationEditor - Form Formatka - Languages Języki - - ... ... - Pages Strony - Strings Ciąg znaków - Source Text Tekst źródłowy - Translation Tłumaczenie - Checked Zaznaczony - + Report Item Element raportu - + Property Właściowość - + Source text Tekst źródłowy @@ -3877,45 +3825,45 @@ Ten podgląd nie jest już prawidłowy. - + Data Dane - + DataHeader Nagłówek danych - + DataFooter Stopka danych - + GroupHeader Nagłówek grupujący - + GroupFooter Stopka grupująca - + Page Footer Stopka strony - + Page Header Nagłówek strony @@ -3934,67 +3882,67 @@ Ten podgląd nie jest już prawidłowy. - + SubDetail Pod szczegóły - + SubDetailHeader Nagłówek pod szczegółów - + SubDetailFooter Stopka pod szczegółów - + Tear-off Band Sekcja zrywające - + alignment wyrównanie - + Barcode Item Kod kreskowy - + HLayout Układ poziomy - - + + Image Item Element obrazu - + Shape Item Kształt elementu - + itemLocation Lokalizacja elementu - + Text Item Element tekstowy @@ -4005,153 +3953,165 @@ 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"! - + bool Wartość logiczna - + QColor Color - + content Zawrtość - - + + + + datasource Źródło danych - - + + + + field Pole - + enum wyliczenie - + flags Falgi - + QFont Czcionka - + QImage Obraz - + + + + + image + Obraz + + + int Liczba całkowita - - + + qreal Liczba - + QRect QRect - + QRectF QRectF - + geometry geometria - + QString Ciąg znaków - - + + Attention! Uwaga! - - + + Selected elements have different parent containers Wybrane elementy mają różne pojemniki nadrzędne - + Object with name %1 already exists! 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 @@ -4201,28 +4161,28 @@ Ten podgląd nie jest już prawidłowy. - + Export to PDF Eksport do PDF - - + + Chart Item Element wykresu - + First Pierwszy - + Second Drugi - + Thrid Trzeci @@ -4242,22 +4202,38 @@ Ten podgląd nie jest już prawidłowy. Jasny - + Default Domyślny - - - + + + Millimeters Milimetry - + Inches Cale + + + + SVG Item + + + + + series + Seria + + + + Series + Serie + diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts index 2d935f0..94d0370 100644 --- a/translations/limereport_ru.ts +++ b/translations/limereport_ru.ts @@ -540,10 +540,6 @@ p, li { white-space: pre-wrap; } Ok Ок - - Dont keep credentals in lrxml - Не хранить учетные данные в lrxml - defaultConnection Соединение по умолчанию @@ -556,6 +552,10 @@ p, li { white-space: pre-wrap; } Port Порт + + Don't keep credentials in lrxml + Не хранить учетные данные в lrxml + LimeReport::DataBand diff --git a/translations/limereport_zh.ts b/translations/limereport_zh.ts index 0d81a3e..6944a50 100644 --- a/translations/limereport_zh.ts +++ b/translations/limereport_zh.ts @@ -523,10 +523,6 @@ p, li { white-space: pre-wrap; } Auto connect 自动连接 - - Dont keep credentals in lrxml - 不在lrxml文件中保存凭证 - Check connection 检查连接 @@ -563,6 +559,10 @@ p, li { white-space: pre-wrap; } defaultConnection 默认连接 + + Don't keep credentials in lrxml + 不在lrxml文件中保存凭证 + LimeReport::DataBand @@ -1168,6 +1168,10 @@ p, li { white-space: pre-wrap; } Edit 编辑 + + Images (*.gif *.icns *.ico *.jpeg *.tga *.tiff *.wbmp *.webp *.png *.jpg *.bmp);;All(*.*) + + LimeReport::ItemLocationPropItem @@ -2029,6 +2033,14 @@ p, li { white-space: pre-wrap; } shiftItems 偏移组件 + + showLegend + + + + removeGap + + LimeReport::RectPropItem @@ -2557,6 +2569,25 @@ This preview is no longer valid. 第一行为头 + + LimeReport::SVGItem + + SVG Image + + + + SVG (*.svg) + + + + Edit + 编辑 + + + Watermark + 水印 + + LimeReport::ScriptBrowser @@ -2806,6 +2837,13 @@ This preview is no longer valid. 子细节头 + + LimeReport::SvgEditor + + Select image file + 选择图像文件 + + LimeReport::TearOffBand @@ -3234,5 +3272,21 @@ This preview is no longer valid. '' '' + + SVG Item + + + + image + 图像 + + + series + 数据系列 + + + Series + 数据系列 +