Merge branch 'develop' into feature/Extract_Designer_to_plugin

This commit is contained in:
Arin Alexander 2017-12-11 14:53:41 +03:00
commit 4c3e96b01e
14 changed files with 3676 additions and 75 deletions

View File

@ -75,7 +75,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MAJOR = 1
LIMEREPORT_VERSION_MINOR = 4 LIMEREPORT_VERSION_MINOR = 4
LIMEREPORT_VERSION_RELEASE = 54 LIMEREPORT_VERSION_RELEASE = 57
LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}' LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}'
DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\" DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\"

View File

@ -1,9 +1,21 @@
#include <QApplication> #include <QApplication>
#include <LimeReport> #include <LimeReport>
#include <QTranslator>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
QTranslator limeReportTranslator;
QString translationPath = QApplication::applicationDirPath();
translationPath.append("/languages");
limeReportTranslator.load("limereport_"+QLocale::system().name(),translationPath);
a.installTranslator(&limeReportTranslator);
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),translationPath);
a.installTranslator(&qtTranslator);
LimeReport::ReportEngine report; LimeReport::ReportEngine report;
if (a.arguments().count()>1){ if (a.arguments().count()>1){
report.loadFromFile(a.arguments().at(1)); report.loadFromFile(a.arguments().at(1));

View File

@ -95,7 +95,7 @@ void ChartItemEditor::init()
ui->tableWidget->setColumnCount(1); ui->tableWidget->setColumnCount(1);
ui->tableWidget->setRowCount(m_charItem->series().count()); ui->tableWidget->setRowCount(m_charItem->series().count());
ui->tableWidget->horizontalHeader()->setStretchLastSection(true); ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Series name")); ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem(tr("Series name")));
rebuildTable(); rebuildTable();

View File

@ -11,7 +11,7 @@
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>Series editor</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>

View File

@ -48,8 +48,8 @@ namespace{
LimeReport::ItemLocationPropItem::ItemLocationPropItem(QObject* object, ObjectsList* objects, const QString &name, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly) LimeReport::ItemLocationPropItem::ItemLocationPropItem(QObject* object, ObjectsList* objects, const QString &name, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly)
:LimeReport::ObjectPropItem(object, objects, name, displayName, value, parent, readonly){ :LimeReport::ObjectPropItem(object, objects, name, displayName, value, parent, readonly){
m_locationMap.insert("Band",LimeReport::ItemDesignIntf::Band); m_locationMap.insert(tr("Band"),LimeReport::ItemDesignIntf::Band);
m_locationMap.insert("Page",LimeReport::ItemDesignIntf::Page); m_locationMap.insert(tr("Page"),LimeReport::ItemDesignIntf::Page);
} }

View File

@ -90,7 +90,7 @@ contains(CONFIG,zint){
####Automatically build required translation files (*.qm) ####Automatically build required translation files (*.qm)
contains(CONFIG,build_translations){ contains(CONFIG,build_translations){
LANGUAGES = ru es_ES ar LANGUAGES = ru es_ES ar fr
defineReplace(prependAll) { defineReplace(prependAll) {
for(a,$$1):result += $$2$${a}$$3 for(a,$$1):result += $$2$${a}$$3

View File

@ -628,10 +628,10 @@ QPointF BaseDesignIntf::modifyPosForAlignedItem(const QPointF& pos){
result.setX(leftBorder); result.setX(leftBorder);
break; break;
case RightItemAlign: case RightItemAlign:
result.setX(parent->width()-rightBorder); result.setX(parent->width() - (rightBorder + width()));
break; break;
case CenterItemAlign: case CenterItemAlign:
result.setX((avaibleSpace-width())/2); result.setX((avaibleSpace-width()) / 2 + leftBorder);
break; break;
case ParentWidthItemAlign: case ParentWidthItemAlign:
result.setX(leftBorder); result.setX(leftBorder);

View File

@ -134,6 +134,19 @@ void QObjectPropertyModel::translatePropertyName()
tr("condition"); tr("condition");
tr("groupFieldName"); tr("groupFieldName");
tr("keepGroupTogether"); tr("keepGroupTogether");
tr("endlessHeight");
tr("extendedHeight");
tr("isExtendedInDesignMode");
tr("pageIsTOC");
tr("setPageSizeToPrinter");
tr("fillInSecondPass");
tr("chartTitle");
tr("chartType");
tr("drawLegendBorder");
tr("labelsField");
tr("legendAlign");
tr("series");
tr("titleAlign");
} }
void QObjectPropertyModel::clearObjectsList() void QObjectPropertyModel::clearObjectsList()

View File

@ -54,10 +54,10 @@ QWidget *EnumPropItem::createProperyEditor(QWidget *parent) const
QStringList enumValues; QStringList enumValues;
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){ for (int i=0;i<propEnum.keyCount();i++){
if (m_acceptableValues.isEmpty()) enumValues.append(propEnum.key(i)); if (m_acceptableValues.isEmpty()) enumValues.append(tr(propEnum.key(i)));
else { else {
if (m_acceptableValues.contains(propEnum.value(i))){ if (m_acceptableValues.contains(propEnum.value(i))){
enumValues.append(propEnum.key(i)); enumValues.append(tr(propEnum.key(i)));
} }
} }
} }
@ -75,6 +75,74 @@ void EnumPropItem::slotEnumChanged(const QString &text)
} }
} }
void EnumPropItem::initTranslation()
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){
m_translation.insert(QString(tr(propEnum.key(i))), QString(propEnum.key(i)));
}
}
void EnumPropItem::translateEnumItemName()
{
tr("Default");
tr("Portrait");
tr("Landscape");
tr("NoneAutoWidth");
tr("MaxWordLength");
tr("MaxStringLength");
tr("TransparentMode");
tr("OpaqueMode");
tr("Angle0");
tr("Angle90");
tr("Angle180");
tr("Angle270");
tr("Angle45");
tr("Angle315");
tr("DateTime");
tr("Double");
tr("NoBrush");
tr("SolidPattern");
tr("Dense1Pattern");
tr("Dense2Pattern");
tr("Dense3Pattern");
tr("Dense4Pattern");
tr("Dense5Pattern");
tr("Dense6Pattern");
tr("Dense7Pattern");
tr("HorPattern");
tr("VerPattern");
tr("CrossPattern");
tr("BDiagPattern");
tr("FDiagPattern");
tr("LeftToRight");
tr("RightToLeft");
tr("LayoutDirectionAuto");
tr("LeftItemAlign");
tr("RightItemAlign");
tr("CenterItemAlign");
tr("ParentWidthItemAlign");
tr("DesignedItemAlign");
tr("HorizontalLine");
tr("VerticalLine");
tr("Ellipse");
tr("Rectangle");
tr("Page");
tr("Band");
tr("Horizontal");
tr("Vertical");
tr("VerticalUniform");
tr("Pie");
tr("VerticalBar");
tr("HorizontalBar");
tr("LegendAlignTop");
tr("LegendAlignCenter");
tr("LegendAlignBottom");
tr("TitleAlignLeft");
tr("TitleAlignRight");
tr("TitleAlignCenter");
}
void EnumPropItem::setPropertyEditorData(QWidget *propertyEditor, const QModelIndex &) const void EnumPropItem::setPropertyEditorData(QWidget *propertyEditor, const QModelIndex &) const
{ {
ComboBoxEditor *editor=qobject_cast<ComboBoxEditor *>(propertyEditor); ComboBoxEditor *editor=qobject_cast<ComboBoxEditor *>(propertyEditor);
@ -90,13 +158,13 @@ void EnumPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod
QString EnumPropItem::nameByType(int value) const QString EnumPropItem::nameByType(int value) const
{ {
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
return propEnum.valueToKey(value); return tr(propEnum.valueToKey(value));
} }
int EnumPropItem::typeByName(const QString &value) const int EnumPropItem::typeByName(const QString &value) const
{ {
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
return propEnum.keyToValue(value.toLatin1()); return propEnum.keyToValue(m_translation.value(value).toLatin1());
} }
QString EnumPropItem::displayValue() const QString EnumPropItem::displayValue() const

View File

@ -31,17 +31,18 @@
#define LRENUMPROPITEM_H #define LRENUMPROPITEM_H
#include "lrobjectpropitem.h" #include "lrobjectpropitem.h"
#include <QMap>
namespace LimeReport{ namespace LimeReport{
class EnumPropItem : public ObjectPropItem class EnumPropItem : public ObjectPropItem
{ {
Q_OBJECT Q_OBJECT
public: public:
EnumPropItem():ObjectPropItem(), m_settingValue(false){} EnumPropItem():ObjectPropItem(), m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly) EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){} :ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly, QVector<int> acceptableValues) EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly, QVector<int> acceptableValues)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){} :ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){initTranslation();}
QWidget* createProperyEditor(QWidget *parent) const; QWidget* createProperyEditor(QWidget *parent) const;
QString displayValue() const; QString displayValue() const;
void setPropertyEditorData(QWidget * propertyEditor, const QModelIndex &) const; void setPropertyEditorData(QWidget * propertyEditor, const QModelIndex &) const;
@ -52,9 +53,13 @@ protected:
int typeByName(const QString& propertyValue) const; int typeByName(const QString& propertyValue) const;
private slots: private slots:
void slotEnumChanged(const QString& text); void slotEnumChanged(const QString& text);
private:
void initTranslation();
void translateEnumItemName();
private: private:
QVector<int> m_acceptableValues; QVector<int> m_acceptableValues;
bool m_settingValue; bool m_settingValue;
QMap<QString, QString> m_translation;
}; };
} }
#endif // LRENUMPROPITEM_H #endif // LRENUMPROPITEM_H

