mirror of
https://github.com/python-LimeReport/LimeReport.git
synced 2024-12-23 20:22:58 +03:00
getPageFreeSpace(page) has been added to script function manager
This commit is contained in:
parent
3376ea7c08
commit
03963f3685
@ -133,7 +133,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
|
||||
|
||||
LIMEREPORT_VERSION_MAJOR = 1
|
||||
LIMEREPORT_VERSION_MINOR = 5
|
||||
LIMEREPORT_VERSION_RELEASE = 82
|
||||
LIMEREPORT_VERSION_RELEASE = 83
|
||||
|
||||
LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}'
|
||||
DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\"
|
||||
|
@ -208,10 +208,12 @@ void ReportRender::analizeItem(ContentItemDesignIntf* contentItem, BandDesignInt
|
||||
}
|
||||
|
||||
void ReportRender::analizeContainer(BaseDesignIntf* item, BandDesignIntf* band){
|
||||
foreach(BaseDesignIntf* child, item->childBaseItems()){
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(child);
|
||||
if (contentItem) analizeItem(contentItem, band);
|
||||
else analizeContainer(child, band);
|
||||
if (item){
|
||||
foreach(BaseDesignIntf* child, item->childBaseItems()){
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(child);
|
||||
if (contentItem) analizeItem(contentItem, band);
|
||||
else analizeContainer(child, band);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -407,12 +409,13 @@ void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentIt
|
||||
}
|
||||
|
||||
void ReportRender::extractGroupFunctionsFromContainer(BaseDesignIntf* baseItem, BandDesignIntf* band){
|
||||
foreach (BaseDesignIntf* item, baseItem->childBaseItems()) {
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(item);
|
||||
if (contentItem) extractGroupFuntionsFromItem(contentItem, band);
|
||||
else extractGroupFunctionsFromContainer(item, band);
|
||||
if (baseItem){
|
||||
foreach (BaseDesignIntf* item, baseItem->childBaseItems()) {
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(item);
|
||||
if (contentItem) extractGroupFuntionsFromItem(contentItem, band);
|
||||
else extractGroupFunctionsFromContainer(item, band);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ReportRender::extractGroupFunctions(BandDesignIntf *band)
|
||||
@ -436,11 +439,12 @@ void ReportRender::replaceGroupFunctionsInItem(ContentItemDesignIntf* contentIte
|
||||
if (captures.size()<5){
|
||||
content.replace(captures.at(0),QString("%1(%2,%3)").arg(functionName).arg('"'+expressionIndex+'"').arg('"'+band->objectName()+'"'));
|
||||
} else {
|
||||
content.replace(captures.at(0),QString("%1(%2,%3,%4)")
|
||||
.arg(functionName)
|
||||
.arg('"'+expressionIndex+'"')
|
||||
.arg('"'+band->objectName()+'"')
|
||||
.arg(captures.at(4)));
|
||||
content.replace(captures.at(0),QString("%1(%2,%3,%4)").arg(
|
||||
functionName,
|
||||
'"'+expressionIndex+'"',
|
||||
'"'+band->objectName()+'"',
|
||||
captures.at(4)
|
||||
));
|
||||
}
|
||||
}
|
||||
pos += rx.matchedLength();
|
||||
@ -454,10 +458,12 @@ void ReportRender::replaceGroupFunctionsInItem(ContentItemDesignIntf* contentIte
|
||||
|
||||
void ReportRender::replaceGroupFunctionsInContainer(BaseDesignIntf* baseItem, BandDesignIntf* band)
|
||||
{
|
||||
foreach(BaseDesignIntf* item, baseItem->childBaseItems()){
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(item);
|
||||
if (contentItem) replaceGroupFunctionsInItem(contentItem, band);
|
||||
else replaceGroupFunctionsInContainer(item, band);
|
||||
if (baseItem){
|
||||
foreach(BaseDesignIntf* item, baseItem->childBaseItems()){
|
||||
ContentItemDesignIntf* contentItem = dynamic_cast<ContentItemDesignIntf*>(item);
|
||||
if (contentItem) replaceGroupFunctionsInItem(contentItem, band);
|
||||
else replaceGroupFunctionsInContainer(item, band);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -574,8 +580,10 @@ BandDesignIntf* ReportRender::renderBand(BandDesignIntf *patternBand, BandDesign
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (patternBand->isFooter())
|
||||
if (patternBand->isFooter()){
|
||||
datasources()->clearGroupFunctionValues(patternBand->objectName());
|
||||
}
|
||||
|
||||
emit(patternBand->afterRender());
|
||||
return bandClone;
|
||||
}
|
||||
@ -1301,7 +1309,7 @@ void ReportRender::startNewPage(bool isFirst)
|
||||
m_newPageStarted = true;
|
||||
initColumns();
|
||||
initRenderPage();
|
||||
|
||||
m_scriptEngineContext->setCurrentPage(m_renderPageItem);
|
||||
m_scriptEngineContext->baseDesignIntfToScript(m_renderPageItem->patternName(), m_renderPageItem);
|
||||
emit m_patternPageItem->beforeRender();
|
||||
|
||||
@ -1343,7 +1351,8 @@ void ReportRender::cutGroups()
|
||||
{
|
||||
m_popupedExpression.clear();
|
||||
m_popupedValues.clear();
|
||||
foreach(BandDesignIntf* groupBand,m_childBands.keys()){
|
||||
//foreach(BandDesignIntf* groupBand,m_childBands.keys()){
|
||||
for(BandDesignIntf* groupBand : m_childBands.keys()){
|
||||
if (m_childBands.value(groupBand)->tryToKeepTogether()){
|
||||
foreach(BandDesignIntf* band, *m_childBands.value(groupBand)){
|
||||
m_renderPageItem->removeBand(band);
|
||||
@ -1419,7 +1428,8 @@ void ReportRender::checkLostHeadersOnPrevPage()
|
||||
|
||||
if (lostHeaders.size() > 0){
|
||||
m_lostHeadersMoved = true;
|
||||
qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
//qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
foreach(BandDesignIntf* header, lostHeaders){
|
||||
registerBand(header);
|
||||
}
|
||||
@ -1456,7 +1466,8 @@ void ReportRender::checkLostHeadersInPrevColumn()
|
||||
|
||||
if (lostHeaders.size() > 0){
|
||||
m_lostHeadersMoved = true;
|
||||
qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
// qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen);
|
||||
foreach(BandDesignIntf* header, lostHeaders){
|
||||
registerBand(header);
|
||||
}
|
||||
@ -1538,7 +1549,7 @@ void ReportRender::savePage(bool isLast)
|
||||
}
|
||||
m_renderPageItem->placeTearOffBand();
|
||||
|
||||
m_scriptEngineContext->setCurrentPage(m_renderPageItem);
|
||||
//m_scriptEngineContext->setCurrentPage(m_renderPageItem);
|
||||
emit m_patternPageItem->afterRender();
|
||||
if (isLast)
|
||||
emit m_patternPageItem->afterLastPageRendered();
|
||||
|
@ -547,14 +547,13 @@ QVariant ScriptEngineManager::evaluateScript(const QString& script){
|
||||
void ScriptEngineManager::addBookMark(const QString& uniqKey, const QString& content){
|
||||
Q_ASSERT(m_context != 0);
|
||||
if (m_context){
|
||||
BandDesignIntf* currentBand = m_context->getCurrentBand();
|
||||
BandDesignIntf* currentBand = m_context->currentBand();
|
||||
if (currentBand)
|
||||
currentBand->addBookmark(uniqKey, content);
|
||||
else if (m_context->getCurrentPage()) {
|
||||
m_context->getCurrentPage()->addBookmark(uniqKey, content);
|
||||
else if (m_context->currentPage()) {
|
||||
m_context->currentPage()->addBookmark(uniqKey, content);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int ScriptEngineManager::findPageIndexByBookmark(const QString &uniqKey)
|
||||
@ -570,6 +569,16 @@ int ScriptEngineManager::findPageIndexByBookmark(const QString &uniqKey)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ScriptEngineManager::getPageFreeSpace(PageItemDesignIntf* page){
|
||||
if (page){
|
||||
int height = 0;
|
||||
foreach(BandDesignIntf* band, page->bands()){
|
||||
height += band->height();
|
||||
}
|
||||
return page->height() - height;
|
||||
} else return -1;
|
||||
}
|
||||
|
||||
void ScriptEngineManager::addTableOfContentsItem(const QString& uniqKey, const QString& content, int indent)
|
||||
{
|
||||
Q_ASSERT(m_context != 0);
|
||||
@ -1306,7 +1315,7 @@ void ScriptEngineContext::setTableOfContents(TableOfContents* tableOfContents)
|
||||
m_tableOfContents = tableOfContents;
|
||||
}
|
||||
|
||||
PageItemDesignIntf* ScriptEngineContext::getCurrentPage() const
|
||||
PageItemDesignIntf* ScriptEngineContext::currentPage() const
|
||||
{
|
||||
return m_currentPage;
|
||||
}
|
||||
@ -1317,7 +1326,7 @@ void ScriptEngineContext::setCurrentPage(PageItemDesignIntf* currentPage)
|
||||
m_currentBand = 0;
|
||||
}
|
||||
|
||||
BandDesignIntf* ScriptEngineContext::getCurrentBand() const
|
||||
BandDesignIntf* ScriptEngineContext::currentBand() const
|
||||
{
|
||||
return m_currentBand;
|
||||
}
|
||||
@ -1693,6 +1702,10 @@ int ScriptFunctionsManager::findPageIndexByBookmark(const QString &uniqKey)
|
||||
return scriptEngineManager()->findPageIndexByBookmark(uniqKey);
|
||||
}
|
||||
|
||||
int ScriptFunctionsManager::getPageFreeSpace(QObject* page){
|
||||
return scriptEngineManager()->getPageFreeSpace(dynamic_cast<PageItemDesignIntf*>(page));
|
||||
}
|
||||
|
||||
void ScriptFunctionsManager::addTableOfContentsItem(const QString& uniqKey, const QString& content, int indent)
|
||||
{
|
||||
scriptEngineManager()->addTableOfContentsItem(uniqKey, content, indent);
|
||||
|
@ -199,9 +199,9 @@ public:
|
||||
void setInitScript(const QString& initScript);
|
||||
bool runInitScript();
|
||||
|
||||
BandDesignIntf* getCurrentBand() const;
|
||||
BandDesignIntf* currentBand() const;
|
||||
void setCurrentBand(BandDesignIntf* currentBand);
|
||||
PageItemDesignIntf* getCurrentPage() const;
|
||||
PageItemDesignIntf* currentPage() const;
|
||||
void setCurrentPage(PageItemDesignIntf* currentPage);
|
||||
TableOfContents* tableOfContents() const;
|
||||
void setTableOfContents(TableOfContents* tableOfContents);
|
||||
@ -389,6 +389,7 @@ public:
|
||||
Q_INVOKABLE QScriptValue createWrapper(QScriptValue item);
|
||||
#endif
|
||||
Q_INVOKABLE QFont font(QVariantMap params);
|
||||
Q_INVOKABLE int getPageFreeSpace(QObject *page);
|
||||
ScriptEngineManager *scriptEngineManager() const;
|
||||
void setScriptEngineManager(ScriptEngineManager *scriptEngineManager);
|
||||
static QColor createQColor(const QString& color){ return QColor(color);}
|
||||
@ -473,6 +474,7 @@ public:
|
||||
int findPageIndexByBookmark(const QString& uniqKey);
|
||||
void addTableOfContentsItem(const QString& uniqKey, const QString& content, int indent);
|
||||
void clearTableOfContents();
|
||||
int getPageFreeSpace(PageItemDesignIntf *page);
|
||||
ScriptValueType moveQObjectToScript(QObject* object, const QString objectName);
|
||||
protected:
|
||||
void updateModel();
|
||||
|
Loading…
Reference in New Issue
Block a user