View File

@ -58,14 +58,16 @@ void FlagsPropItem::createChildren()
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++) for (int i=0;i<propEnum.keyCount();i++)
{ {
if ( propEnum.keyToValue(propEnum.key(i)) !=0 ) {
this->appendItem(new LimeReport::FlagPropItem( this->appendItem(new LimeReport::FlagPropItem(
object(), objects(), QString(propEnum.key(i)), QString(propEnum.key(i)), object(), objects(), QString(propEnum.key(i)), tr(propEnum.key(i)),
bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))), bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))),
this, false this, false
) )
); );
} }
} }
}
void FlagsPropItem::updateChildren() void FlagsPropItem::updateChildren()
{ {
@ -93,10 +95,10 @@ QString FlagsPropItem::displayValue() const
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++) for (int i=0;i<propEnum.keyCount();i++)
{ {
if ( (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i) )) if ((propEnum.keyToValue(propEnum.key(i)) == 0) ? propertyValue().toInt() == 0 : (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i))) == propEnum.keyToValue(propEnum.key(i)))
{ {
if (result.isEmpty()) result+=propEnum.key(i); if (result.isEmpty()) result+= tr(propEnum.key(i));
else result=result+" | "+propEnum.key(i); else result=result+" | "+tr(propEnum.key(i));
} }
} }
@ -113,6 +115,15 @@ void FlagsPropItem::slotEnumChanged(QString /*text*/)
{ {
} }
void FlagsPropItem::translateFlagsItem()
{
tr("NoLine");
tr("TopLine");
tr("BottomLine");
tr("LeftLine");
tr("RightLine");
}
FlagPropItem::FlagPropItem(QObject* object, ObjectsList* objects, const QString &propName, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly) FlagPropItem::FlagPropItem(QObject* object, ObjectsList* objects, const QString &propName, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly)
:BoolPropItem(object, objects, propName,displayName,value,parent,readonly) :BoolPropItem(object, objects, propName,displayName,value,parent,readonly)
{ {
@ -129,8 +140,8 @@ void FlagPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod
bool value = qobject_cast<CheckBoxEditor*>(propertyEditor)->isChecked(); bool value = qobject_cast<CheckBoxEditor*>(propertyEditor)->isChecked();
model->setData(index,value); model->setData(index,value);
int flags = object()->property(parent()->propertyName().toLatin1()).toInt(); int flags = object()->property(parent()->propertyName().toLatin1()).toInt();
if (value) flags=flags | valueByName(displayName()); if (value) flags = flags | valueByName(propertyName());
else if (flags&valueByName(displayName())) flags=flags ^ valueByName(displayName()); else if (flags & valueByName(propertyName())) flags = flags ^ valueByName(propertyName());
setValueToObject(parent()->propertyName(),flags); setValueToObject(parent()->propertyName(),flags);
parent()->setPropertyValue(flags); parent()->setPropertyValue(flags);
} }

View File

@ -46,6 +46,8 @@ public:
virtual void setPropertyValue(QVariant propertyValue); virtual void setPropertyValue(QVariant propertyValue);
private slots: private slots:
void slotEnumChanged(QString); void slotEnumChanged(QString);
private:
void translateFlagsItem();
private: private:
QSet<int> m_acceptableValues; QSet<int> m_acceptableValues;
QString nameByType(int propertyValue) const; QString nameByType(int propertyValue) const;

File diff suppressed because it is too large Load Diff

View File

@ -12,43 +12,51 @@
<name>ChartItemEditor</name> <name>ChartItemEditor</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation type="unfinished">Форма</translation> <translation type="obsolete">Форма</translation>
</message> </message>
<message> <message>
<source>Series</source> <source>Series</source>
<translation type="unfinished"></translation> <translation>Серии</translation>
</message> </message>
<message> <message>
<source>Add</source> <source>Add</source>
<translation type="unfinished"></translation> <translation>Добавить</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished"></translation> <translation>Удалить</translation>
</message> </message>
<message> <message>
<source>Name</source> <source>Name</source>
<translation type="unfinished">Имя переменной</translation> <translation>Наименование</translation>
</message> </message>
<message> <message>
<source>Values field</source> <source>Values field</source>
<translation type="unfinished"></translation> <translation>Значения</translation>
</message> </message>
<message> <message>
<source>Color</source> <source>Color</source>
<translation type="unfinished"></translation> <translation>Цвет</translation>
</message> </message>
<message> <message>
<source>Type</source> <source>Type</source>
<translation type="unfinished">Тип</translation> <translation>Тип</translation>
</message> </message>
<message> <message>
<source>Labels field</source> <source>Labels field</source>
<translation type="unfinished"></translation> <translation>Подписи</translation>
</message> </message>
<message> <message>
<source>Ok</source> <source>Ok</source>
<translation type="unfinished">Ок</translation> <translation>Ок</translation>
</message>
<message>
<source>Series name</source>
<translation>Серии</translation>
</message>
<message>
<source>Series editor</source>
<translation>Редактор серий</translation>
</message> </message>
</context> </context>
<context> <context>
@ -75,18 +83,18 @@
</message> </message>
<message> <message>
<source>Mandatory</source> <source>Mandatory</source>
<translation type="unfinished"></translation> <translation>Обязательная</translation>
</message> </message>
</context> </context>
<context> <context>
<name>LanguageSelectDialog</name> <name>LanguageSelectDialog</name>
<message> <message>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Диалог</translation>
</message> </message>
<message> <message>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation>Язык</translation>
</message> </message>
</context> </context>
<context> <context>
@ -143,7 +151,7 @@ p, li { white-space: pre-wrap; }
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/span&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;justify&quot; style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600; color:#000000;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p align=&quot;justify&quot; style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600; color:#000000;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Copyright 2015 Arin Alexander. All rights reserved.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Copyright 2015 Arin Alexander. All rights reserved.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -260,7 +268,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;; font-style:italic;&quot;&gt;signature of Ty Coon&lt;/span&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;, 1 April 1990&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;; font-style:italic;&quot;&gt;signature of Ty Coon&lt;/span&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;, 1 April 1990&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:15px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;Ty Coon, President of Vice&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:15px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;monospace&apos;;&quot;&gt;Ty Coon, President of Vice&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:19px; margin-bottom:19px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;sans-serif&apos;;&quot;&gt;That&apos;s all there is to it!&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:19px; margin-bottom:19px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;sans-serif&apos;;&quot;&gt;That&apos;s all there is to it!&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -390,15 +398,15 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Keep bottom space</source> <source>Keep bottom space</source>
<translation type="unfinished"></translation> <translation>Сохранять отступ снизу</translation>
</message> </message>
<message> <message>
<source>Start from new page</source> <source>Start from new page</source>
<translation type="unfinished"></translation> <translation>Начинать с новой страницы</translation>
</message> </message>
<message> <message>
<source>Start new page</source> <source>Start new page</source>
<translation type="unfinished"></translation> <translation>Начинать новую страницу</translation>
</message> </message>
</context> </context>
<context> <context>
@ -730,6 +738,256 @@ p, li { white-space: pre-wrap; }
<translation>Редактор действий</translation> <translation>Редактор действий</translation>
</message> </message>
</context> </context>
<context>
<name>LimeReport::EnumPropItem</name>
<message>
<source>Default</source>
<translation>По умолчанию</translation>
</message>
<message>
<source>Portrait</source>
<translation>Портретная</translation>
</message>
<message>
<source>Landscape</source>
<translation>Альбомная</translation>
</message>
<message>
<source>NoneAutoWidth</source>
<translation>Нет</translation>
</message>
<message>
<source>MaxWordLength</source>
<translation>По ширине слова</translation>
</message>
<message>
<source>MaxStringLength</source>
<translation>По ширине строки</translation>
</message>
<message>
<source>TransparentMode</source>
<translation>Прозрачный</translation>
</message>
<message>
<source>OpaqueMode</source>
<translation>Заливка</translation>
</message>
<message>
<source>Angle0</source>
<translation>0</translation>
</message>
<message>
<source>Angle90</source>
<translation>90</translation>
</message>
<message>
<source>Angle180</source>
<translation>180</translation>
</message>
<message>
<source>Angle270</source>
<translation>270</translation>
</message>
<message>
<source>Angle45</source>
<translation>45</translation>
</message>
<message>
<source>Angle315</source>
<translation>315</translation>
</message>
<message>
<source>DateTime</source>
<translation>Дата и время</translation>
</message>
<message>
<source>Double</source>
<translation>Число</translation>
</message>
<message>
<source>NoBrush</source>
<translation>Нет заливки</translation>
</message>
<message>
<source>SolidPattern</source>
<translation>Сплошная заливка</translation>
</message>
<message>
<source>Dense1Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense2Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense3Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense4Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense5Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense6Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dense7Pattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HorPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>VerPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CrossPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BDiagPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FDiagPattern</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LeftToRight</source>
<translation>Слева на право</translation>
</message>
<message>
<source>RightToLeft</source>
<translation>С права на лево</translation>
</message>
<message>
<source>LayoutDirectionAuto</source>
<translation>Авто</translation>
</message>
<message>
<source>LeftItemAlign</source>
<translation>Слева</translation>
</message>
<message>
<source>RightItemAlign</source>
<translation>Справа</translation>
</message>
<message>
<source>CenterItemAlign</source>
<translation>По центру</translation>
</message>
<message>
<source>ParentWidthItemAlign</source>
<translation>По ширине родителя</translation>
</message>
<message>
<source>DesignedItemAlign</source>
<translation>Заданное положение</translation>
</message>
<message>
<source>HorizontalLine</source>
<translation>Горизонтальная линия</translation>
</message>
<message>
<source>VerticalLine</source>
<translation>Вертикальная линия</translation>
</message>
<message>
<source>Ellipse</source>
<translation>Элипс</translation>
</message>
<message>
<source>Rectangle</source>
<translation>Прямоугольник</translation>
</message>
<message>
<source>Page</source>
<translation>Страница</translation>
</message>
<message>
<source>Band</source>
<translation>Раздел</translation>
</message>
<message>
<source>Horizontal</source>
<translation>Горизонтально</translation>
</message>
<message>
<source>Vertical</source>
<translation>Вертикально</translation>
</message>
<message>
<source>VerticalUniform</source>
<translation>Вертикально равномерно</translation>
</message>
<message>
<source>Pie</source>
<translation>Круговая</translation>
</message>
<message>
<source>VerticalBar</source>
<translation>Вертикальные столбцы</translation>
</message>
<message>
<source>HorizontalBar</source>
<translation>Горизонтальные столбцы</translation>
</message>
<message>
<source>LegendAlignTop</source>
<translation>Сверху</translation>
</message>
<message>
<source>LegendAlignCenter</source>
<translation>По центру</translation>
</message>
<message>
<source>LegendAlignBottom</source>
<translation>Снизу</translation>
</message>
<message>
<source>TitleAlignLeft</source>
<translation>Слева</translation>
</message>
<message>
<source>TitleAlignRight</source>
<translation>Справа</translation>
</message>
<message>
<source>TitleAlignCenter</source>
<translation>По цетру</translation>
</message>
</context>
<context>
<name>LimeReport::FlagsPropItem</name>
<message>
<source>NoLine</source>
<translation>Нет границ</translation>
</message>
<message>
<source>TopLine</source>
<translation>Верхняя граница</translation>
</message>
<message>
<source>BottomLine</source>
<translation>Нижняя граница</translation>
</message>
<message>
<source>LeftLine</source>
<translation>Левая граница</translation>
</message>
<message>
<source>RightLine</source>
<translation>Правая граница</translation>
</message>
</context>
<context> <context>
<name>LimeReport::FontEditorWidget</name> <name>LimeReport::FontEditorWidget</name>
<message> <message>
@ -816,6 +1074,17 @@ p, li { white-space: pre-wrap; }
<translation>Изображение</translation> <translation>Изображение</translation>
</message> </message>
</context> </context>
<context>
<name>LimeReport::ItemLocationPropItem</name>
<message>
<source>Band</source>
<translation>Раздел</translation>
</message>
<message>
<source>Page</source>
<translation>Страница</translation>
</message>
</context>
<context> <context>
<name>LimeReport::ItemsAlignmentEditorWidget</name> <name>LimeReport::ItemsAlignmentEditorWidget</name>
<message> <message>
@ -1421,7 +1690,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>securityLevel</source> <source>securityLevel</source>
<translation type="unfinished">Уровень безопасности</translation> <translation>Уровень безопасности</translation>
</message> </message>
<message> <message>
<source>testValue</source> <source>testValue</source>
@ -1429,11 +1698,11 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>whitespace</source> <source>whitespace</source>
<translation type="unfinished">Отступ</translation> <translation>Отступ</translation>
</message> </message>
<message> <message>
<source>cornerRadius</source> <source>cornerRadius</source>
<translation type="unfinished">Радиус закругления</translation> <translation>Радиус закругления</translation>
</message> </message>
<message> <message>
<source>shapeColor</source> <source>shapeColor</source>
@ -1487,6 +1756,58 @@ p, li { white-space: pre-wrap; }
<source>repeatOnEachRow</source> <source>repeatOnEachRow</source>
<translation>Печатать на каждой странице</translation> <translation>Печатать на каждой странице</translation>
</message> </message>
<message>
<source>endlessHeight</source>
<translation>Бесконечная страница</translation>
</message>
<message>
<source>extendedHeight</source>
<translation>Дополнителная высота</translation>
</message>
<message>
<source>isExtendedInDesignMode</source>
<translation>Увеличенный размер в дизайнере</translation>
</message>
<message>
<source>pageIsTOC</source>
<translation>Оглавление</translation>
</message>
<message>
<source>setPageSizeToPrinter</source>
<translation>Отправлять размер страницы принтеру</translation>
</message>
<message>
<source>fillInSecondPass</source>
<translation>Заполнять на втором проходе</translation>
</message>
<message>
<source>chartTitle</source>
<translation>Заголовок диаграммы</translation>
</message>
<message>
<source>chartType</source>
<translation>Тип диаграммы</translation>
</message>
<message>
<source>drawLegendBorder</source>
<translation>Границы вокруг легенды</translation>
</message>
<message>
<source>labelsField</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>legendAlign</source>
<translation>Расположение легенды</translation>
</message>
<message>
<source>series</source>
<translation>Серии</translation>
</message>
<message>
<source>titleAlign</source>
<translation>Расположение заголовка</translation>
</message>
</context> </context>
<context> <context>
<name>LimeReport::RectMMPropItem</name> <name>LimeReport::RectMMPropItem</name>
@ -1534,7 +1855,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Translations</source> <source>Translations</source>
<translation type="unfinished"></translation> <translation>Переводы</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1834,7 +2155,7 @@ This preview is no longer valid.</source>
</message> </message>
<message> <message>
<source>Language %1 already exists</source> <source>Language %1 already exists</source>
<translation type="unfinished"></translation> <translation>Перевод %1 уже существует!</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2024,15 +2345,15 @@ This preview is no longer valid.</source>
<name>LimeReport::ScriptEditor</name> <name>LimeReport::ScriptEditor</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation type="unfinished">Форма</translation> <translation>Форма</translation>
</message> </message>
<message> <message>
<source>Data</source> <source>Data</source>
<translation type="unfinished">Данные</translation> <translation>Данные</translation>
</message> </message>
<message> <message>
<source>Functions</source> <source>Functions</source>
<translation type="unfinished">Функции</translation> <translation>Функции</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2122,35 +2443,35 @@ This preview is no longer valid.</source>
</message> </message>
<message> <message>
<source>Datasource</source> <source>Datasource</source>
<translation type="unfinished">Источник данных</translation> <translation>Источник данных</translation>
</message> </message>
<message> <message>
<source>ValueField</source> <source>ValueField</source>
<translation type="unfinished"></translation> <translation>Поле значения</translation>
</message> </message>
<message> <message>
<source>KeyField</source> <source>KeyField</source>
<translation type="unfinished"></translation> <translation>Поле ключа</translation>
</message> </message>
<message> <message>
<source>KeyFieldValue</source> <source>KeyFieldValue</source>
<translation type="unfinished"></translation> <translation>Значение поля ключа</translation>
</message> </message>
<message> <message>
<source>Unique identifier</source> <source>Unique identifier</source>
<translation type="unfinished"></translation> <translation>Уникальный идентификатор</translation>
</message> </message>
<message> <message>
<source>Content</source> <source>Content</source>
<translation type="unfinished">Содержимое</translation> <translation>Содержимое</translation>
</message> </message>
<message> <message>
<source>Indent</source> <source>Indent</source>
<translation type="unfinished"></translation> <translation>Отступ</translation>
</message> </message>
<message> <message>
<source>datasourceName</source> <source>datasourceName</source>
<translation type="unfinished"></translation> <translation>Источника данных</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2326,47 +2647,47 @@ This preview is no longer valid.</source>
<name>LimeReport::TranslationEditor</name> <name>LimeReport::TranslationEditor</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation type="unfinished">Форма</translation> <translation>Форма</translation>
</message> </message>
<message> <message>
<source>Languages</source> <source>Languages</source>
<translation type="unfinished"></translation> <translation>Языки</translation>
</message> </message>
<message> <message>
<source>...</source> <source>...</source>
<translation type="unfinished">...</translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Pages</source> <source>Pages</source>
<translation type="unfinished"></translation> <translation>Страницы</translation>
</message> </message>
<message> <message>
<source>Strings</source> <source>Strings</source>
<translation type="unfinished"></translation> <translation>Строки</translation>
</message> </message>
<message> <message>
<source>Source Text</source> <source>Source Text</source>
<translation type="unfinished"></translation> <translation>Исходный текст</translation>
</message> </message>
<message> <message>
<source>Translation</source> <source>Translation</source>
<translation type="unfinished"></translation> <translation>Превод</translation>
</message> </message>
<message> <message>
<source>Checked</source> <source>Checked</source>
<translation type="unfinished"></translation> <translation>Проверено</translation>
</message> </message>
<message> <message>
<source>Report Item</source> <source>Report Item</source>
<translation type="unfinished"></translation> <translation>Элемент отчета</translation>
</message> </message>
<message> <message>
<source>Property</source> <source>Property</source>
<translation type="unfinished"></translation> <translation>Свойство</translation>
</message> </message>
<message> <message>
<source>Source text</source> <source>Source text</source>
<translation type="unfinished"></translation> <translation>Исходный текст</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2600,19 +2921,19 @@ This preview is no longer valid.</source>
</message> </message>
<message> <message>
<source>Chart Item</source> <source>Chart Item</source>
<translation type="unfinished"></translation> <translation>Диаграмма</translation>
</message> </message>
<message> <message>
<source>First</source> <source>First</source>
<translation type="unfinished"></translation> <translation>Первая</translation>
</message> </message>
<message> <message>
<source>Second</source> <source>Second</source>
<translation type="unfinished"></translation> <translation>Вторая</translation>
</message> </message>
<message> <message>
<source>Thrid</source> <source>Thrid</source>
<translation type="unfinished"></translation> <translation>Третья</translation>
</message> </message>
</context> </context>
</TS> </TS>