diff options
| author | 2018-07-27 23:51:12 -0400 | |
|---|---|---|
| committer | 2018-07-27 23:51:12 -0400 | |
| commit | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (patch) | |
| tree | 1e50f5f666f419143f510d5ded00fe2006b7bd85 /SQLiteStudio3/guiSQLiteStudio | |
| parent | d9aa870e5d509cc7309ab82dd102a937ab58613a (diff) | |
New upstream version 3.2.1+dfsg1upstream/3.2.1+dfsg1
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio')
159 files changed, 21446 insertions, 9700 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/.DS_Store b/SQLiteStudio3/guiSQLiteStudio/.DS_Store Binary files differnew file mode 100644 index 0000000..74fa124 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/.DS_Store diff --git a/SQLiteStudio3/guiSQLiteStudio/common/bindparam.h b/SQLiteStudio3/guiSQLiteStudio/common/bindparam.h new file mode 100644 index 0000000..76cdac1 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/bindparam.h @@ -0,0 +1,15 @@ +#ifndef BINDPARAM_H +#define BINDPARAM_H + +#include <QString> +#include <QVariant> + +struct BindParam +{ + int position = 0; + QString originalName; + QString newName; + QVariant value; +}; + +#endif // BINDPARAM_H diff --git a/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp b/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp index 655a9aa..35e99c8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/datawidgetmapper.cpp @@ -1,6 +1,7 @@ #include "datawidgetmapper.h" #include <QAbstractItemModel> #include <QWidget> +#include <QDebug> DataWidgetMapper::DataWidgetMapper(QObject *parent) : QObject(parent) @@ -121,6 +122,7 @@ void DataWidgetMapper::submit() idx = model->index(currentIndex, entry->columnIndex); value = entry->widget->property(entry->propertyName.toLatin1().constData()); + qDebug() << "copying from form view for idx" << idx << "value:" << value; model->setData(idx, value, Qt::EditRole); } } diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp index 8aaeefd..c67cc73 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.cpp @@ -80,7 +80,7 @@ void ExtActionContainer::defShortcut(int action, CfgStringEntry *cfgEntry) void ExtActionContainer::setShortcutContext(const QList<qint32> actions, Qt::ShortcutContext context) { - foreach (qint32 act, actions) + for (qint32 act : actions) actionMap[act]->setShortcutContext(context); } @@ -100,6 +100,11 @@ void ExtActionContainer::attachActionInMenu(QAction* parentAction, QAction* chil menu->addAction(childAction); } +void ExtActionContainer::addSeparatorInMenu(int parentAction, QToolBar* toolbar) +{ + addSeparatorInMenu(actionMap[parentAction], toolbar); +} + void ExtActionContainer::addSeparatorInMenu(QAction *parentAction, QToolBar* toolbar) { QMenu* menu = getMenuForAction(parentAction, toolbar); @@ -125,7 +130,7 @@ void ExtActionContainer::createAction(int action, QAction* qAction, const QObjec void ExtActionContainer::deleteActions() { - foreach (QAction* action, actionMap.values()) + for (QAction* action : actionMap.values()) delete action; actionMap.clear(); @@ -133,7 +138,7 @@ void ExtActionContainer::deleteActions() void ExtActionContainer::refreshShortcuts() { - foreach (int action, actionMap.keys()) + for (int action : actionMap.keys()) { if (!shortcuts.contains(action)) continue; diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.h b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.h index 0c860f7..159d4e5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.h +++ b/SQLiteStudio3/guiSQLiteStudio/common/extactioncontainer.h @@ -135,6 +135,7 @@ class GUI_API_EXPORT ExtActionContainer void attachActionInMenu(int parentAction, int childAction, QToolBar* toolbar); void attachActionInMenu(int parentAction, QAction* childAction, QToolBar* toolbar); void attachActionInMenu(QAction* parentAction, QAction* childAction, QToolBar* toolbar); + void addSeparatorInMenu(int parentAction, QToolBar* toolbar); void addSeparatorInMenu(QAction* parentAction, QToolBar *toolbar); void updateShortcutTips(); diff --git a/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.cpp b/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.cpp index 48ea46e..f3539d5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.cpp @@ -1,5 +1,6 @@ #include "userinputfilter.h" #include "common/unused.h" +#include "common/lazytrigger.h" #include <QTimer> #include <QLineEdit> @@ -7,27 +8,23 @@ UserInputFilter::UserInputFilter(QLineEdit* lineEdit, QObject* filterHandler, co QObject(lineEdit), lineEdit(lineEdit) { - timer = new QTimer(this); - timer->setSingleShot(false); - timer->setInterval(200); - connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterModified(QString))); - connect(timer, SIGNAL(timeout()), this, SLOT(applyFilter())); + trigger = new LazyTrigger(200, this); + connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterModified())); + connect(trigger, SIGNAL(triggered()), this, SLOT(applyFilter())); connect(this, SIGNAL(applyFilter(QString)), filterHandler, handlerSlot); } void UserInputFilter::setDelay(int msecs) { - timer->setInterval(msecs); + trigger->setDelay(msecs); } -void UserInputFilter::filterModified(const QString& newValue) +void UserInputFilter::filterModified() { - UNUSED(newValue); - timer->start(); + trigger->schedule(); } void UserInputFilter::applyFilter() { - timer->stop(); emit applyFilter(lineEdit->text()); } diff --git a/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.h b/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.h index 1b6f7ee..36d54ed 100644 --- a/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.h +++ b/SQLiteStudio3/guiSQLiteStudio/common/userinputfilter.h @@ -4,8 +4,8 @@ #include "guiSQLiteStudio_global.h" #include <QObject> -class QTimer; class QLineEdit; +class LazyTrigger; class GUI_API_EXPORT UserInputFilter : public QObject { @@ -17,11 +17,11 @@ class GUI_API_EXPORT UserInputFilter : public QObject void setDelay(int msecs); private: - QTimer* timer = nullptr; + LazyTrigger* trigger = nullptr; QLineEdit* lineEdit = nullptr; private slots: - void filterModified(const QString& newValue); + void filterModified(); void applyFilter(); signals: diff --git a/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp b/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp index 8543d37..f4098bc 100644 --- a/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp @@ -195,12 +195,11 @@ QVariant ConfigMapper::getCommonConfigValueFromWidget(QWidget* widget, CfgEntry* QVariant ConfigMapper::getCustomConfigValueFromWidget(QWidget* widget, CfgEntry* key, bool& ok) { - CustomConfigWidgetPlugin* plugin = nullptr; QList<CustomConfigWidgetPlugin*> handlers; handlers += internalCustomConfigWidgets; handlers += PLUGINS->getLoadedPlugins<CustomConfigWidgetPlugin>(); - foreach (plugin, handlers) + for (CustomConfigWidgetPlugin* plugin : handlers) { if (plugin->isConfigForWidget(key, widget)) return plugin->getWidgetConfigValue(widget, ok); @@ -275,7 +274,7 @@ void ConfigMapper::saveFromWidget(QWidget *widget, bool noTransaction) if (!noTransaction && isPersistant()) CFG->beginMassSave(); - foreach (QWidget* w, allConfigWidgets) + for (QWidget* w : allConfigWidgets) saveWidget(w, allConfigEntries); if (!noTransaction && isPersistant()) @@ -369,12 +368,11 @@ void ConfigMapper::handleConfigComboBox(QWidget* widget, const QHash<QString, Cf bool ConfigMapper::applyCustomConfigToWidget(CfgEntry* key, QWidget* widget, const QVariant& value) { - CustomConfigWidgetPlugin* handler = nullptr; QList<CustomConfigWidgetPlugin*> handlers; handlers += internalCustomConfigWidgets; handlers += PLUGINS->getLoadedPlugins<CustomConfigWidgetPlugin>(); - foreach (handler, handlers) + for (CustomConfigWidgetPlugin* handler : handlers) { if (handler->isConfigForWidget(key, widget)) { @@ -387,12 +385,11 @@ bool ConfigMapper::applyCustomConfigToWidget(CfgEntry* key, QWidget* widget, con bool ConfigMapper::connectCustomNotifierToWidget(QWidget* widget, CfgEntry* cfgEntry) { - CustomConfigWidgetPlugin* handler = nullptr; QList<CustomConfigWidgetPlugin*> handlers; handlers += internalCustomConfigWidgets; handlers += PLUGINS->getLoadedPlugins<CustomConfigWidgetPlugin>(); - foreach (handler, handlers) + for (CustomConfigWidgetPlugin* handler : handlers) { if (handler->isConfigForWidget(cfgEntry, widget)) { @@ -429,12 +426,11 @@ void ConfigMapper::saveFromWidget(QWidget* widget, CfgEntry* cfgEntry) bool ConfigMapper::saveCustomConfigFromWidget(QWidget* widget, CfgEntry* key) { - CustomConfigWidgetPlugin* plugin = nullptr; QList<CustomConfigWidgetPlugin*> handlers; handlers += internalCustomConfigWidgets; handlers += PLUGINS->getLoadedPlugins<CustomConfigWidgetPlugin>(); - foreach (plugin, handlers) + for (CustomConfigWidgetPlugin* plugin : handlers) { if (plugin->isConfigForWidget(key, widget)) { @@ -503,7 +499,7 @@ QList<QWidget*> ConfigMapper::getAllConfigWidgets(QWidget *parent) { QList<QWidget*> results; QWidget* widget = nullptr; - foreach (QObject* obj, parent->children()) + for (QObject* obj : parent->children()) { widget = qobject_cast<QWidget*>(obj); if (!widget || widgetsToIgnore.contains(widget)) diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp index 9322117..5759f76 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp @@ -61,9 +61,9 @@ bool ColumnDefaultPanel::validate() if (exprOk) { // Everything looks fine, so lets do the final check - if the value is considered constant by SQLite. - static QString tempDdlLiteralTpl = QStringLiteral("CREATE TABLE temp.%1 (col DEFAULT %2);"); - static QString tempDdlExprTpl = QStringLiteral("CREATE TABLE temp.%1 (col DEFAULT (%2));"); - static QString dropTempDdl = QStringLiteral("DROP TABLE IF EXISTS temp.%1;"); + static QString tempDdlLiteralTpl = QStringLiteral("CREATE TEMP TABLE %1 (col DEFAULT %2);"); + static QString tempDdlExprTpl = QStringLiteral("CREATE TEMP TABLE %1 (col DEFAULT (%2));"); + static QString dropTempDdl = QStringLiteral("DROP TABLE %1;"); QString tableName = getTempTable(); QString tempDdl = tempDdlExprTpl.arg(tableName, ui->exprEdit->toPlainText()); @@ -75,7 +75,8 @@ bool ColumnDefaultPanel::validate() if (res->isError()) { exprOk = false; - exprError = tr("Invalid default value expression: %1").arg(res->getErrorText()); + exprError = tr("Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.") + .arg(res->getErrorText()); } else currentMode = Mode::LITERAL; @@ -84,7 +85,8 @@ bool ColumnDefaultPanel::validate() currentMode = Mode::EXPR; db->exec(dropTempDdl.arg(tableName)); - } + } else + exprError = tr("Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters."); setValidState(ui->exprEdit, exprOk, exprError); setValidState(ui->namedEdit, nameOk, tr("Enter a name of the constraint.")); @@ -269,7 +271,7 @@ void ColumnDefaultPanel::updateVirtualSql() QString ColumnDefaultPanel::getTempTable() { SchemaResolver resolver(db); - return resolver.getUniqueName("temp", "sqlitestudio_temp_table"); + return resolver.getUniqueName("sqlitestudio_temp_table"); } void ColumnDefaultPanel::updateState() diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp index f4eb3eb..af79331 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnforeignkeypanel.cpp @@ -138,7 +138,7 @@ void ColumnForeignKeyPanel::readConstraint() ui->fkTableCombo->setCurrentText(constr->foreignKey->foreignTable); // Conditions - foreach (SqliteForeignKey::Condition* condition, constr->foreignKey->conditions) + for (SqliteForeignKey::Condition* condition : constr->foreignKey->conditions) readCondition(condition); // Initially, Deferrable diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.cpp index d10b223..f8975d8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columnprimarykeypanel.cpp @@ -94,13 +94,7 @@ void ColumnPrimaryKeyPanel::constraintAvailable() if (constraint.isNull()) return; - SqliteCreateTable::Column* column = dynamic_cast<SqliteCreateTable::Column*>(constraint->parent()); ui->autoIncrCheck->setVisible(constraint->dialect == Dialect::Sqlite3); - ui->autoIncrCheck->setEnabled(column->type && - DataType::fromString(column->type->detokenize().trimmed(), Qt::CaseInsensitive) == DataType::INTEGER); - - if (!ui->autoIncrCheck->isEnabled()) - ui->autoIncrCheck->setText(tr("Autoincrement (only for %1 type columns)", "column primary key").arg("INTEGER")); readConstraint(); } diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp index f8390a1..8bc7926 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableforeignkeypanel.cpp @@ -156,7 +156,7 @@ void TableForeignKeyPanel::updateColumnState(int rowIdx, bool tableSelected) if (!wasEnabled && check->isEnabled()) { // Automatically set matching column - int idx = fkColumnsModel.stringList().indexOf(check->text()); + int idx = fkColumnsModel.stringList().indexOf(check->property(UI_PROP_COLUMN).toString()); if (idx > -1) combo->setCurrentIndex(idx); } @@ -191,7 +191,7 @@ void TableForeignKeyPanel::buildColumns() SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(constraint->parentStatement()); int row = 0; - foreach (SqliteCreateTable::Column* column, createTable->columns) + for (SqliteCreateTable::Column* column : createTable->columns) buildColumn(column, row++); } @@ -200,6 +200,7 @@ void TableForeignKeyPanel::buildColumn(SqliteCreateTable::Column* column, int ro int col = 0; QCheckBox* check = new QCheckBox(column->name); + check->setProperty(UI_PROP_COLUMN, column->name); columnsLayout->addWidget(check, row, col++); columnSignalMapping->setMapping(check, row); connect(check, SIGNAL(toggled(bool)), columnSignalMapping, SLOT(map())); @@ -228,7 +229,7 @@ void TableForeignKeyPanel::readConstraint() if (!constr->foreignKey->foreignTable.isNull()) ui->fkTableCombo->setCurrentText(constr->foreignKey->foreignTable); - foreach (SqliteForeignKey::Condition* condition, constr->foreignKey->conditions) + for (SqliteForeignKey::Condition* condition : constr->foreignKey->conditions) readCondition(condition); ui->deferrableCombo->setCurrentText(sqliteDeferrable(constr->foreignKey->deferrable)); @@ -245,10 +246,9 @@ void TableForeignKeyPanel::readConstraint() int idx; QCheckBox* check = nullptr; QComboBox* combo = nullptr; - SqliteIndexedColumn* localCol = nullptr; SqliteIndexedColumn* foreignCol = nullptr; int i = 0; - foreach (localCol, constr->indexedColumns) + for (SqliteIndexedColumn* localCol : constr->indexedColumns) { // Foreign col if (i < constr->foreignKey->indexedColumns.size()) @@ -312,7 +312,7 @@ void TableForeignKeyPanel::storeConfiguration() if (constr->foreignKey) delete constr->foreignKey; - foreach (SqliteIndexedColumn* idxCol, constr->indexedColumns) + for (SqliteIndexedColumn* idxCol : constr->indexedColumns) delete idxCol; constr->indexedColumns.clear(); @@ -334,7 +334,7 @@ void TableForeignKeyPanel::storeConfiguration() if (!check->isChecked()) continue; - idxCol = new SqliteIndexedColumn(check->text()); + idxCol = new SqliteIndexedColumn(check->property(UI_PROP_COLUMN).toString()); idxCol->setParent(constr); constr->indexedColumns << idxCol; @@ -407,7 +407,7 @@ int TableForeignKeyPanel::getColumnIndex(const QString& colName) { item = columnsLayout->itemAtPosition(i, 0)->widget(); cb = qobject_cast<QCheckBox*>(item); - if (cb->text().compare(colName, Qt::CaseInsensitive) == 0) + if (cb->property(UI_PROP_COLUMN).toString().compare(colName, Qt::CaseInsensitive) == 0) return i; } return -1; diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.cpp index f2a0ada..7c1c359 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tablepkanduniquepanel.cpp @@ -71,6 +71,7 @@ void TablePrimaryKeyAndUniquePanel::buildColumn(SqliteCreateTable::Column* colum int col = 0; QCheckBox* check = new QCheckBox(column->name); + check->setProperty(UI_PROP_COLUMN, column->name); columnsLayout->addWidget(check, row, col++); columnSignalMapping->setMapping(check, row); connect(check, SIGNAL(toggled(bool)), columnSignalMapping, SLOT(map())); @@ -109,7 +110,7 @@ int TablePrimaryKeyAndUniquePanel::getColumnIndex(const QString& colName) { item = columnsLayout->itemAtPosition(i, 0)->widget(); cb = qobject_cast<QCheckBox*>(item); - if (cb->text().compare(colName, Qt::CaseInsensitive) == 0) + if (cb->property(UI_PROP_COLUMN).toString().compare(colName, Qt::CaseInsensitive) == 0) return i; } return -1; @@ -190,7 +191,7 @@ void TablePrimaryKeyAndUniquePanel::storeConfiguration() constr->onConflict = sqliteConflictAlgo(ui->conflictComboBox->currentText()); // Columns - foreach (SqliteIndexedColumn* idxCol, constr->indexedColumns) + for (SqliteIndexedColumn* idxCol : constr->indexedColumns) delete idxCol; constr->indexedColumns.clear(); @@ -207,7 +208,7 @@ void TablePrimaryKeyAndUniquePanel::storeConfiguration() if (!check->isChecked()) continue; - name = check->text(); + name = check->property(UI_PROP_COLUMN).toString(); if (constr->dialect == Dialect::Sqlite3) { @@ -256,7 +257,7 @@ void TablePrimaryKeyAndUniquePanel::readConstraint() int idx; QCheckBox* check = nullptr; QComboBox* combo = nullptr; - foreach (SqliteIndexedColumn* idxCol, constr->indexedColumns) + for (SqliteIndexedColumn* idxCol : constr->indexedColumns) { idx = getColumnIndex(idxCol->name); if (idx < 0) @@ -294,6 +295,6 @@ void TablePrimaryKeyAndUniquePanel::buildColumns() SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(constraint->parentStatement()); int row = 0; - foreach (SqliteCreateTable::Column* column, createTable->columns) + for (SqliteCreateTable::Column* column : createTable->columns) buildColumn(column, row++); } diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp index c538990..bad4910 100644 --- a/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp @@ -1,5 +1,6 @@ #include "tableprimarykeypanel.h" #include "ui_tablepkanduniquepanel.h" +#include "uiutils.h" #include <QDebug> TablePrimaryKeyPanel::TablePrimaryKeyPanel(QWidget *parent) : @@ -50,7 +51,7 @@ void TablePrimaryKeyPanel::updateState() item = columnsLayout->itemAtPosition(i, 0)->widget(); cb = qobject_cast<QCheckBox*>(item); if (cb->isChecked()) - columns << cb->text(); + columns << cb->property(UI_PROP_COLUMN).toString(); } if (columns.size() != 1) diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp index 4a04736..b8ebf45 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp @@ -284,7 +284,7 @@ QString SqlQueryItem::getToolTip() const { rows << emptyRow; rows << hdrRowTmp.arg(ICONS.COLUMN_CONSTRAINT.getPath()).arg(tr("Constraints:", "data view tooltip")).arg(""); - foreach (SqlQueryModelColumn::Constraint* constr, col->constraints) + for (SqlQueryModelColumn::Constraint* constr : col->constraints) rows << constrRowTmp.arg(constr->getIcon()->toUrl()).arg(constr->getTypeString()).arg(constr->getDetails()); } @@ -447,7 +447,7 @@ QString SqlQueryItem::loadFullData() // ROWID RowIdConditionBuilder rowIdBuilder; - rowIdBuilder.setRowId(getRowId()); + rowIdBuilder.setRowId(getRowId(), dialect); QString rowId = rowIdBuilder.build(); queryArgs = rowIdBuilder.getQueryArgs(); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp index 74a82ca..64d37e4 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp @@ -85,7 +85,6 @@ QString SqlQueryItemDelegate::displayText(const QVariant& value, const QLocale& void SqlQueryItemDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const { // No need to check or load full data, it is already preloaded if necessary in createEditor(). - QComboBox* cb = dynamic_cast<QComboBox*>(editor); QLineEdit* le = dynamic_cast<QLineEdit*>(editor); if (cb) { @@ -102,17 +101,29 @@ void SqlQueryItemDelegate::setEditorDataForFk(QComboBox* cb, const QModelIndex& const SqlQueryModel* queryModel = dynamic_cast<const SqlQueryModel*>(index.model()); SqlQueryItem* item = queryModel->itemFromIndex(index); QVariant modelData = item->getValue(); - int idx = cb->findData(modelData, Qt::UserRole); - if (idx == -1 ) + + SqlQueryModel* cbModel = dynamic_cast<SqlQueryModel*>(cb->model()); + SqlQueryItem* foundItem = cbModel->findAnyInColumn(0, SqlQueryItem::DataRole::VALUE, modelData); + int idx = -1; + if (foundItem) + idx = foundItem->index().row(); + + if (idx == -1 && modelData.isValid()) { - cb->addItem(modelData.toString(), modelData); - idx = cb->count() - 1; + idx = 0; + QList<QVariant> values; + values << modelData; + for (int i = 1; i < cbModel->columnCount(); i++) + values << QVariant(); + + cbModel->insertCustomRow(values, idx); SqlQueryView* view = dynamic_cast<SqlQueryView*>(cb->view()); view->resizeColumnsToContents(); view->setMinimumWidth(view->horizontalHeader()->length()); } cb->setCurrentIndex(idx); + cb->lineEdit()->selectAll(); } void SqlQueryItemDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const @@ -171,21 +182,26 @@ void SqlQueryItemDelegate::setModelDataForLineEdit(QLineEdit* editor, QAbstractI if (CFG_UI.General.KeepNullWhenEmptyValue.get() && model->data(index, Qt::EditRole).isNull() && value.isEmpty()) return; - bool ok; - QVariant variant = value.toLongLong(&ok); - if (ok) - { - model->setData(index, variant, Qt::EditRole); - return; - } + const SqlQueryModel* queryModel = dynamic_cast<const SqlQueryModel*>(model); + SqlQueryItem* item = queryModel->itemFromIndex(index); - variant = value.toDouble(&ok); - if (ok) + if (item->getColumn()->dataType.isNumeric()) { - model->setData(index, variant, Qt::EditRole); - return; - } + bool ok; + QVariant variant = value.toLongLong(&ok); + if (ok) + { + model->setData(index, variant, Qt::EditRole); + return; + } + variant = value.toDouble(&ok); + if (ok) + { + model->setData(index, variant, Qt::EditRole); + return; + } + } model->setData(index, value, Qt::EditRole); } @@ -262,7 +278,7 @@ QString SqlQueryItemDelegate::getSqlForFkEditor(SqlQueryItem* item) const if (fk->foreignColumn.compare(srcCol, Qt::CaseInsensitive) == 0) continue; // Exclude matching column. We don't want the same column several times. - fullSrcCol = src + "." + srcCol; + fullSrcCol = src + "." + wrapObjIfNeeded(srcCol, dialect); selectedCols << srcColTpl.arg(cellLimitTpl.arg(CELL_LENGTH_LIMIT).arg(fullSrcCol), wrapObjName(fullSrcCol, dialect)); } @@ -318,22 +334,21 @@ void SqlQueryItemDelegate::fkDataReady() // Set selected combo value to initial value from the cell QComboBox* cb = modelToFkCombo[model]; - QVariant value = modelToFkInitialValue[model]; + QVariant valueFromQueryModel = modelToFkInitialValue[model]; + if (model->rowCount() > 0) { QModelIndex startIdx = model->index(0, 0); QModelIndex endIdx = model->index(model->rowCount() - 1, 0); - QModelIndexList idxList = model->findIndexes(startIdx, endIdx, SqlQueryItem::DataRole::VALUE, value, 1); + QModelIndexList idxList = model->findIndexes(startIdx, endIdx, SqlQueryItem::DataRole::VALUE, valueFromQueryModel, 1); if (idxList.size() > 0) cb->setCurrentIndex(idxList.first().row()); else - cb->setCurrentText(value.toString()); + cb->setCurrentText(valueFromQueryModel.toString()); } else - { - cb->setCurrentText(value.toString()); - } + cb->setCurrentText(valueFromQueryModel.toString()); } void SqlQueryItemDelegate::fkDataFailed(const QString &errorText) @@ -401,6 +416,7 @@ QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent, queryModel->setHardRowLimit(MAX_ROWS_FOR_FK); queryModel->setDb(db); queryModel->setQuery(sql); + queryModel->setAsyncMode(false); queryModel->executeQuery(); queryView->verticalHeader()->setVisible(false); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp index 009b05a..ff025df 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp @@ -68,6 +68,16 @@ void SqlQueryModel::setExplainMode(bool explain) this->explain = explain; } +void SqlQueryModel::setParams(const QHash<QString, QVariant>& params) +{ + queryParams = params; +} + +void SqlQueryModel::setAsyncMode(bool enabled) +{ + queryExecutor->setAsyncMode(enabled); +} + void SqlQueryModel::executeQuery() { if (queryExecutor->isExecutionInProgress()) @@ -121,6 +131,7 @@ void SqlQueryModel::executeQueryInternal() emit executionStarted(); queryExecutor->setQuery(query); + queryExecutor->setParams(queryParams); queryExecutor->setResultsPerPage(getRowsPerPage()); queryExecutor->setExplainMode(explain); queryExecutor->setPreloadResults(true); @@ -224,6 +235,15 @@ QList<SqlQueryItem*> SqlQueryModel::findItems(const QModelIndex& start, const QM return toItemList(findIndexes(start, end, role, value, hits)); } +SqlQueryItem* SqlQueryModel::findAnyInColumn(int column, int role, const QVariant &value) const +{ + QList<SqlQueryItem *> itemList = toItemList(findIndexes(index(0, column), index(rowCount() - 1, column), role, value, 1)); + if (itemList.isEmpty()) + return nullptr; + + return itemList[0]; +} + QList<SqlQueryItem*> SqlQueryModel::getUncommittedItems() const { return findItems(SqlQueryItem::DataRole::UNCOMMITTED, true); @@ -242,7 +262,7 @@ QHash<AliasedTable, QList<SqlQueryItem*> > SqlQueryModel::groupItemsByTable(cons { QHash<AliasedTable,QList<SqlQueryItem*>> itemsByTable; AliasedTable table; - foreach (SqlQueryItem* item, items) + for (SqlQueryItem* item : items) { if (item->getColumn()) { @@ -264,7 +284,7 @@ QList<SqlQueryItem*> SqlQueryModel::filterOutCommittedItems(const QList<SqlQuery // because it would require list in argument to drop 'const' keyword and it's already // there in calling methods, so it's easier to copy list and filter on the fly. QList<SqlQueryItem*> newList; - foreach (SqlQueryItem* item, items) + for (SqlQueryItem* item : items) if (item->isUncommitted()) newList << item; @@ -288,7 +308,7 @@ SqlQueryModel::Features SqlQueryModel::features() const QList<SqlQueryItem*> SqlQueryModel::toItemList(const QModelIndexList& indexes) const { QList<SqlQueryItem*> list; - foreach (const QModelIndex& idx, indexes) + for (const QModelIndex& idx : indexes) list << itemFromIndex(idx); return list; @@ -452,7 +472,7 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items) void SqlQueryModel::rollbackInternal(const QList<SqlQueryItem*>& items) { QList<QList<SqlQueryItem*> > groupedItems = groupItemsByRows(items); - foreach (const QList<SqlQueryItem*>& itemsInRow, groupedItems) + for (const QList<SqlQueryItem*>& itemsInRow : groupedItems) rollbackRow(itemsInRow); emit commitStatusChanged(getUncommittedItems().size() > 0); @@ -611,7 +631,7 @@ bool SqlQueryModel::commitEditedRow(const QList<SqlQueryItem*>& itemsInRow) // RowId queryBuilder.clear(); rowId = items.first()->getRowId(); - queryBuilder.setRowId(rowId); + queryBuilder.setRowId(rowId, dialect); newRowId = getNewRowId(rowId, items); // if any of item updates any of rowid columns, then this will be different than initial rowid // Database and table @@ -692,13 +712,13 @@ void SqlQueryModel::rollbackAddedRow(const QList<SqlQueryItem*>& itemsInRow) void SqlQueryModel::rollbackEditedRow(const QList<SqlQueryItem*>& itemsInRow) { - foreach (SqlQueryItem* item, itemsInRow) + for (SqlQueryItem* item : itemsInRow) item->rollback(); } void SqlQueryModel::rollbackDeletedRow(const QList<SqlQueryItem*>& itemsInRow) { - foreach (SqlQueryItem* item, itemsInRow) + for (SqlQueryItem* item : itemsInRow) item->rollback(); } @@ -719,7 +739,7 @@ SqlQueryModelColumnPtr SqlQueryModel::getColumnModel(const QString& table, const QList<SqlQueryModelColumnPtr> SqlQueryModel::getTableColumnModels(const QString& database, const QString& table) { QList<SqlQueryModelColumnPtr> results; - foreach (SqlQueryModelColumnPtr modelColumn, columns) + for (SqlQueryModelColumnPtr modelColumn : columns) { if (modelColumn->database.compare(database, Qt::CaseInsensitive) != 0) continue; @@ -788,7 +808,7 @@ QList<QStandardItem*> SqlQueryModel::loadRow(SqlResultsRowPtr row) SqlQueryItem* item = nullptr; RowId rowId; int colIdx = 0; - foreach (const QVariant& value, row->valueList().mid(0, resultColumnCount)) + for (const QVariant& value : row->valueList().mid(0, resultColumnCount)) { item = new SqlQueryItem(); rowId = getRowIdValue(row, colIdx); @@ -931,7 +951,7 @@ void SqlQueryModel::readColumns() int totalRowIdCols = 0; AliasedTable aliasedTable; DbAndTable dbAndTable; - foreach (const QueryExecutor::ResultRowIdColumnPtr& resCol, queryExecutor->getRowIdResultColumns()) + for (const QueryExecutor::ResultRowIdColumnPtr& resCol : queryExecutor->getRowIdResultColumns()) { if (resCol->dbName.isEmpty() || resCol->dbName.toLower() == "main" || resCol->dbName.toLower() == "temp") dbAndTable.setDb(db); @@ -957,6 +977,16 @@ void SqlQueryModel::readColumns() tablesForColumns = getTablesForColumns(); columnEditionStatus = getColumnEditionEnabledList(); + // Rows limit to avoid out of memory problems + columnRatioBasedRowLimit = -1; + int rowsPerPage = getRowsPerPage(); + if (!columns.isEmpty()) + columnRatioBasedRowLimit = 150000 / columns.size(); + + if (columnRatioBasedRowLimit > -1 && columnRatioBasedRowLimit < rowsPerPage) + NOTIFY_MANAGER->info(tr("Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.") + .arg(columnRatioBasedRowLimit).arg(columns.size())); + // We have fresh info about columns structureOutOfDate = false; } @@ -965,7 +995,7 @@ void SqlQueryModel::readColumnDetails() { // Preparing global (table oriented) edition forbidden reasons QSet<SqlQueryModelColumn::EditionForbiddenReason> editionForbiddenGlobalReasons; - foreach (QueryExecutor::EditionForbiddenReason reason, queryExecutor->getEditionForbiddenGlobalReasons()) + for (QueryExecutor::EditionForbiddenReason reason : queryExecutor->getEditionForbiddenGlobalReasons()) editionForbiddenGlobalReasons << SqlQueryModelColumn::convert(reason); // Reading all the details from query executor source tables @@ -981,7 +1011,7 @@ void SqlQueryModel::readColumnDetails() SqliteColumnTypePtr modelColumnType; SqlQueryModelColumn::Constraint* modelConstraint = nullptr; - foreach (const QueryExecutor::ResultColumnPtr& resCol, queryExecutor->getResultColumns()) + for (const QueryExecutor::ResultColumnPtr& resCol : queryExecutor->getResultColumns()) { // Creating new column for the model (this includes column oriented forbidden reasons) modelColumn = SqlQueryModelColumnPtr::create(resCol); @@ -1002,7 +1032,7 @@ void SqlQueryModel::readColumnDetails() modelColumn->dataType = DataType(modelColumnType->name, modelColumnType->precision, modelColumnType->scale); // Column constraints - foreach (SqliteCreateTable::Column::ConstraintPtr constrPtr, colDetails.constraints) + for (SqliteCreateTable::Column::ConstraintPtr constrPtr : colDetails.constraints) { modelConstraint = SqlQueryModelColumn::Constraint::create(constrPtr); if (modelConstraint) @@ -1010,7 +1040,7 @@ void SqlQueryModel::readColumnDetails() } // Table constraints - foreach (SqliteCreateTable::ConstraintPtr constrPtr, details.constraints) + for (SqliteCreateTable::ConstraintPtr constrPtr : details.constraints) { modelConstraint = SqlQueryModelColumn::Constraint::create(modelColumn->column, constrPtr); if (modelConstraint) @@ -1036,7 +1066,7 @@ QHash<AliasedTable, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails AliasedTable table; QString columnName; - foreach (const QueryExecutor::SourceTablePtr& srcTable, queryExecutor->getSourceTables()) + for (const QueryExecutor::SourceTablePtr& srcTable : queryExecutor->getSourceTables()) { database = srcTable->database.isEmpty() ? "main" : srcTable->database; @@ -1054,11 +1084,11 @@ QHash<AliasedTable, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails table = {database, srcTable->table, srcTable->alias}; // Table constraints - foreach (SqliteCreateTable::Constraint* tableConstr, createTable->constraints) + for (SqliteCreateTable::Constraint* tableConstr : createTable->constraints) tableDetails.constraints << tableConstr->detach<SqliteCreateTable::Constraint>(); // Table columns - foreach (SqliteCreateTable::Column* columnStmt, createTable->columns) + for (SqliteCreateTable::Column* columnStmt : createTable->columns) { // Column details TableDetails::ColumnDetails columnDetails; @@ -1071,7 +1101,7 @@ QHash<AliasedTable, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails columnDetails.type = SqliteColumnTypePtr(); // Column constraints - foreach (SqliteCreateTable::Column::Constraint* columnConstr, columnStmt->constraints) + for (SqliteCreateTable::Column::Constraint* columnConstr : columnStmt->constraints) columnDetails.constraints << columnConstr->detach<SqliteCreateTable::Column::Constraint>(); tableDetails.columns[columnName] = columnDetails; @@ -1088,7 +1118,7 @@ QList<AliasedTable> SqlQueryModel::getTablesForColumns() { QList<AliasedTable> columnTables; AliasedTable table; - foreach (SqlQueryModelColumnPtr column, columns) + for (SqlQueryModelColumnPtr column : columns) { if (column->editionForbiddenReason.size() > 0) { @@ -1104,7 +1134,7 @@ QList<AliasedTable> SqlQueryModel::getTablesForColumns() QList<bool> SqlQueryModel::getColumnEditionEnabledList() { QList<bool> columnEditionEnabled; - foreach (SqlQueryModelColumnPtr column, columns) + for (SqlQueryModelColumnPtr column : columns) columnEditionEnabled << (column->editionForbiddenReason.size() == 0); return columnEditionEnabled; @@ -1120,7 +1150,7 @@ void SqlQueryModel::updateColumnsHeader() void SqlQueryModel::updateColumnHeaderLabels() { headerColumns.clear(); - foreach (SqlQueryModelColumnPtr column, columns) + for (SqlQueryModelColumnPtr column : columns) { headerColumns << column->displayName; } @@ -1399,7 +1429,7 @@ void SqlQueryModel::updateSelectiveCommitRollbackActions(const QItemSelection& s bool result = false; if (selectedItems.size() > 0) { - foreach (SqlQueryItem* item, selectedItems) + for (SqlQueryItem* item : selectedItems) { if (item->isUncommitted()) { @@ -1542,6 +1572,9 @@ int SqlQueryModel::getRowsPerPage() const if (hardRowLimit > -1) rowsPerPage = hardRowLimit; + if (columnRatioBasedRowLimit > -1 && columnRatioBasedRowLimit < rowsPerPage) + rowsPerPage = columnRatioBasedRowLimit; + return rowsPerPage; } @@ -1555,6 +1588,46 @@ void SqlQueryModel::setQueryCountLimitForSmartMode(int value) queryExecutor->setQueryCountLimitForSmartMode(value); } +void SqlQueryModel::insertCustomRow(const QList<QVariant> &values, int insertionIndex) +{ + SqlQueryItem* cellItem = nullptr; + int colIdx = 0; + QList<QStandardItem*> row; + for (const QVariant& value : values) + { + cellItem = new SqlQueryItem(); + updateItem(cellItem, value, colIdx++, RowId()); + row << cellItem; + } + insertRow(insertionIndex, row); +} + +void SqlQueryModel::setDesiredColumnWidth(int colIdx, int width) +{ + SqlQueryModelColumnPtr columnModel = columns[colIdx]; + if (!columnModel) + { + qWarning() << "Missing column model for column with index" << colIdx << "while resizing column."; + return; + } + + Column column(columnModel->database, columnModel->table, columnModel->column); + columnWidths[column] = width; +} + +int SqlQueryModel::getDesiredColumnWidth(int colIdx) +{ + SqlQueryModelColumnPtr columnModel = columns[colIdx]; + if (!columnModel) + return -1; + + Column column(columnModel->database, columnModel->table, columnModel->column); + if (!columnWidths.contains(column)) + return -1; + + return columnWidths[column]; +} + bool SqlQueryModel::isStructureOutOfDate() const { return structureOutOfDate; @@ -1610,7 +1683,7 @@ void SqlQueryModel::deleteSelectedRows() { QList<SqlQueryItem*> selectedItems = view->getSelectedItems(); QSet<int> rows; - foreach (SqlQueryItem* item, selectedItems) + for (SqlQueryItem* item : selectedItems) rows << item->index().row(); QList<int> rowList = rows.toList(); @@ -1618,7 +1691,7 @@ void SqlQueryModel::deleteSelectedRows() QList<SqlQueryItem*> newItemsToDelete; int cols = columnCount(); - foreach (int row, rowList) + for (int row : rowList) { for (int colIdx = 0; colIdx < cols; colIdx++) { @@ -1634,7 +1707,7 @@ void SqlQueryModel::deleteSelectedRows() } } - foreach (SqlQueryItem* item, newItemsToDelete) + for (SqlQueryItem* item : newItemsToDelete) removeRow(item->index().row()); emit commitStatusChanged(getUncommittedItems().size() > 0); @@ -1675,6 +1748,18 @@ void SqlQueryModel::applyRegExpFilter(const QString& value) // For custom query this is not supported. } +void SqlQueryModel::applyStringFilter(const QStringList& values) +{ + UNUSED(values); + // For custom query this is not supported. +} + +void SqlQueryModel::applyRegExpFilter(const QStringList& values) +{ + UNUSED(values); + // For custom query this is not supported. +} + void SqlQueryModel::resetFilter() { // For custom query this is not supported. @@ -1719,6 +1804,9 @@ QVariant SqlQueryModel::headerData(int section, Qt::Orientation orientation, int if (role == Qt::FontRole) return CFG_UI.Fonts.DataView.get(); + if (role == Qt::TextAlignmentRole && orientation == Qt::Horizontal) + return Qt::AlignLeft; + return QAbstractItemModel::headerData(section, orientation, role); } diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h index 7a4c282..6c17740 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h @@ -42,6 +42,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel QString getQuery() const; void setQuery(const QString &value); void setExplainMode(bool explain); + void setParams(const QHash<QString, QVariant>& params); Db* getDb() const; void setDb(Db* value); qint64 getExecutionTime(); @@ -55,6 +56,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel QModelIndexList findIndexes(const QModelIndex &start, const QModelIndex& end, int role, const QVariant &value, int hits = -1) const; QList<SqlQueryItem*> findItems(int role, const QVariant &value, int hits = -1) const; QList<SqlQueryItem*> findItems(const QModelIndex &start, const QModelIndex& end, int role, const QVariant &value, int hits = -1) const; + SqlQueryItem* findAnyInColumn(int column, int role, const QVariant &value) const; QList<SqlQueryItem*> getUncommittedItems() const; QList<SqlQueryItem*> getRow(int row); int columnCount(const QModelIndex& parent = QModelIndex()) const; @@ -63,6 +65,16 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel void loadFullDataForEntireRow(int row); StrHash<QString> attachDependencyTables(); void detachDependencyTables(); + + /** + * @brief Disables or re-enables async query execution + * @param enabled True to set async mode enabled, false to set synchronous mode. + * + * This option is forwarded directly to the query executor. + * + * By default mode is asynchronous, but in some cases synchronous mode may be useful (like in FK combobox). + */ + void setAsyncMode(bool enabled); virtual QString generateSelectQueryForItems(const QList<SqlQueryItem*>& items); virtual QString generateInsertQueryForItems(const QList<SqlQueryItem*>& items); virtual QString generateUpdateQueryForItems(const QList<SqlQueryItem*>& items); @@ -71,7 +83,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel virtual Features features() const; /** - * @brief applySqlFilter + * @brief Request for applying SQL expression filtering on a dataset. * @param value Filter expression. * Default implementation does nothing. Working implementation (i.e. for a table) * should set the query to temporary value which respects given filter and reload the data. @@ -80,7 +92,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel virtual void applySqlFilter(const QString& value); /** - * @brief applyStringFilter + * @brief Request for applying "LIKE" filtering on a dataset. * @param value Filter expression. * Default implementation does nothing. Working implementation (i.e. for a table) * should set the query to temporary value which respects given filter and reload the data. @@ -89,7 +101,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel virtual void applyStringFilter(const QString& value); /** - * @brief applyStringFilter + * @brief Request for applying Regular Expression filtering on a dataset. * @param value Filter expression. * Default implementation does nothing. Working implementation (i.e. for a table) * should set the query to temporary value which respects given filter and reload the data. @@ -98,6 +110,22 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel virtual void applyRegExpFilter(const QString& value); /** + * @brief Request for applying "LIKE" filtering on a dataset. + * @param values Filter expressions per column. + * This is the same as applyStringFilter(const QString&), but is used for per-column filtering, + * when user enters filtering expressions for each column sparately. + */ + virtual void applyStringFilter(const QStringList& values); + + /** + * @brief Request for applying Regular Expression filtering on a dataset. + * @param values Filter expressions per column. + * This is the same as applyRegExpFilter(const QString&), but is used for per-column filtering, + * when user enters filtering expressions for each column sparately. + */ + virtual void applyRegExpFilter(const QStringList& values); + + /** * @brief resetFilter * Default implementation does nothing. Working implementation (i.e. for a table) * should resets filter, so the data is no longer filtered. @@ -145,10 +173,15 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel int getQueryCountLimitForSmartMode() const; void setQueryCountLimitForSmartMode(int value); + void insertCustomRow(const QList<QVariant>& values, int insertionIndex); + + void setDesiredColumnWidth(int colIdx, int width); + int getDesiredColumnWidth(int colIdx); + protected: class CommitUpdateQueryBuilder : public RowIdConditionBuilder { - public: + public: void clear(); void setDatabase(const QString& database); @@ -302,6 +335,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel int getRowsPerPage() const; QString query; + QHash<QString, QVariant> queryParams; bool explain = false; bool simpleExecutionMode = false; @@ -366,6 +400,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel QueryExecutor::SortList sortOrder; QHash<Column,SqlQueryModelColumnPtr> columnMap; + QHash<Column,int> columnWidths; QHash<AliasedTable,QHash<QString,QString>> tableToRowIdColumn; QStringList headerColumns; int rowNumBase = 0; @@ -382,6 +417,16 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel */ int hardRowLimit = -1; + /** + * @brief Limit for rows in case there is many columns. + * + * -1 to not apply the limit. This is set during reading columns. If there is many columns, + * we need to keep maximum limit of rows at pace, so we don't overuse the RAM. + * This limit is soft, meaning it applies only if it's smaller than configured limit or hardRowLimit. + * If any of two limits mentioned above are smaller, this limit will not come to the play. + */ + int columnRatioBasedRowLimit = -1; + int resultColumnCount = 0; /** diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp index 3a2457c..688e05a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp @@ -9,13 +9,13 @@ SqlQueryModelColumn::SqlQueryModelColumn(const QueryExecutor::ResultColumnPtr& r table = resultColumn->table; tableAlias = resultColumn->tableAlias; database = resultColumn->database.isEmpty() ? "main": resultColumn->database; - foreach (QueryExecutor::ColumnEditionForbiddenReason reason, resultColumn->editionForbiddenReasons) + for (QueryExecutor::ColumnEditionForbiddenReason reason : resultColumn->editionForbiddenReasons) editionForbiddenReason << SqlQueryModelColumn::convert(reason); } SqlQueryModelColumn::~SqlQueryModelColumn() { - foreach (Constraint* constr, constraints) + for (Constraint* constr : constraints) delete constr; constraints.clear(); @@ -116,7 +116,7 @@ bool SqlQueryModelColumn::isRowIdPk() const if (dataType.getType() != DataType::INTEGER) return false; - foreach (ConstraintPk* pk, getConstraints<ConstraintPk*>()) + for (ConstraintPk* pk : getConstraints<ConstraintPk*>()) if (pk->scope == Constraint::Scope::COLUMN) return true; @@ -125,7 +125,7 @@ bool SqlQueryModelColumn::isRowIdPk() const bool SqlQueryModelColumn::isAutoIncr() const { - foreach (ConstraintPk* pk, getConstraints<ConstraintPk*>()) + for (ConstraintPk* pk : getConstraints<ConstraintPk*>()) if (pk->autoIncrement) return true; @@ -334,7 +334,7 @@ template <class T> QList<T> SqlQueryModelColumn::getConstraints() const { QList<T> results; - foreach (Constraint* constr, constraints) + for (Constraint* constr : constraints) if (dynamic_cast<T>(constr)) results << dynamic_cast<T>(constr); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp index 9f58fd2..4364986 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp @@ -17,7 +17,6 @@ #include "common/utils_sql.h" #include "querygenerator.h" #include "services/codeformatter.h" -#include <QHeaderView> #include <QPushButton> #include <QProgressBar> #include <QGridLayout> @@ -29,6 +28,8 @@ #include <QMenu> #include <QMimeData> #include <QCryptographicHash> +#include <QMessageBox> +#include <QScrollBar> CFG_KEYS_DEFINE(SqlQueryView) @@ -55,9 +56,18 @@ void SqlQueryView::init() contextMenu = new QMenu(this); referencedTablesMenu = new QMenu(tr("Go to referenced row in..."), contextMenu); + setHorizontalHeader(new Header(this)); + connect(this, &QWidget::customContextMenuRequested, this, &SqlQueryView::customContextMenuRequested); connect(CFG_UI.Fonts.DataView, SIGNAL(changed(QVariant)), this, SLOT(updateFont())); connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex))); + connect(horizontalHeader(), &QHeaderView::sectionResized, [this](int section, int, int newSize) + { + if (ignoreColumnWidthChanges) + return; + + getModel()->setDesiredColumnWidth(section, newSize); + }); horizontalHeader()->setSortIndicatorShown(false); horizontalHeader()->setSectionsClickable(true); @@ -77,12 +87,13 @@ void SqlQueryView::setupWidgetCover() void SqlQueryView::createActions() { createAction(COPY, ICONS.ACT_COPY, tr("Copy"), this, SLOT(copy()), this); + createAction(COPY_WITH_HEADER, ICONS.ACT_COPY, tr("Copy with headers"), this, SLOT(copyWithHeader()), this); createAction(COPY_AS, ICONS.ACT_COPY, tr("Copy as..."), this, SLOT(copyAs()), this); createAction(PASTE, ICONS.ACT_PASTE, tr("Paste"), this, SLOT(paste()), this); createAction(PASTE_AS, ICONS.ACT_PASTE, tr("Paste as..."), this, SLOT(pasteAs()), this); createAction(SET_NULL, ICONS.SET_NULL, tr("Set NULL values"), this, SLOT(setNull()), this); createAction(ERASE, ICONS.ERASE, tr("Erase values"), this, SLOT(erase()), this); - createAction(OPEN_VALUE_EDITOR, ICONS.OPEN_VALUE_EDITOR, tr("Edit value in editor"), this, SLOT(openValueEditor()), this); + createAction(OPEN_VALUE_EDITOR, ICONS.OPEN_VALUE_EDITOR, "", this, SLOT(openValueEditor()), this); // actual label is set dynamically in setupActionsForMenu() createAction(COMMIT, ICONS.COMMIT, tr("Commit"), this, SLOT(commit()), this); createAction(ROLLBACK, ICONS.ROLLBACK, tr("Rollback"), this, SLOT(rollback()), this); createAction(SELECTIVE_COMMIT, ICONS.COMMIT, tr("Commit selected cells"), this, SLOT(selectiveCommit()), this); @@ -119,9 +130,17 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq QList<SqlQueryItem*> uncommittedItems = getModel()->getUncommittedItems(); int uncommittedCount = uncommittedItems.size(); + // How many of selected items is editable + int editableSelCount = selCount; + for (SqlQueryItem* selItem : getSelectedItems()) + if (selItem->getColumn()->editionForbiddenReason.size() > 0) + editableSelCount--; + + bool currentItemEditable = (getCurrentItem()->getColumn()->editionForbiddenReason.size() == 0); + // Uncommitted & selected items count int uncommittedSelCount = 0; - foreach (SqlQueryItem* item, uncommittedItems) + for (SqlQueryItem* item : uncommittedItems) if (selectedItems.contains(item)) uncommittedSelCount++; @@ -140,10 +159,16 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq if (uncommittedCount > 0 && selCount > 0) contextMenu->addSeparator(); + // Edit/show label for "open in editor" action + actionMap[OPEN_VALUE_EDITOR]->setText(currentItemEditable ? tr("Edit value in editor") : tr("Show value in a viewer")); + if (selCount > 0) { - contextMenu->addAction(actionMap[ERASE]); - contextMenu->addAction(actionMap[SET_NULL]); + if (editableSelCount > 0) + { + contextMenu->addAction(actionMap[ERASE]); + contextMenu->addAction(actionMap[SET_NULL]); + } contextMenu->addAction(actionMap[OPEN_VALUE_EDITOR]); contextMenu->addSeparator(); } @@ -165,6 +190,7 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq contextMenu->addSeparator(); contextMenu->addAction(actionMap[COPY]); + contextMenu->addAction(actionMap[COPY_WITH_HEADER]); //contextMenu->addAction(actionMap[COPY_AS]); // TODO uncomment when implemented contextMenu->addAction(actionMap[PASTE]); //contextMenu->addAction(actionMap[PASTE_AS]); // TODO uncomment when implemented @@ -172,7 +198,7 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq if (additionalActions.size() > 0) { contextMenu->addSeparator(); - foreach (QAction* action, additionalActions) + for (QAction* action : additionalActions) contextMenu->addAction(action); } } @@ -199,7 +225,7 @@ QList<SqlQueryItem*> SqlQueryView::getSelectedItems() qSort(idxList); const SqlQueryModel* model = dynamic_cast<const SqlQueryModel*>(idxList.first().model()); - foreach (const QModelIndex& idx, idxList) + for (const QModelIndex& idx : idxList) items << model->itemFromIndex(idx); return items; @@ -314,7 +340,15 @@ void SqlQueryView::paste(const QList<QList<QVariant> >& data) return; } - qSort(selectedItems); + if (data.size() == 1 && data[0].size() == 1) + { + QVariant theValue = data[0][0]; + for (SqlQueryItem* item : selectedItems) + item->setValue(theValue, false, false); + + return; + } + SqlQueryItem* topLeft = selectedItems.first(); int columnCount = getModel()->columnCount(); @@ -324,7 +358,7 @@ void SqlQueryView::paste(const QList<QList<QVariant> >& data) SqlQueryItem* item = nullptr; - foreach (const QList<QVariant>& cells, data) + for (const QList<QVariant>& cells : data) { // Check if we're out of rows range if (rowIdx >= rowCount) @@ -334,7 +368,7 @@ void SqlQueryView::paste(const QList<QList<QVariant> >& data) break; } - foreach (const QVariant& cell, cells) + for (const QVariant& cell : cells) { // Get current cell if (colIdx >= columnCount) @@ -408,6 +442,78 @@ void SqlQueryView::goToReferencedRow(const QString& table, const QString& column win->execute(); } +void SqlQueryView::copy(bool withHeader) +{ + if (simpleBrowserMode) + return; + + QList<SqlQueryItem*> selectedItems = getSelectedItems(); + QList<QList<SqlQueryItem*> > groupedItems = SqlQueryModel::groupItemsByRows(selectedItems); + + if (selectedItems.isEmpty()) + return; + + QVariant itemValue; + QStringList cells; + QList<QStringList> rows; + + QPair<QString,QList<QList<QVariant>>> theDataPair; + QList<QList<QVariant>> theData; + QList<QVariant> theDataRow; + + // Header + if (withHeader) + { + for (SqlQueryModelColumnPtr col : getModel()->getColumns().mid(0, groupedItems.first().size())) + { + theDataRow << col->displayName; + cells << col->displayName; + } + + rows << cells; + cells.clear(); + + theData << theDataRow; + theDataRow.clear(); + } + + // Data + for (const QList<SqlQueryItem*>& itemsInRows : groupedItems) + { + for (SqlQueryItem* item : itemsInRows) + { + itemValue = item->getFullValue(); + if (itemValue.userType() == QVariant::Double) + cells << doubleToString(itemValue); + else + cells << itemValue.toString(); + + theDataRow << itemValue; + } + + rows << cells; + cells.clear(); + + theData << theDataRow; + theDataRow.clear(); + } + + QMimeData* mimeData = new QMimeData(); + QString tsv = TsvSerializer::serialize(rows); + mimeData->setText(tsv); + + QString md5 = QCryptographicHash::hash(tsv.toUtf8(), QCryptographicHash::Md5); + theDataPair.first = md5; + theDataPair.second = theData; + + QByteArray serializedData; + QDataStream stream(&serializedData, QIODevice::WriteOnly); + stream << theDataPair; + mimeData->setData(mimeDataId, serializedData); + + qApp->clipboard()->setMimeData(mimeData); +} + bool SqlQueryView::getSimpleBrowserMode() const { return simpleBrowserMode; @@ -418,6 +524,22 @@ void SqlQueryView::setSimpleBrowserMode(bool value) simpleBrowserMode = value; } +void SqlQueryView::setIgnoreColumnWidthChanges(bool ignore) +{ + ignoreColumnWidthChanges = ignore; +} + +QMenu* SqlQueryView::getHeaderContextMenu() const +{ + return headerContextMenu; +} + +void SqlQueryView::scrollContentsBy(int dx, int dy) +{ + QTableView::scrollContentsBy(dx, dy); + emit scrolledBy(dx, dy); +} + void SqlQueryView::updateCommitRollbackActions(bool enabled) { actionMap[COMMIT]->setEnabled(enabled); @@ -485,11 +607,18 @@ void SqlQueryView::updateFont() void SqlQueryView::executionStarted() { + beforeExecutionHorizontalPosition = horizontalScrollBar()->sliderPosition(); widgetCover->show(); } void SqlQueryView::executionEnded() { + if (beforeExecutionHorizontalPosition > -1) + { + horizontalScrollBar()->setSliderPosition(beforeExecutionHorizontalPosition); + emit scrolledBy(beforeExecutionHorizontalPosition, 0); + } + widgetCover->hide(); } @@ -500,54 +629,12 @@ void SqlQueryView::setCurrentRow(int row) void SqlQueryView::copy() { - if (simpleBrowserMode) - return; - - QList<SqlQueryItem*> selectedItems = getSelectedItems(); - QList<QList<SqlQueryItem*> > groupedItems = SqlQueryModel::groupItemsByRows(selectedItems); - - QVariant itemValue; - QStringList cells; - QList<QStringList> rows; - - QPair<QString,QList<QList<QVariant>>> theDataPair; - QList<QList<QVariant>> theData; - QList<QVariant> theDataRow; - - foreach (const QList<SqlQueryItem*>& itemsInRows, groupedItems) - { - foreach (SqlQueryItem* item, itemsInRows) - { - itemValue = item->getFullValue(); - if (itemValue.userType() == QVariant::Double) - cells << doubleToString(itemValue); - else - cells << itemValue.toString(); - - theDataRow << itemValue; - } - - rows << cells; - cells.clear(); - - theData << theDataRow; - theDataRow.clear(); - } - - QMimeData* mimeData = new QMimeData(); - QString tsv = TsvSerializer::serialize(rows); - mimeData->setText(tsv); - - QString md5 = QCryptographicHash::hash(tsv.toUtf8(), QCryptographicHash::Md5); - theDataPair.first = md5; - theDataPair.second = theData; - - QByteArray serializedData; - QDataStream stream(&serializedData, QIODevice::WriteOnly); - stream << theDataPair; - mimeData->setData(mimeDataId, serializedData); + copy(false); +} - qApp->clipboard()->setMimeData(mimeData); +void SqlQueryView::copyWithHeader() +{ + copy(true); } void SqlQueryView::paste() @@ -574,13 +661,30 @@ void SqlQueryView::paste() } QList<QStringList> deserializedRows = TsvSerializer::deserialize(mimeData->text()); + bool trimOnPaste = false; + bool trimOnPasteAsked = false; QList<QVariant> dataRow; QList<QList<QVariant>> dataToPaste; for (const QStringList& cells : deserializedRows) { for (const QString& cell : cells) - dataRow << cell; + { +#if QT_VERSION >= 0x050A00 + if ((cell.front().isSpace() || cell.back().isSpace()) && !trimOnPasteAsked) +#else + if ((cell.at(0).isSpace() || cell.at(cell.size() - 1).isSpace()) && !trimOnPasteAsked) +#endif + { + QMessageBox::StandardButton choice; + choice = QMessageBox::question(this, tr("Trim pasted text?"), + tr("The pasted text contains leading or trailing white space. Trim it automatically?")); + trimOnPasteAsked = true; + trimOnPaste = (choice == QMessageBox::Yes); + } + + dataRow << (trimOnPaste ? cell.trimmed() : cell); + } dataToPaste << dataRow; dataRow.clear(); @@ -689,3 +793,20 @@ int qHash(SqlQueryView::Action action) { return static_cast<int>(action); } + +SqlQueryView::Header::Header(SqlQueryView* parent) : + QHeaderView(Qt::Horizontal, parent) +{ +} + +QSize SqlQueryView::Header::sectionSizeFromContents(int section) const +{ + QSize originalSize = QHeaderView::sectionSizeFromContents(section); + int colCount = dynamic_cast<SqlQueryView*>(parent())->getModel()->columnCount(); + if (colCount <= 5) + return originalSize; + + int wd = minHeaderWidth; + wd = qMin((wd + wd * 20 / colCount), originalSize.width()); + return QSize(wd, originalSize.height()); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h index b0df4d7..98e2783 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h @@ -7,6 +7,7 @@ #include "guiSQLiteStudio_global.h" #include "common/table.h" #include <QTableView> +#include <QHeaderView> class SqlQueryItemDelegate; class SqlQueryItem; @@ -19,9 +20,10 @@ class QMenu; CFG_KEY_LIST(SqlQueryView, QObject::tr("Data grid view"), CFG_KEY_ENTRY(COPY, Qt::CTRL + Qt::Key_C, QObject::tr("Copy cell(s) contents to clipboard")) -// CFG_KEY_ENTRY(COPY_AS, Qt::CTRL + Qt::SHIFT + Qt::Key_C, QObject::tr("")) + CFG_KEY_ENTRY(COPY_WITH_HEADER, Qt::CTRL + Qt::SHIFT + Qt::Key_C, QObject::tr("Copy cell(s) contents together with header to clipboard")) +// CFG_KEY_ENTRY(COPY_AS, Qt::CTRL + Qt::ALT + Qt::Key_C, QObject::tr("")) CFG_KEY_ENTRY(PASTE, Qt::CTRL + Qt::Key_V, QObject::tr("Paste cell(s) contents from clipboard")) -// CFG_KEY_ENTRY(PASTE_AS, Qt::CTRL + Qt::SHIFT + Qt::Key_V, QObject::tr("")) +// CFG_KEY_ENTRY(PASTE_AS, Qt::CTRL + Qt::ALT + Qt::Key_V, QObject::tr("")) CFG_KEY_ENTRY(ERASE, Qt::ALT + Qt::Key_Backspace, QObject::tr("Set empty value to selected cell(s)")) CFG_KEY_ENTRY(SET_NULL, Qt::Key_Backspace, QObject::tr("Set NULL value to selected cell(s)")) CFG_KEY_ENTRY(COMMIT, Qt::CTRL + Qt::Key_Return, QObject::tr("Commit changes to cell(s) contents")) @@ -40,6 +42,7 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer enum Action { COPY, + COPY_WITH_HEADER, COPY_AS, PASTE, PASTE_AS, @@ -77,8 +80,21 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer QModelIndex getCurrentIndex() const; bool getSimpleBrowserMode() const; void setSimpleBrowserMode(bool value); + void setIgnoreColumnWidthChanges(bool ignore); + QMenu* getHeaderContextMenu() const; + + protected: + void scrollContentsBy(int dx, int dy); private: + class Header : public QHeaderView + { + public: + explicit Header(SqlQueryView* parent); + + QSize sectionSizeFromContents(int section) const; + }; + void init(); void setupWidgetCover(); void createActions(); @@ -90,8 +106,10 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer void paste(const QList<QList<QVariant>>& data); void addFkActionsToContextMenu(SqlQueryItem* currentItem); void goToReferencedRow(const QString& table, const QString& column, const QVariant& value); + void copy(bool withHeaders); constexpr static const char* mimeDataId = "application/x-sqlitestudio-data-view-data"; + constexpr static const int minHeaderWidth = 15; SqlQueryItemDelegate* itemDelegate = nullptr; QMenu* contextMenu = nullptr; @@ -102,6 +120,8 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer QProgressBar* busyBar = nullptr; QList<QAction*> additionalActions; bool simpleBrowserMode = false; + bool ignoreColumnWidthChanges = false; + int beforeExecutionHorizontalPosition = -1; private slots: void updateCommitRollbackActions(bool enabled); @@ -122,6 +142,7 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer void executionEnded(); void setCurrentRow(int row); void copy(); + void copyWithHeader(); void paste(); void copyAs(); void pasteAs(); @@ -139,6 +160,7 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer void requestForRowInsert(); void requestForMultipleRowInsert(); void requestForRowDelete(); + void scrolledBy(int dx, int dy); }; GUI_API_EXPORT int qHash(SqlQueryView::Action action); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp index 3a9f0b0..ed9a3a4 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp @@ -76,7 +76,7 @@ bool SqlTableModel::commitAddedRow(const QList<SqlQueryItem*>& itemsInRow) // Handle error if (result->isError()) { - foreach (SqlQueryItem* item, itemsInRow) + for (SqlQueryItem* item : itemsInRow) item->setCommittingError(true); notifyError(tr("Error while committing new row: %1").arg(result->getErrorText())); @@ -129,7 +129,7 @@ bool SqlTableModel::commitDeletedRow(const QList<SqlQueryItem*>& itemsInRow) CommitDeleteQueryBuilder queryBuilder; queryBuilder.setTable(wrapObjIfNeeded(table, dialect)); - queryBuilder.setRowId(rowId); + queryBuilder.setRowId(rowId, dialect); QString sql = queryBuilder.build(); QHash<QString, QVariant> args = queryBuilder.getQueryArgs(); @@ -147,41 +147,73 @@ bool SqlTableModel::commitDeletedRow(const QList<SqlQueryItem*>& itemsInRow) return true; } -bool SqlTableModel::supportsModifyingQueriesInMenu() const +void SqlTableModel::applyFilter(const QString& value, FilterValueProcessor valueProc) { - return true; -} + static_qstring(sql, "SELECT * FROM %1 WHERE %2"); -void SqlTableModel::applySqlFilter(const QString& value) -{ if (value.isEmpty()) { resetFilter(); return; } - setQuery("SELECT * FROM "+getDataSource()+" WHERE "+value); + Dialect dialect = db->getDialect(); + QStringList conditions; + for (SqlQueryModelColumnPtr column : columns) + conditions << wrapObjIfNeeded(column->column, dialect)+" "+valueProc(value); + + setQuery(sql.arg(getDataSource(), conditions.join(" OR "))); executeQuery(); } -void SqlTableModel::applyStringFilter(const QString& value) +void SqlTableModel::applyFilter(const QStringList& values, FilterValueProcessor valueProc) { - if (value.isEmpty()) + static_qstring(sql, "SELECT * FROM %1 WHERE %2"); + if (values.isEmpty()) { resetFilter(); return; } + if (values.size() != columns.size()) + { + qCritical() << "Asked to per-column filter, but number columns" + << columns.size() << "is different than number of values" << values.size(); + return; + } + Dialect dialect = db->getDialect(); QStringList conditions; - foreach (SqlQueryModelColumnPtr column, columns) - conditions << wrapObjIfNeeded(column->column, dialect)+" LIKE '%"+escapeString(value)+"%'"; + for (int i = 0, total = columns.size(); i < total; ++i) + { + if (values[i].isEmpty()) + continue; - setQuery("SELECT * FROM "+getDataSource()+" WHERE "+conditions.join(" OR ")); + conditions << wrapObjIfNeeded(columns[i]->column, dialect)+" "+valueProc(values[i]); + } + + setQuery(sql.arg(getDataSource(), conditions.join(" AND "))); executeQuery(); } -void SqlTableModel::applyRegExpFilter(const QString& value) +QString SqlTableModel::stringFilterValueProcessor(const QString& value) +{ + static_qstring(pattern, "LIKE '%%1%'"); + return pattern.arg(escapeString(value)); +} + +QString SqlTableModel::regExpFilterValueProcessor(const QString& value) +{ + static_qstring(pattern, "REGEXP '%1'"); + return pattern.arg(escapeString(value)); +} + +bool SqlTableModel::supportsModifyingQueriesInMenu() const +{ + return true; +} + +void SqlTableModel::applySqlFilter(const QString& value) { if (value.isEmpty()) { @@ -189,15 +221,30 @@ void SqlTableModel::applyRegExpFilter(const QString& value) return; } - Dialect dialect = db->getDialect(); - QStringList conditions; - foreach (SqlQueryModelColumnPtr column, columns) - conditions << wrapObjIfNeeded(column->column, dialect)+" REGEXP '"+escapeString(value)+"'"; - - setQuery("SELECT * FROM "+getDataSource()+" WHERE "+conditions.join(" OR ")); + setQuery("SELECT * FROM "+getDataSource()+" WHERE "+value); executeQuery(); } +void SqlTableModel::applyStringFilter(const QString& value) +{ + applyFilter(value, &stringFilterValueProcessor); +} + +void SqlTableModel::applyStringFilter(const QStringList& values) +{ + applyFilter(values, &stringFilterValueProcessor); +} + +void SqlTableModel::applyRegExpFilter(const QString& value) +{ + applyFilter(value, ®ExpFilterValueProcessor); +} + +void SqlTableModel::applyRegExpFilter(const QStringList& values) +{ + applyFilter(values, ®ExpFilterValueProcessor); +} + void SqlTableModel::resetFilter() { setQuery("SELECT * FROM "+getDataSource()); @@ -296,7 +343,7 @@ void SqlTableModel::updateRowAfterInsert(const QList<SqlQueryItem*>& itemsInRow, static_qstring(limitedColTpl, "substr(%1, 1, %2)"); SelectColumnsQueryBuilder queryBuilder; queryBuilder.setTable(wrapObjIfNeeded(table, dialect)); - queryBuilder.setRowId(rowId); + queryBuilder.setRowId(rowId, dialect); QList<SqlQueryModelColumnPtr> columnKeys = columnsToReadFromDb.keys(); for (const SqlQueryModelColumnPtr& modelColumn : columnKeys) queryBuilder.addColumn(limitedColTpl.arg(wrapObjIfNeeded(modelColumn->column, dialect), QString::number(cellDataLengthLimit))); @@ -394,7 +441,7 @@ void SqlTableModel::updateColumnsAndValues(const QList<SqlQueryItem*>& itemsInRo SqlQueryItem* item = nullptr; int i = 0; - foreach (SqlQueryModelColumnPtr modelColumn, modelColumns) + for (SqlQueryModelColumnPtr modelColumn : modelColumns) { item = itemsInRow[i++]; if (item->getValue().isNull()) @@ -421,7 +468,7 @@ void SqlTableModel::updateColumnsAndValuesWithDefaultValues(const QList<SqlQuery Dialect dialect = db->getDialect(); // First try to find the one with DEFAULT value - foreach (SqlQueryModelColumnPtr modelColumn, modelColumns) + for (SqlQueryModelColumnPtr modelColumn : modelColumns) { if (modelColumn->isDefault()) { @@ -433,7 +480,7 @@ void SqlTableModel::updateColumnsAndValuesWithDefaultValues(const QList<SqlQuery } // No DEFAULT, try with AUTOINCR - foreach (SqlQueryModelColumnPtr modelColumn, modelColumns) + for (SqlQueryModelColumnPtr modelColumn : modelColumns) { if (modelColumn->isPk() && modelColumn->isAutoIncr()) { diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h index da43b03..b904343 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h @@ -17,7 +17,9 @@ class GUI_API_EXPORT SqlTableModel : public SqlQueryModel Features features() const; void applySqlFilter(const QString& value); void applyStringFilter(const QString& value); + void applyStringFilter(const QStringList& values); void applyRegExpFilter(const QString& value); + void applyRegExpFilter(const QStringList& values); void resetFilter(); QString generateSelectQueryForItems(const QList<SqlQueryItem*>& items); QString generateInsertQueryForItems(const QList<SqlQueryItem*>& items); @@ -43,7 +45,13 @@ class GUI_API_EXPORT SqlTableModel : public SqlQueryModel void addColumn(const QString& col); }; + typedef std::function<QString(const QString&)> FilterValueProcessor; + static QString stringFilterValueProcessor(const QString& value); + static QString regExpFilterValueProcessor(const QString& value); + + void applyFilter(const QString& value, FilterValueProcessor valueProc); + void applyFilter(const QStringList& values, FilterValueProcessor valueProc); void updateColumnsAndValuesWithDefaultValues(const QList<SqlQueryModelColumnPtr>& modelColumns, QStringList& colNameList, QStringList& sqlValues, QList<QVariant>& args); void updateColumnsAndValues(const QList<SqlQueryItem*>& itemsInRow, const QList<SqlQueryModelColumnPtr>& modelColumns, diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp index 6666834..9012c1c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp @@ -13,6 +13,7 @@ #include "uiconfig.h" #include "datagrid/sqlqueryitem.h" #include "common/widgetcover.h" +#include "common/unused.h" #include <QDebug> #include <QHeaderView> #include <QVBoxLayout> @@ -21,12 +22,15 @@ #include <QAction> #include <QTime> #include <QStyleFactory> +#include <QLineEdit> +#include <QSizePolicy> +#include <QScrollBar> CFG_KEYS_DEFINE(DataView) -DataView::FilterMode DataView::filterMode; DataView::TabsPosition DataView::tabsPosition; QHash<DataView::Action,QAction*> DataView::staticActions; QHash<DataView::ActionGroup,QActionGroup*> DataView::staticActionGroups; +static const char* DATA_VIEW_FILTER_PROP = "filter"; DataView::DataView(QWidget *parent) : QTabWidget(parent) @@ -76,6 +80,8 @@ void DataView::initSlots() connect(gridView->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(columnsHeaderClicked(int))); connect(this, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); connect(model, SIGNAL(itemEditionEnded(SqlQueryItem*)), this, SLOT(adjustColumnWidth(SqlQueryItem*))); + connect(gridView, SIGNAL(scrolledBy(int, int)), this, SLOT(syncFilterScrollPosition())); + connect(gridView->horizontalHeader(), SIGNAL(sectionResized(int, int, int)), this, SLOT(resizeFilter(int, int, int))); } void DataView::initFormView() @@ -119,6 +125,9 @@ void DataView::createContents() gridWidget->layout()->addWidget(gridToolBar); formWidget->layout()->addWidget(formToolBar); + createFilterPanel(); + gridWidget->layout()->addWidget(perColumnAreaParent); + THEME_TUNER->manageCompactLayout({ gridWidget, formWidget @@ -136,6 +145,37 @@ void DataView::createContents() gridWidget->layout()->addWidget(gridView); } +void DataView::createFilterPanel() +{ + perColumnAreaParent = new QWidget(); + perColumnAreaParent->setVisible(false); + perColumnAreaParent->setLayout(new QHBoxLayout()); + perColumnAreaParent->layout()->setSpacing(0); + perColumnAreaParent->layout()->setMargin(0); + perColumnAreaParent->setFixedHeight(0); + + filterLeftSpacer = new QWidget(); + perColumnAreaParent->layout()->addWidget(filterLeftSpacer); + + perColumnFilterArea = new QScrollArea(); + perColumnFilterArea->setFixedHeight(0); + perColumnFilterArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + perColumnFilterArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + perColumnFilterArea->setFrameShape(QFrame::NoFrame); + perColumnWidget = new QWidget(); + perColumnWidget->setLayout(new QHBoxLayout()); + perColumnWidget->layout()->setSizeConstraint(QLayout::SetFixedSize); + perColumnWidget->layout()->setSpacing(0); + perColumnWidget->layout()->setMargin(0); + perColumnWidget->setAutoFillBackground(true); + perColumnWidget->setBackgroundRole(QPalette::Window); + perColumnFilterArea->setWidget(perColumnWidget); + perColumnAreaParent->layout()->addWidget(perColumnFilterArea); + + filterRightSpacer = new QWidget(); + perColumnAreaParent->layout()->addWidget(filterRightSpacer); +} + void DataView::initPageEdit() { pageEdit = new ExtLineEdit(); @@ -187,19 +227,8 @@ void DataView::createActions() createAction(LAST_PAGE, ICONS.PAGE_LAST, tr("Last page", "data view"), this, SLOT(lastPage()), gridToolBar); gridToolBar->addSeparator(); if (model->features().testFlag(SqlQueryModel::FILTERING)) - { - actionMap[FILTER_VALUE] = gridToolBar->addWidget(filterEdit); - createAction(FILTER, tr("Apply filter", "data view"), this, SLOT(applyFilter()), gridToolBar); - attachActionInMenu(FILTER, staticActions[FILTER_STRING], gridToolBar); - attachActionInMenu(FILTER, staticActions[FILTER_REGEXP], gridToolBar); - attachActionInMenu(FILTER, staticActions[FILTER_SQL], gridToolBar); - gridToolBar->addSeparator(); - updateFilterIcon(); - - connect(staticActions[FILTER_STRING], SIGNAL(triggered()), this, SLOT(filterModeSelected())); - connect(staticActions[FILTER_REGEXP], SIGNAL(triggered()), this, SLOT(filterModeSelected())); - connect(staticActions[FILTER_SQL], SIGNAL(triggered()), this, SLOT(filterModeSelected())); - } + createFilteringActions(); + actionMap[GRID_TOTAL_ROWS] = gridToolBar->addWidget(rowCountLabel); noConfigShortcutActions << GRID_TOTAL_ROWS << FILTER_VALUE; @@ -264,55 +293,33 @@ void DataView::setupDefShortcuts() void DataView::resizeColumnsInitiallyToContents() { - int cols = gridView->model()->columnCount(); + SqlQueryModel *model = gridView->getModel(); + int cols = model->columnCount(); + gridView->setIgnoreColumnWidthChanges(true); gridView->resizeColumnsToContents(); int wd; + int desiredWidth = -1; for (int i = 0; i < cols ; i++) { + desiredWidth = model->getDesiredColumnWidth(i); wd = gridView->columnWidth(i); + + if (desiredWidth > -1 && wd != desiredWidth) + { + gridView->setColumnWidth(i, desiredWidth); + continue; + } + if (wd > CFG_UI.General.MaxInitialColumnWith.get()) gridView->setColumnWidth(i, CFG_UI.General.MaxInitialColumnWith.get()); else if (wd < 60) gridView->setColumnWidth(i, 60); - } + gridView->setIgnoreColumnWidthChanges(false); } void DataView::createStaticActions() { - // Filtering actions - staticActions[FILTER_STRING] = new ExtAction(ICONS.APPLY_FILTER_TXT, tr("Filter by text", "data view"), MainWindow::getInstance()); - staticActions[FILTER_REGEXP] = new ExtAction(ICONS.APPLY_FILTER_RE, tr("Filter by the Regular Expression", "data view"), MainWindow::getInstance()); - staticActions[FILTER_SQL] = new ExtAction(ICONS.APPLY_FILTER_SQL, tr("Filter by SQL expression", "data view"), MainWindow::getInstance()); - - staticActionGroups[ActionGroup::FILTER_MODE] = new QActionGroup(MainWindow::getInstance()); - staticActionGroups[ActionGroup::FILTER_MODE]->addAction(staticActions[FILTER_STRING]); - staticActionGroups[ActionGroup::FILTER_MODE]->addAction(staticActions[FILTER_SQL]); - staticActionGroups[ActionGroup::FILTER_MODE]->addAction(staticActions[FILTER_REGEXP]); - - connect(staticActions[FILTER_STRING], &QAction::triggered, [=]() - { - filterMode = FilterMode::STRING; - }); - connect(staticActions[FILTER_SQL], &QAction::triggered, [=]() - { - filterMode = FilterMode::SQL; - }); - connect(staticActions[FILTER_REGEXP], &QAction::triggered, [=]() - { - filterMode = FilterMode::REGEXP; - }); - - staticActions[FILTER_STRING]->setCheckable(true); - staticActions[FILTER_REGEXP]->setCheckable(true); - staticActions[FILTER_SQL]->setCheckable(true); - if (filterMode == FilterMode::STRING) - staticActions[FILTER_STRING]->setChecked(true); - else if (filterMode == FilterMode::REGEXP) - staticActions[FILTER_REGEXP]->setChecked(true); - else - staticActions[FILTER_SQL]->setChecked(true); - // Tabs position actions staticActions[TABS_ON_TOP] = new ExtAction(ICONS.TABS_ON_TOP, tr("Tabs on top", "data view"), MainWindow::getInstance()); staticActions[TABS_AT_BOTTOM] = new ExtAction(ICONS.TABS_AT_BOTTOM, tr("Tabs at bottom", "data view"), MainWindow::getInstance()); @@ -499,6 +506,7 @@ void DataView::updateTabsMode() void DataView::filterModeSelected() { QAction* modeAction = dynamic_cast<QAction*>(sender()); + filterMode = static_cast<FilterMode>(modeAction->property(DATA_VIEW_FILTER_PROP).toInt()); actionMap[FILTER]->setIcon(modeAction->icon()); } @@ -541,6 +549,41 @@ void DataView::adjustColumnWidth(SqlQueryItem* item) gridView->setColumnWidth(col, CFG_UI.General.MaxInitialColumnWith.get()); } +void DataView::syncFilterScrollPosition() +{ + perColumnFilterArea->horizontalScrollBar()->setValue(gridView->horizontalScrollBar()->value()); +} + +void DataView::resizeFilter(int section, int oldSize, int newSize) +{ + UNUSED(oldSize); + if (filterInputs.isEmpty()) + return; + + if (filterInputs.size() <= section) + { + qCritical() << "Tried to adjust per-column filter input edit according to resized value, but section index is out of bounds:" + << section << ", while edit widgets count is:" << filterInputs.size(); + return; + } + + filterInputs[section]->setFixedWidth(newSize); +} + +void DataView::togglePerColumnFiltering() +{ + bool enable = actionMap[FILTER_PER_COLUMN]->isChecked(); + + filterEdit->setEnabled(!enable); + if (actionMap[FILTER_SQL]->isChecked()) + actionMap[FILTER_STRING]->setChecked(true); + + actionMap[FILTER_SQL]->setEnabled(!enable); + perColumnAreaParent->setVisible(enable); + + recreateFilterInputs(); +} + void DataView::updateCommitRollbackActions(bool enabled) { gridView->getAction(SqlQueryView::COMMIT)->setEnabled(enabled); @@ -638,18 +681,6 @@ void DataView::readData() model->executeQuery(); } -void DataView::updateFilterIcon() -{ - for (Action act : {FILTER_STRING, FILTER_SQL, FILTER_REGEXP}) - { - if (staticActions[act]->isChecked()) - { - actionMap[FILTER]->setIcon(staticActions[act]->icon()); - break; - } - } -} - bool DataView::isUncommitted() const { return uncommittedGrid || uncommittedForm; @@ -661,6 +692,7 @@ void DataView::dataLoadingEnded(bool successful) { updatePageEdit(); resizeColumnsInitiallyToContents(); + recreateFilterInputs(); } setNavigationState(true); @@ -778,18 +810,47 @@ void DataView::applyFilter() return; } - QString value = filterEdit->text(); - switch (filterMode) + if (actionMap[FILTER_PER_COLUMN]->isChecked()) { - case DataView::FilterMode::STRING: - model->applyStringFilter(value); - break; - case DataView::FilterMode::SQL: - model->applySqlFilter(value); - break; - case DataView::FilterMode::REGEXP: - model->applyRegExpFilter(value); - break; + filterValues.clear(); + for (QLineEdit* edit : filterInputs) + filterValues << edit->text(); + + if (filterValues.join("").isEmpty()) + { + model->resetFilter(); + return; + } + + switch (filterMode) + { + case DataView::FilterMode::STRING: + model->applyStringFilter(filterValues); + break; + case DataView::FilterMode::SQL: + // Should never happen. + qWarning() << "Requested to filter by SQL for filtering per-column. This should not be possible."; + break; + case DataView::FilterMode::REGEXP: + model->applyRegExpFilter(filterValues); + break; + } + } + else + { + QString value = filterEdit->text(); + switch (filterMode) + { + case DataView::FilterMode::STRING: + model->applyStringFilter(value); + break; + case DataView::FilterMode::SQL: + model->applySqlFilter(value); + break; + case DataView::FilterMode::REGEXP: + model->applyRegExpFilter(value); + break; + } } } @@ -854,7 +915,12 @@ void DataView::initFormViewForNewRow() int row = gridView->getCurrentIndex().row(); for (SqlQueryItem* item : getModel()->getRow(row)) + { + if (item->getColumn()->isAutoIncr()) + continue; + item->setValue(""); + } } void DataView::formViewFocusFirstEditor() @@ -863,6 +929,87 @@ void DataView::formViewFocusFirstEditor() formView->focusFirstEditor(); } +void DataView::recreateFilterInputs() +{ + qApp->processEvents(); + + for (QLineEdit* edit : filterInputs) + delete edit; + + filterInputs.clear(); + + filterLeftSpacer->setFixedSize(gridView->verticalHeader()->width() + 1, 1); + + QLineEdit* edit = nullptr; + for (int i = 0, total = gridView->horizontalHeader()->count(); i < total; ++i) + { + edit = new QLineEdit(perColumnWidget); + edit->setPlaceholderText(tr("Filter")); + edit->setClearButtonEnabled(true); + edit->setFixedWidth(gridView->columnWidth(i)); + edit->setToolTip(tr("Hit Enter key or press \"Apply filter\" button on toolbar to apply new value.")); + if (filterValues.size() > i) + edit->setText(filterValues[i]); + + connect(edit, SIGNAL(returnPressed()), this, SLOT(applyFilter())); + perColumnWidget->layout()->addWidget(edit); + filterInputs << edit; + } + + int rightSpacerWd = gridView->verticalScrollBar()->isVisible() ? gridView->verticalScrollBar()->width() : 0; + filterRightSpacer->setFixedSize(rightSpacerWd + 1, 1); + + perColumnAreaParent->setFixedWidth(gridView->width()); + + if (edit) + { + int hg = edit->sizeHint().height(); + perColumnFilterArea->setFixedHeight(hg); + perColumnAreaParent->setFixedHeight(hg); + } + + qApp->processEvents(); + + syncFilterScrollPosition(); +} + +void DataView::createFilteringActions() +{ + createAction(FILTER_STRING, ICONS.APPLY_FILTER_TXT, tr("Filter by text", "data view"), this, SLOT(filterModeSelected()), this); + createAction(FILTER_REGEXP, ICONS.APPLY_FILTER_RE, tr("Filter by the Regular Expression", "data view"), this, SLOT(filterModeSelected()), this); + createAction(FILTER_SQL, ICONS.APPLY_FILTER_SQL, tr("Filter by SQL expression", "data view"), this, SLOT(filterModeSelected()), this); + + actionMap[FILTER_STRING]->setProperty(DATA_VIEW_FILTER_PROP, static_cast<int>(FilterMode::STRING)); + actionMap[FILTER_REGEXP]->setProperty(DATA_VIEW_FILTER_PROP, static_cast<int>(FilterMode::REGEXP)); + actionMap[FILTER_SQL]->setProperty(DATA_VIEW_FILTER_PROP, static_cast<int>(FilterMode::SQL)); + + QActionGroup* filterGroup = new QActionGroup(gridToolBar); + filterGroup->addAction(actionMap[FILTER_STRING]); + filterGroup->addAction(actionMap[FILTER_SQL]); + filterGroup->addAction(actionMap[FILTER_REGEXP]); + + actionMap[FILTER_STRING]->setCheckable(true); + actionMap[FILTER_REGEXP]->setCheckable(true); + actionMap[FILTER_SQL]->setCheckable(true); + actionMap[FILTER_STRING]->setChecked(true); + + createAction(FILTER_PER_COLUMN, tr("Show filter inputs per column", "data view"), this, SLOT(togglePerColumnFiltering()), this); + actionMap[FILTER_PER_COLUMN]->setCheckable(true); + + actionMap[FILTER_VALUE] = gridToolBar->addWidget(filterEdit); + createAction(FILTER, tr("Apply filter", "data view"), this, SLOT(applyFilter()), gridToolBar); + attachActionInMenu(FILTER, actionMap[FILTER_STRING], gridToolBar); + attachActionInMenu(FILTER, actionMap[FILTER_REGEXP], gridToolBar); + attachActionInMenu(FILTER, actionMap[FILTER_SQL], gridToolBar); + addSeparatorInMenu(FILTER, gridToolBar); + attachActionInMenu(FILTER, actionMap[FILTER_PER_COLUMN], gridToolBar); + gridToolBar->addSeparator(); + + actionMap[FILTER]->setIcon(actionMap[FILTER_STRING]->icon()); + + gridView->getHeaderContextMenu()->addAction(actionMap[FILTER_PER_COLUMN]); +} + void DataView::columnsHeaderClicked(int columnIdx) { model->changeSorting(columnIdx); @@ -916,7 +1063,6 @@ QToolBar* DataView::getToolBar(int toolbar) const void DataView::staticInit() { - filterMode = FilterMode::STRING; tabsPosition = TabsPosition::TOP; loadTabsMode(); createStaticActions(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.h b/SQLiteStudio3/guiSQLiteStudio/dataview.h index 73ccfe7..55c7895 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dataview.h +++ b/SQLiteStudio3/guiSQLiteStudio/dataview.h @@ -15,6 +15,8 @@ class ExtLineEdit; class QLabel; class IntValidator; class WidgetCover; +class QScrollArea; +class QLineEdit; CFG_KEY_LIST(DataView, QObject::tr("Data view (both grid and form)"), CFG_KEY_ENTRY(REFRESH_DATA, Qt::Key_F5, QObject::tr("Refresh data")) @@ -46,6 +48,7 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer FILTER_STRING, FILTER_SQL, FILTER_REGEXP, + FILTER_PER_COLUMN, GRID_TOTAL_ROWS, SELECTIVE_COMMIT, SELECTIVE_ROLLBACK, @@ -123,6 +126,7 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer void initPageEdit(); void initWidgetCover(); void createContents(); + void createFilterPanel(); void goToFormRow(IndexModifier idxMod); void setNavigationState(bool enabled); void updateNavigationState(); @@ -133,15 +137,16 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer void updateCurrentFormViewRow(); void setFormViewEnabled(bool enabled); void readData(); - void updateFilterIcon(); void initFormViewForNewRow(); void formViewFocusFirstEditor(); + void recreateFilterInputs(); + void createFilteringActions(); - static FilterMode filterMode; static TabsPosition tabsPosition; static QHash<Action,QAction*> staticActions; static QHash<ActionGroup,QActionGroup*> staticActionGroups; + FilterMode filterMode = FilterMode::STRING; QToolBar* gridToolBar = nullptr; QToolBar* formToolBar = nullptr; SqlQueryView* gridView = nullptr; @@ -149,6 +154,9 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer FormView* formView = nullptr; QWidget* gridWidget = nullptr; QWidget* formWidget = nullptr; + QScrollArea* perColumnFilterArea = nullptr; + QWidget* perColumnWidget = nullptr; + QWidget* perColumnAreaParent = nullptr; ExtLineEdit* filterEdit = nullptr; QLabel* rowCountLabel = nullptr; QLabel* formViewRowCountLabel = nullptr; @@ -161,6 +169,10 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer bool uncommittedGrid = false; bool uncommittedForm = false; WidgetCover* widgetCover = nullptr; + QList<QLineEdit*> filterInputs; + QStringList filterValues; + QWidget* filterLeftSpacer = nullptr; + QWidget* filterRightSpacer = nullptr; signals: @@ -205,6 +217,9 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer void updateGridCommitCover(int value); void hideGridCommitCover(); void adjustColumnWidth(SqlQueryItem* item); + void syncFilterScrollPosition(); + void resizeFilter(int section, int oldSize, int newSize); + void togglePerColumnFiltering(); }; int qHash(DataView::ActionGroup action); diff --git a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp index 8153fed..b6203da 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp @@ -179,7 +179,7 @@ DbListModel::DbTreeComparer::DbTreeComparer() // TODO when sorting or D&D databases in the tree, this should be updated QList<DbTreeItem*> allItems = DBTREE->getModel()->getAllItemsAsFlatList(); dbTreeOrder.clear(); - foreach (DbTreeItem* item, allItems) + for (DbTreeItem* item : allItems) { if (item->getType() != DbTreeItem::Type::DB) continue; diff --git a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp index 43af10e..7dd45fd 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp @@ -97,7 +97,7 @@ ViewWindow* DbObjectDialogs::addView(const QString &initialSelect) ViewWindow* DbObjectDialogs::editView(const QString& database, const QString& view) { ViewWindow* win = nullptr; - foreach (MdiWindow* mdiWin, mdiArea->getWindows()) + for (MdiWindow* mdiWin : mdiArea->getWindows()) { win = dynamic_cast<ViewWindow*>(mdiWin->getMdiChild()); if (!win) @@ -376,7 +376,7 @@ void DbObjectDialogs::setNoConfirmation(bool value) TableWindow* DbObjectDialogs::editTable(const QString& database, const QString& table) { TableWindow* win = nullptr; - foreach (MdiWindow* mdiWin, mdiArea->getWindows()) + for (MdiWindow* mdiWin : mdiArea->getWindows()) { win = dynamic_cast<TableWindow*>(mdiWin->getMdiChild()); if (!win) diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp index 018eeb6..ba8ccc1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp @@ -3,6 +3,7 @@ #include "ui_dbtree.h" #include "actionentry.h" #include "common/utils_sql.h" +#include "common/utils.h" #include "dbtreemodel.h" #include "dialogs/dbdialog.h" #include "services/dbmanager.h" @@ -27,6 +28,8 @@ #include "themetuner.h" #include "dialogs/dbconverterdialog.h" #include "querygenerator.h" +#include "dialogs/execfromfiledialog.h" +#include "dialogs/fileexecerrorsdialog.h" #include <QApplication> #include <QClipboard> #include <QAction> @@ -38,6 +41,10 @@ #include <QKeyEvent> #include <QMimeData> #include <QDebug> +#include <QDesktopServices> +#include <QDir> +#include <QFileDialog> +#include <QtConcurrent/QtConcurrentRun> CFG_KEYS_DEFINE(DbTree) QHash<DbTreeItem::Type,QList<DbTreeItem::Type>> DbTree::allowedTypesInside; @@ -70,10 +77,33 @@ void DbTree::init() ui->nameFilter->setClearButtonEnabled(true); - widgetCover = new WidgetCover(this); - widgetCover->initWithInterruptContainer(); - widgetCover->hide(); - connect(widgetCover, SIGNAL(cancelClicked()), this, SLOT(interrupt())); + treeRefreshWidgetCover = new WidgetCover(this); + treeRefreshWidgetCover->initWithInterruptContainer(); + treeRefreshWidgetCover->hide(); + connect(treeRefreshWidgetCover, SIGNAL(cancelClicked()), this, SLOT(interrupt())); + + fileExecWidgetCover = new WidgetCover(this); + fileExecWidgetCover->initWithInterruptContainer(); + fileExecWidgetCover->displayProgress(100); + fileExecWidgetCover->hide(); + connect(fileExecWidgetCover, &WidgetCover::cancelClicked, [this]() + { + if (!this->executingQueriesFromFile) + return; + + this->executingQueriesFromFile = 0; + + if (this->executingQueriesFromFileDb) // should always be there, but just in case + { + this->executingQueriesFromFileDb->interrupt(); + this->executingQueriesFromFileDb->rollback(); + this->executingQueriesFromFileDb = nullptr; + notifyWarn(tr("Execution from file cancelled. Any queries executed so far have been rolled back.")); + } + }); + connect(this, &DbTree::updateFileExecProgress, this, &DbTree::setFileExecProgress, Qt::QueuedConnection); + connect(this, &DbTree::fileExecCoverToBeClosed, this, &DbTree::hideFileExecCover, Qt::QueuedConnection); + connect(this, &DbTree::fileExecErrors, this, &DbTree::showFileExecErrors, Qt::QueuedConnection); treeModel = new DbTreeModel(); treeModel->setTreeView(ui->treeView); @@ -107,45 +137,47 @@ void DbTree::createActions() createAction(CREATE_GROUP, ICONS.DIRECTORY_ADD, tr("Create a group"), this, SLOT(createGroup()), this); createAction(DELETE_GROUP, ICONS.DIRECTORY_DEL, tr("Delete the group"), this, SLOT(deleteGroup()), this); createAction(RENAME_GROUP, ICONS.DIRECTORY_EDIT, tr("Rename the group"), this, SLOT(renameGroup()), this); - createAction(ADD_DB, ICONS.DATABASE_ADD, tr("Add a database"), this, SLOT(addDb()), this); - createAction(EDIT_DB, ICONS.DATABASE_EDIT, tr("Edit the database"), this, SLOT(editDb()), this); - createAction(DELETE_DB, ICONS.DATABASE_DEL, tr("Remove the database"), this, SLOT(removeDb()), this); - createAction(CONNECT_TO_DB, ICONS.DATABASE_CONNECT, tr("Connect to the database"), this, SLOT(connectToDb()), this); - createAction(DISCONNECT_FROM_DB, ICONS.DATABASE_DISCONNECT, tr("Disconnect from the database"), this, SLOT(disconnectFromDb()), this); + createAction(ADD_DB, ICONS.DATABASE_ADD, tr("&Add a database"), this, SLOT(addDb()), this); + createAction(EDIT_DB, ICONS.DATABASE_EDIT, tr("&Edit the database"), this, SLOT(editDb()), this); + createAction(DELETE_DB, ICONS.DATABASE_DEL, tr("&Remove the database"), this, SLOT(removeDb()), this); + createAction(CONNECT_TO_DB, ICONS.DATABASE_CONNECT, tr("&Connect to the database"), this, SLOT(connectToDb()), this); + createAction(DISCONNECT_FROM_DB, ICONS.DATABASE_DISCONNECT, tr("&Disconnect from the database"), this, SLOT(disconnectFromDb()), this); createAction(IMPORT_INTO_DB, ICONS.IMPORT, tr("Import"), this, SLOT(import()), this); - createAction(EXPORT_DB, ICONS.DATABASE_EXPORT, tr("Export the database"), this, SLOT(exportDb()), this); - createAction(CONVERT_DB, ICONS.CONVERT_DB, tr("Convert database type"), this, SLOT(convertDb()), this); - createAction(VACUUM_DB, ICONS.VACUUM_DB, tr("Vacuum"), this, SLOT(vacuumDb()), this); - createAction(INTEGRITY_CHECK, ICONS.INTEGRITY_CHECK, tr("Integrity check"), this, SLOT(integrityCheck()), this); - createAction(ADD_TABLE, ICONS.TABLE_ADD, tr("Create a table"), this, SLOT(addTable()), this); - createAction(EDIT_TABLE, ICONS.TABLE_EDIT, tr("Edit the table"), this, SLOT(editTable()), this); - createAction(DEL_TABLE, ICONS.TABLE_DEL, tr("Delete the table"), this, SLOT(delTable()), this); + createAction(EXPORT_DB, ICONS.DATABASE_EXPORT, tr("&Export the database"), this, SLOT(exportDb()), this); + createAction(CONVERT_DB, ICONS.CONVERT_DB, tr("Con&vert database type"), this, SLOT(convertDb()), this); + createAction(VACUUM_DB, ICONS.VACUUM_DB, tr("Vac&uum"), this, SLOT(vacuumDb()), this); + createAction(INTEGRITY_CHECK, ICONS.INTEGRITY_CHECK, tr("&Integrity check"), this, SLOT(integrityCheck()), this); + createAction(ADD_TABLE, ICONS.TABLE_ADD, tr("Create a &table"), this, SLOT(addTable()), this); + createAction(EDIT_TABLE, ICONS.TABLE_EDIT, tr("Edit the t&able"), this, SLOT(editTable()), this); + createAction(DEL_TABLE, ICONS.TABLE_DEL, tr("Delete the ta&ble"), this, SLOT(delTable()), this); createAction(EXPORT_TABLE, ICONS.TABLE_EXPORT, tr("Export the table"), this, SLOT(exportTable()), this); createAction(IMPORT_TABLE, ICONS.TABLE_IMPORT, tr("Import into the table"), this, SLOT(importTable()), this); createAction(POPULATE_TABLE, ICONS.TABLE_POPULATE, tr("Populate table"), this, SLOT(populateTable()), this); createAction(CREATE_SIMILAR_TABLE, ICONS.TABLE_CREATE_SIMILAR, tr("Create similar table"), this, SLOT(createSimilarTable()), this); createAction(RESET_AUTOINCREMENT, ICONS.RESET_AUTOINCREMENT, tr("Reset autoincrement sequence"), this, SLOT(resetAutoincrement()), this); - createAction(ADD_INDEX, ICONS.INDEX_ADD, tr("Create an index"), this, SLOT(addIndex()), this); - createAction(EDIT_INDEX, ICONS.INDEX_EDIT, tr("Edit the index"), this, SLOT(editIndex()), this); - createAction(DEL_INDEX, ICONS.INDEX_DEL, tr("Delete the index"), this, SLOT(delIndex()), this); - createAction(ADD_TRIGGER, ICONS.TRIGGER_ADD, tr("Create a trigger"), this, SLOT(addTrigger()), this); - createAction(EDIT_TRIGGER, ICONS.TRIGGER_EDIT, tr("Edit the trigger"), this, SLOT(editTrigger()), this); - createAction(DEL_TRIGGER, ICONS.TRIGGER_DEL, tr("Delete the trigger"), this, SLOT(delTrigger()), this); - createAction(ADD_VIEW, ICONS.VIEW_ADD, tr("Create a view"), this, SLOT(addView()), this); - createAction(EDIT_VIEW, ICONS.VIEW_EDIT, tr("Edit the view"), this, SLOT(editView()), this); - createAction(DEL_VIEW, ICONS.VIEW_DEL, tr("Delete the view"), this, SLOT(delView()), this); + createAction(ADD_INDEX, ICONS.INDEX_ADD, tr("Create an &index"), this, SLOT(addIndex()), this); + createAction(EDIT_INDEX, ICONS.INDEX_EDIT, tr("Edit the i&ndex"), this, SLOT(editIndex()), this); + createAction(DEL_INDEX, ICONS.INDEX_DEL, tr("Delete the in&dex"), this, SLOT(delIndex()), this); + createAction(ADD_TRIGGER, ICONS.TRIGGER_ADD, tr("Create a trig&ger"), this, SLOT(addTrigger()), this); + createAction(EDIT_TRIGGER, ICONS.TRIGGER_EDIT, tr("Edit the trigg&er"), this, SLOT(editTrigger()), this); + createAction(DEL_TRIGGER, ICONS.TRIGGER_DEL, tr("Delete the trigge&r"), this, SLOT(delTrigger()), this); + createAction(ADD_VIEW, ICONS.VIEW_ADD, tr("Create a &view"), this, SLOT(addView()), this); + createAction(EDIT_VIEW, ICONS.VIEW_EDIT, tr("Edit the v&iew"), this, SLOT(editView()), this); + createAction(DEL_VIEW, ICONS.VIEW_DEL, tr("Delete the vi&ew"), this, SLOT(delView()), this); createAction(ADD_COLUMN, ICONS.TABLE_COLUMN_ADD, tr("Add a column"), this, SLOT(addColumn()), this); createAction(EDIT_COLUMN, ICONS.TABLE_COLUMN_EDIT, tr("Edit the column"), this, SLOT(editColumn()), this); createAction(DEL_COLUMN, ICONS.TABLE_COLUMN_DELETE, tr("Delete the column"), this, SLOT(delColumn()), this); createAction(DEL_SELECTED, ICONS.DELETE_SELECTED, tr("Delete selected items"), this, SLOT(deleteSelected()), this); createAction(CLEAR_FILTER, tr("Clear filter"), ui->nameFilter, SLOT(clear()), this); - createAction(REFRESH_SCHEMAS, ICONS.DATABASE_RELOAD, tr("Refresh all database schemas"), this, SLOT(refreshSchemas()), this); - createAction(REFRESH_SCHEMA, ICONS.DATABASE_RELOAD, tr("Refresh selected database schema"), this, SLOT(refreshSchema()), this); + createAction(REFRESH_SCHEMAS, ICONS.DATABASE_RELOAD, tr("&Refresh all database schemas"), this, SLOT(refreshSchemas()), this); + createAction(REFRESH_SCHEMA, ICONS.DATABASE_RELOAD, tr("Re&fresh selected database schema"), this, SLOT(refreshSchema()), this); createAction(ERASE_TABLE_DATA, ICONS.ERASE_TABLE_DATA, tr("Erase table data"), this, SLOT(eraseTableData()), this); createAction(GENERATE_SELECT, "SELECT", this, SLOT(generateSelectForTable()), this); createAction(GENERATE_INSERT, "INSERT", this, SLOT(generateInsertForTable()), this); createAction(GENERATE_UPDATE, "UPDATE", this, SLOT(generateUpdateForTable()), this); createAction(GENERATE_DELETE, "DELETE", this, SLOT(generateDeleteForTable()), this); + createAction(OPEN_DB_DIRECTORY, ICONS.DIRECTORY_OPEN_WITH_DB, tr("Open file's directory"), this, SLOT(openDbDirectory()), this); + createAction(EXEC_SQL_FROM_FILE, ICONS.EXEC_SQL_FROM_FILE, tr("Execute SQL from file"), this, SLOT(execSqlFromFile()), this); } void DbTree::updateActionStates(const QStandardItem *item) @@ -161,7 +193,7 @@ void DbTree::updateActionStates(const QStandardItem *item) // Add database should always be available, as well as a copy of an item enabled << ADD_DB << COPY; - if (isMimeDataValidForItem(QApplication::clipboard()->mimeData(), dbTreeItem)) + if (isMimeDataValidForItem(QApplication::clipboard()->mimeData(), dbTreeItem, true)) enabled << PASTE; enabled << CLEAR_FILTER; @@ -181,6 +213,10 @@ void DbTree::updateActionStates(const QStandardItem *item) } else enabled << CONNECT_TO_DB; + + QUrl url = QUrl::fromLocalFile(dbTreeItem->getDb()->getPath()); + if (url.isValid()) + enabled << OPEN_DB_DIRECTORY; } if (isDbOpen) @@ -193,7 +229,7 @@ void DbTree::updateActionStates(const QStandardItem *item) // It's handled outside of "item with db", above break; case DbTreeItem::Type::DB: - enabled << CREATE_GROUP << DELETE_DB << EDIT_DB; + enabled << CREATE_GROUP << DELETE_DB << EDIT_DB << EXEC_SQL_FROM_FILE; break; case DbTreeItem::Type::TABLES: break; @@ -308,7 +344,7 @@ void DbTree::updateActionStates(const QStandardItem *item) enabled << REFRESH_SCHEMAS; - foreach (int action, actionMap.keys()) + for (int action : actionMap.keys()) setActionEnabled(action, enabled.contains(action)); } @@ -380,6 +416,8 @@ void DbTree::setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu) actions += ActionEntry(CONVERT_DB); actions += ActionEntry(VACUUM_DB); actions += ActionEntry(INTEGRITY_CHECK); + actions += ActionEntry(EXEC_SQL_FROM_FILE); + actions += ActionEntry(OPEN_DB_DIRECTORY); actions += ActionEntry(_separator); } else @@ -559,7 +597,7 @@ void DbTree::setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu) actions += ActionEntry(REFRESH_SCHEMAS); QMenu* subMenu = nullptr; - foreach (ActionEntry actionEntry, actions) + for (ActionEntry actionEntry : actions) { switch (actionEntry.type) { @@ -576,7 +614,7 @@ void DbTree::setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu) case ActionEntry::Type::SUB_MENU: { subMenu = contextMenu->addMenu(actionEntry.subMenuIcon, actionEntry.subMenuLabel); - foreach (Action action, actionEntry.actions) + for (Action action : actionEntry.actions) { if (action == DbTree::_separator) { @@ -624,10 +662,10 @@ DbTreeView*DbTree::getView() const return ui->treeView; } -bool DbTree::isMimeDataValidForItem(const QMimeData* mimeData, const DbTreeItem* item) +bool DbTree::isMimeDataValidForItem(const QMimeData* mimeData, const DbTreeItem* item, bool forPasting) { if (mimeData->formats().contains(DbTreeModel::MIMETYPE)) - return areDbTreeItemsValidForItem(getModel()->getDragItems(mimeData), item); + return areDbTreeItemsValidForItem(getModel()->getDragItems(mimeData), item, forPasting); else if (mimeData->hasUrls()) return areUrlsValidForItem(mimeData->urls(), item); @@ -639,7 +677,7 @@ bool DbTree::isItemDraggable(const DbTreeItem* item) return item && draggableTypes.contains(item->getType()); } -bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem) +bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem, bool forPasting) { QSet<Db*> srcDbs; QList<DbTreeItem::Type> srcTypes; @@ -647,6 +685,9 @@ bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTre if (dstItem) dstType = dstItem->getType(); + if (dstType == DbTreeItem::Type::DB && !dstItem->getDb()->isOpen()) + return false; + for (DbTreeItem* srcItem : srcItems) { if (!srcItem) @@ -664,9 +705,6 @@ bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTre { if (!allowedTypesInside[dstType].contains(srcType)) return false; - - if (dstType == DbTreeItem::Type::DB && !dstItem->getDb()->isOpen()) - return false; } // Support for d&d reordering of db objects @@ -677,7 +715,8 @@ bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTre {DbTreeItem::Type::INDEX, DbTreeItem::Type::INDEXES} }; - if (srcTypes.toSet().size() == 1 && srcDbs.size() == 1 && dstItem && *(srcDbs.begin()) == dstItem->getDb() && reorderingTypeToParent[srcTypes.first()] == dstType) + if (!forPasting && srcTypes.toSet().size() == 1 && srcDbs.size() == 1 && dstItem && + *(srcDbs.begin()) == dstItem->getDb() && reorderingTypeToParent[srcTypes.first()] == dstType) return true; // No other d&d within same db @@ -698,14 +737,14 @@ bool DbTree::areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* d return true; } -void DbTree::showWidgetCover() +void DbTree::showRefreshWidgetCover() { - widgetCover->show(); + treeRefreshWidgetCover->show(); } -void DbTree::hideWidgetCover() +void DbTree::hideRefreshWidgetCover() { - widgetCover->hide(); + treeRefreshWidgetCover->hide(); } void DbTree::setSelectedItem(DbTreeItem *item) @@ -861,11 +900,10 @@ void DbTree::filterItemsWithParentInList(QList<DbTreeItem*>& items) { QMutableListIterator<DbTreeItem*> it(items); DbTreeItem* item = nullptr; - DbTreeItem* pathItem = nullptr; while (it.hasNext()) { item = it.next(); - foreach (pathItem, item->getPathToRoot().mid(1)) + for (DbTreeItem* pathItem : item->getPathToRoot().mid(1)) { if (items.contains(pathItem) && pathItem->getType() != DbTreeItem::Type::DIR) { @@ -1627,7 +1665,6 @@ QList<DbTreeItem*> DbTree::getSelectedItems(DbTree::ItemFilterFunc filterFunc) return items; } - void DbTree::deleteItems(const QList<DbTreeItem*>& itemsToDelete) { QList<DbTreeItem*> items = itemsToDelete; @@ -1642,7 +1679,7 @@ void DbTree::deleteItems(const QList<DbTreeItem*>& itemsToDelete) QStringList databasesToRemove; QString itemStr; int groupItems = 0; - foreach (DbTreeItem* item, items) + for (DbTreeItem* item : items) { itemStr = itemTmp.arg(item->getIcon()->toUrl()).arg(item->text().left(ITEM_TEXT_LIMIT)); @@ -1694,7 +1731,7 @@ void DbTree::deleteItems(const QList<DbTreeItem*>& itemsToDelete) void DbTree::refreshSchemas() { - foreach (Db* db, DBLIST->getDbList()) + for (Db* db : DBLIST->getDbList()) treeModel->refreshSchema(db); updateActionsForCurrent(); @@ -1716,6 +1753,22 @@ void DbTree::updateActionsForCurrent() updateActionStates(ui->treeView->currentItem()); } +void DbTree::setFileExecProgress(int newValue) +{ + fileExecWidgetCover->setProgress(newValue); +} + +void DbTree::hideFileExecCover() +{ + fileExecWidgetCover->hide(); +} + +void DbTree::showFileExecErrors(const QList<QPair<QString, QString> >& errors, bool rolledBack) +{ + FileExecErrorsDialog dialog(errors, rolledBack, MAINWINDOW); + dialog.exec(); +} + void DbTree::dbConnected(Db* db) { updateActionsForCurrent(); @@ -1780,6 +1833,166 @@ void DbTree::generateDeleteForTable() MAINWINDOW->openSqlEditor(db, sql); } +void DbTree::openDbDirectory() +{ + Db* db = getSelectedDb(); + if (!db) + return; + + QFileInfo fi(db->getPath()); + if (!fi.exists()) + return; + + QUrl url = QUrl::fromLocalFile(fi.dir().path()); + if (url.isValid()) + QDesktopServices::openUrl(url); +} + +void DbTree::execSqlFromFile() +{ + Db* db = getSelectedDb(); + if (!db || !db->isOpen()) + return; + + ExecFromFileDialog dialog(MAINWINDOW); + int res = dialog.exec(); + if (res != QDialog::Accepted) + return; + + if (executingQueriesFromFile) + return; + + // Exec file + executingQueriesFromFile = 1; + executingQueriesFromFileDb = db; + fileExecWidgetCover->setProgress(0); + fileExecWidgetCover->show(); + if (!db->begin()) + { + notifyError(tr("Could not execute SQL, because application has failed to start transaction: %1").arg(db->getErrorText())); + fileExecWidgetCover->hide(); + return; + } + + QtConcurrent::run(this, &DbTree::execFromFileAsync, dialog.filePath(), db, dialog.ignoreErrors(), dialog.codec()); +} + +void DbTree::execFromFileAsync(const QString& path, Db* db, bool ignoreErrors, const QString& codec) +{ + // Open file + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + notifyError(tr("Could not open file '%1' for reading: %2").arg(path).arg(file.errorString())); + executingQueriesFromFile = 0; + emit fileExecCoverToBeClosed(); + return; + } + + + QTextStream stream(&file); + stream.setCodec(codec.toLatin1().constData()); + + qint64 fileSize = file.size(); + int attemptedExecutions = 0; + int executed = 0; + bool ok = true; + + QTime timer; + timer.start(); + QList<QPair<QString, QString>> errors = executeFileQueries(db, stream, executed, attemptedExecutions, ok, ignoreErrors, fileSize); + int millis = timer.elapsed(); + if (executingQueriesFromFile.loadAcquire()) + { + handleFileQueryExecution(db, executed, attemptedExecutions, ok, ignoreErrors, millis); + if (!errors.isEmpty()) + emit fileExecErrors(errors, !ok && !ignoreErrors); + } + + file.close(); + emit fileExecCoverToBeClosed(); + executingQueriesFromFile = 0; +} + +QList<QPair<QString, QString>> DbTree::executeFileQueries(Db* db, QTextStream& stream, int& executed, int& attemptedExecutions, bool& ok, bool ignoreErrors, qint64 fileSize) +{ + QList<QPair<QString, QString>> errors; + qint64 pos = 0; + QChar c; + QString sql; + sql.reserve(10000); + SqlQueryPtr results; + while (!stream.atEnd() && executingQueriesFromFile.loadAcquire()) + { + while (!db->isComplete(sql) && !stream.atEnd()) + { + stream >> c; + sql.append(c); + while (c != ';' && !stream.atEnd()) + { + stream >> c; + sql.append(c); + } + } + + if (sql.trimmed().isEmpty()) + continue; + + results = db->exec(sql); + attemptedExecutions++; + if (results->isError()) + { + ok = false; + errors << QPair<QString, QString>(sql, results->getErrorText()); + + if (!ignoreErrors) + break; + } + else + executed++; + + sql.clear(); + if (attemptedExecutions % 100 == 0) + { + pos = stream.device()->pos(); + emit updateFileExecProgress(static_cast<int>(100 * pos / fileSize)); + } + } + return errors; +} + +void DbTree::handleFileQueryExecution(Db* db, int executed, int attemptedExecutions, bool ok, bool ignoreErrors, int millis) +{ + bool doCommit = ok ? true : ignoreErrors; + if (doCommit) + { + if (!db->commit()) + { + db->rollback(); + notifyError(tr("Could not execute SQL, because application has failed to commit the transaction: %1").arg(db->getErrorText())); + } + else if (!ok) // committed with errors + { + notifyInfo(tr("Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.") + .arg(executed).arg(millis / 1000.0).arg(attemptedExecutions - executed)); + } + else + { + notifyInfo(tr("Finished executing %1 queries in %2 seconds.").arg(executed).arg(millis / 1000.0)); + } + } + else + { + db->rollback(); + notifyError(tr("Could not execute SQL due to error.")); + } +} + +bool DbTree::execQueryFromFile(Db* db, const QString& sql) +{ + return !db->exec(sql)->isError(); +} + void DbTree::setupDefShortcuts() { setShortcutContext({ diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h index f97e5eb..f72ebda 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h @@ -8,6 +8,7 @@ #include "guiSQLiteStudio_global.h" #include <QDockWidget> #include <QSet> +#include <QAtomicInt> class WidgetCover; class QAction; @@ -90,6 +91,8 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer GENERATE_UPDATE, GENERATE_INSERT, GENERATE_DELETE, + OPEN_DB_DIRECTORY, + EXEC_SQL_FROM_FILE, _separator // Never use it directly, it's just for menu setup }; @@ -109,10 +112,10 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer void restoreSession(const QVariant& sessionValue); DbTreeModel* getModel() const; DbTreeView* getView() const; - void showWidgetCover(); - void hideWidgetCover(); + void showRefreshWidgetCover(); + void hideRefreshWidgetCover(); void setSelectedItem(DbTreeItem* item); - bool isMimeDataValidForItem(const QMimeData* mimeData, const DbTreeItem* item); + bool isMimeDataValidForItem(const QMimeData* mimeData, const DbTreeItem* item, bool forPasting = false); QToolBar* getToolBar(int toolbar) const; Db* getSelectedDb(); Db* getSelectedOpenDb(); @@ -149,14 +152,21 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer QString getSelectedViewName() const; QList<DbTreeItem*> getSelectedItems(DbTreeItem::Type itemType); QList<DbTreeItem*> getSelectedItems(ItemFilterFunc filterFunc = nullptr); + void execFromFileAsync(const QString& path, Db* db, bool ignoreErrors, const QString& codec); + bool execQueryFromFile(Db* db, const QString& sql); + void handleFileQueryExecution(Db* db, int executed, int attemptedExecutions, bool ok, bool ignoreErrors, int millis); + QList<QPair<QString, QString>> executeFileQueries(Db* db, QTextStream& stream, int& executed, int& attemptedExecutions, bool& ok, bool ignoreErrors, qint64 fileSize); - static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem); + static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem, bool forPasting = false); static bool areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* dstItem); static void initDndTypes(); Ui::DbTree *ui = nullptr; DbTreeModel* treeModel = nullptr; - WidgetCover* widgetCover = nullptr; + WidgetCover* treeRefreshWidgetCover = nullptr; + WidgetCover* fileExecWidgetCover = nullptr; + QAtomicInt executingQueriesFromFile = 0; + Db* executingQueriesFromFileDb = nullptr; static QHash<DbTreeItem::Type,QList<DbTreeItem::Type>> allowedTypesInside; static QSet<DbTreeItem::Type> draggableTypes; @@ -221,6 +231,16 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer void generateInsertForTable(); void generateUpdateForTable(); void generateDeleteForTable(); + void openDbDirectory(); + void execSqlFromFile(); + void setFileExecProgress(int newValue); + void hideFileExecCover(); + void showFileExecErrors(const QList<QPair<QString, QString>>& errors, bool rolledBack); + + signals: + void updateFileExecProgress(int value); + void fileExecCoverToBeClosed(); + void fileExecErrors(const QList<QPair<QString, QString>>& errors, bool rolledBack); }; int qHash(DbTree::Action action); diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp index 9fe88c2..123c4df 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp @@ -99,7 +99,7 @@ void DbTreeModel::deleteGroup(QStandardItem *groupItem) if (!parentItem) parentItem = root(); - foreach (QStandardItem* child, dynamic_cast<DbTreeItem*>(groupItem)->childs()) + for (QStandardItem* child : dynamic_cast<DbTreeItem*>(groupItem)->childs()) move(child, parentItem); parentItem->removeRow(groupItem->row()); @@ -163,12 +163,12 @@ void DbTreeModel::storeGroups() void DbTreeModel::readGroups(QList<Db*> dbList) { QList<Config::DbGroupPtr> groups = CFG->getGroups(); - foreach (const Config::DbGroupPtr& group, groups) + for (const Config::DbGroupPtr& group : groups) restoreGroup(group, &dbList); // Add rest of databases, not mentioned in groups Config::DbGroupPtr group; - foreach (Db* db, dbList) + for (Db* db : dbList) { group = Config::DbGroupPtr::create(); group->referencedDbName = db->getName(); @@ -243,7 +243,7 @@ void DbTreeModel::restoreGroup(const Config::DbGroupPtr& group, QList<Db*>* dbLi if (item->getType() == DbTreeItem::Type::DIR) { - foreach (const Config::DbGroupPtr& childGroup, group->childs) + for (const Config::DbGroupPtr& childGroup : group->childs) restoreGroup(childGroup, dbList, item); } @@ -538,7 +538,7 @@ QList<QStandardItem *> DbTreeModel::refreshSchemaTables(const QStringList &table sortedTables.sort(Qt::CaseInsensitive); QList<QStandardItem *> items; - foreach (const QString& table, sortedTables) + for (const QString& table : sortedTables) { if (virtualTables.contains(table)) items += DbTreeItemFactory::createVirtualTable(table, this); @@ -605,7 +605,7 @@ QList<QStandardItem *> DbTreeModel::refreshSchemaViews(const QStringList &views, sortedViews.sort(Qt::CaseInsensitive); QList<QStandardItem *> items; - foreach (const QString& view, sortedViews) + for (const QString& view : sortedViews) items += DbTreeItemFactory::createView(view, this); return items; @@ -638,7 +638,7 @@ void DbTreeModel::refreshSchemaBuild(QStandardItem *dbItem, DbTreeItem* columnsItem = nullptr; DbTreeItem* indexesItem = nullptr; DbTreeItem* triggersItem = nullptr; - foreach (QStandardItem* tableItem, tables) + for (QStandardItem* tableItem : tables) { tablesItem->appendRow(tableItem); @@ -650,22 +650,22 @@ void DbTreeModel::refreshSchemaBuild(QStandardItem *dbItem, tableItem->appendRow(indexesItem); tableItem->appendRow(triggersItem); - foreach (QStandardItem* columnItem, allTableColumns[tableItem->text()]) + for (QStandardItem* columnItem : allTableColumns[tableItem->text()]) columnsItem->appendRow(columnItem); - foreach (QStandardItem* indexItem, indexes[tableItem->text()]) + for (QStandardItem* indexItem : indexes[tableItem->text()]) indexesItem->appendRow(indexItem); - foreach (QStandardItem* triggerItem, triggers[tableItem->text()]) + for (QStandardItem* triggerItem : triggers[tableItem->text()]) triggersItem->appendRow(triggerItem); } - foreach (QStandardItem* viewItem, views) + for (QStandardItem* viewItem : views) { viewsItem->appendRow(viewItem); triggersItem = DbTreeItemFactory::createTriggers(this); viewItem->appendRow(triggersItem); - foreach (QStandardItem* triggerItem, triggers[viewItem->text()]) + for (QStandardItem* triggerItem : triggers[viewItem->text()]) triggersItem->appendRow(triggerItem); } } @@ -677,7 +677,7 @@ void DbTreeModel::restoreExpandedState(const QHash<QString, bool>& expandedState if (expandedState.contains(sig) && expandedState[sig]) treeView->expand(parentItem->index()); - foreach (QStandardItem* child, parentDbTreeItem->childs()) + for (QStandardItem* child : parentDbTreeItem->childs()) restoreExpandedState(expandedState, child); } @@ -965,7 +965,7 @@ bool DbTreeModel::pasteData(const QMimeData* data, int row, int column, const QM } if (data->formats().contains(MIMETYPE)) - return dropDbTreeItem(getDragItems(data), dstItem, defaultAction, *invokeStdAction); + return dropDbTreeItem(getDragItems(data), dstItem, defaultAction, invokeStdAction); else if (data->hasUrls()) return dropUrls(data->urls()); else @@ -975,7 +975,7 @@ bool DbTreeModel::pasteData(const QMimeData* data, int row, int column, const QM void DbTreeModel::interruptableStarted(Interruptable* obj) { if (interruptables.size() == 0) - treeView->getDbTree()->showWidgetCover(); + treeView->getDbTree()->showRefreshWidgetCover(); interruptables << obj; } @@ -984,7 +984,7 @@ void DbTreeModel::interruptableFinished(Interruptable* obj) { interruptables.removeOne(obj); if (interruptables.size() == 0) - treeView->getDbTree()->hideWidgetCover(); + treeView->getDbTree()->hideRefreshWidgetCover(); } QList<DbTreeItem*> DbTreeModel::getDragItems(const QMimeData* data) @@ -1025,7 +1025,7 @@ void DbTreeModel::staticInit() { } -bool DbTreeModel::dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction, bool& invokeStdDropAction) +bool DbTreeModel::dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction, bool *invokeStdDropAction) { // The result means: do we want the old item to be removed from the tree? if (srcItems.size() == 0) @@ -1040,9 +1040,9 @@ bool DbTreeModel::dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* if (!dstItem) return false; - if (srcItem->getDb() == dstItem->getDb()) + if (srcItem->getDb() == dstItem->getDb() && invokeStdDropAction) { - invokeStdDropAction = true; + *invokeStdDropAction = true; return true; } @@ -1050,8 +1050,12 @@ bool DbTreeModel::dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* } case DbTreeItem::Type::DB: case DbTreeItem::Type::DIR: - invokeStdDropAction = true; + { + if (invokeStdDropAction) + *invokeStdDropAction = true; + break; + } case DbTreeItem::Type::COLUMN: case DbTreeItem::Type::TABLES: case DbTreeItem::Type::INDEXES: diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h index 50b080d..9ba0d82 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h @@ -81,7 +81,7 @@ class GUI_API_EXPORT DbTreeModel : public QStandardItemModel QString getDbToolTip(DbTreeItem *item) const; QString getTableToolTip(DbTreeItem *item) const; QList<DbTreeItem*> getChildsAsFlatList(QStandardItem* item) const; - bool dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction, bool &invokeStdDropAction); + bool dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction, bool* invokeStdDropAction); bool dropDbObjectItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction); QCheckBox* createCopyOrMoveMenuCheckBox(QMenu* menu, const QString& label); bool dropUrls(const QList<QUrl>& urls); diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreeview.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreeview.cpp index 7785b8f..9382d7c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreeview.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreeview.cpp @@ -54,7 +54,7 @@ QList<DbTreeItem *> DbTreeView::selectionItems() { QList<DbTreeItem*> items; QModelIndexList selectedIndexes = selectionModel()->selectedIndexes(); - foreach (QModelIndex modIdx, selectedIndexes) + for (QModelIndex modIdx : selectedIndexes) items += dynamic_cast<DbTreeItem*>(model()->itemFromIndex(modIdx)); return items; diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui index 179ee3b..16a6e1f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui @@ -17,7 +17,7 @@ <item row="0" column="1"> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="about"> <attribute name="title"> @@ -27,7 +27,7 @@ <item> <widget class="QLabel" name="aboutLabel"> <property name="text"> - <string><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></string> + <string><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></string> </property> <property name="openExternalLinks"> <bool>true</bool> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.cpp new file mode 100644 index 0000000..1d7ba66 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.cpp @@ -0,0 +1,133 @@ +#include "bindparamsdialog.h" +#include "ui_bindparamsdialog.h" +#include "common/bindparam.h" +#include "multieditor/multieditor.h" +#include "widgetresizer.h" +#include "services/pluginmanager.h" +#include "multieditor/multieditorwidgetplugin.h" +#include "multieditor/multieditorwidget.h" +#include <QDebug> + +BindParamsDialog::BindParamsDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::BindParamsDialog) +{ + init(); +} + +BindParamsDialog::~BindParamsDialog() +{ + delete ui; +} + +void BindParamsDialog::setBindParams(const QVector<BindParam*>& params) +{ + bindParams = params; + initEditors(); +} + +void BindParamsDialog::init() +{ + ui->setupUi(this); + + contents = new QWidget(); + QVBoxLayout *contentsLayout = new QVBoxLayout(); + contentsLayout->setSpacing(spacing); + contentsLayout->setMargin(margins); + contentsLayout->setAlignment(Qt::AlignTop); + contents->setLayout(contentsLayout); + + ui->scrollArea->setWidget(contents); + ui->scrollArea->setAlignment(Qt::AlignTop); +} + +void BindParamsDialog::initEditors() +{ + QStringList paramNames; + for (BindParam* param : bindParams) + paramNames << param->originalName; + + MultiEditor* firstEditor = nullptr; + MultiEditor* multiEditor = nullptr; + QVector<QPair<QString, QVariant>> paramHistory = CFG->getBindParamHistory(paramNames); + for (BindParam* param : bindParams) + { + multiEditor = initEditor(param, paramHistory.size() > param->position ? paramHistory[param->position].second : QVariant()); + if (firstEditor == nullptr) + firstEditor = multiEditor; + } + + firstEditor->focusThisEditor(); +} + +MultiEditor* BindParamsDialog::initEditor(BindParam* param, const QVariant& cachedValue) +{ + // Label + static_qstring(nameTpl, "[%1] %2"); + QString label = nameTpl.arg(param->position + 1).arg(param->originalName); + + // MultiEditor + MultiEditor* multiEditor = new MultiEditor(this, MultiEditor::DYNAMIC); + multiEditor->setReadOnly(false); + multiEditor->setCornerLabel(label); + contents->layout()->addWidget(multiEditor); + contents->layout()->setAlignment(multiEditor, Qt::AlignTop); + editors[param] = multiEditor; + + // MultiEditor editors + MultiEditorWidgetPlugin* plugin = dynamic_cast<MultiEditorWidgetPlugin*>(PLUGINS->getLoadedPlugin("MultiEditorNumericPlugin")); + MultiEditorWidget* editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + multiEditor->addEditor(editor); + + plugin = dynamic_cast<MultiEditorWidgetPlugin*>(PLUGINS->getLoadedPlugin("MultiEditorTextPlugin")); + editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + multiEditor->addEditor(editor); + + // Resizer + WidgetResizer* resizer = new WidgetResizer(Qt::Vertical); + resizer->setWidget(multiEditor); + resizer->setWidgetMinimumSize(0, minimumFieldHeight); + contents->layout()->addWidget(resizer); + resizer->minimizeHeight(); + + if (cachedValue.isValid()) + { + switch (cachedValue.type()) + { + case QVariant::LongLong: + case QVariant::ULongLong: + case QVariant::Int: + case QVariant::UInt: + case QVariant::Double: + multiEditor->showTab(0); + break; + default: + multiEditor->showTab(1); + break; + } + + multiEditor->setValue(cachedValue); + } + + return multiEditor; +} + +void BindParamsDialog::accept() +{ + QVector<QPair<QString, QVariant>> paramHistory; + paramHistory.reserve(bindParams.size()); + bool rememberValue = false; + QVariant emptyValue; + for (BindParam* param : bindParams) + { + param->value = editors[param]->getValue(); + rememberValue = (param->value.type() != QVariant::ByteArray || param->value.toByteArray().size() <= 102400); + paramHistory << QPair<QString, QVariant>(param->originalName, rememberValue ? param->value : emptyValue); + } + + CFG->addBindParamHistory(paramHistory); + + QDialog::accept(); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.h new file mode 100644 index 0000000..666ffc4 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.h @@ -0,0 +1,41 @@ +#ifndef BINDPARAMSDIALOG_H +#define BINDPARAMSDIALOG_H + +#include <QDialog> + +namespace Ui { + class BindParamsDialog; +} + +struct BindParam; +class MultiEditor; + +class BindParamsDialog : public QDialog +{ + Q_OBJECT + + public: + explicit BindParamsDialog(QWidget *parent = nullptr); + ~BindParamsDialog(); + + void setBindParams(const QVector<BindParam*>& params); + + private: + void init(); + void initEditors(); + MultiEditor* initEditor(BindParam* param, const QVariant& cachedValue); + + static const int margins = 2; + static const int spacing = 2; + static const int minimumFieldHeight = 80; + + Ui::BindParamsDialog *ui; + QVector<BindParam*> bindParams; + QHash<BindParam*, MultiEditor*> editors; + QWidget* contents = nullptr; + + public slots: + void accept(); +}; + +#endif // BINDPARAMSDIALOG_H diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.ui new file mode 100644 index 0000000..b6af05a --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/bindparamsdialog.ui @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>BindParamsDialog</class> + <widget class="QDialog" name="BindParamsDialog"> + <property name="windowModality"> + <enum>Qt::WindowModal</enum> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>576</width> + <height>420</height> + </rect> + </property> + <property name="windowTitle"> + <string>Query parameters</string> + </property> + <property name="modal"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Please provide values for query parameters</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>556</width> + <height>352</height> + </rect> + </property> + </widget> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Abort|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>BindParamsDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>BindParamsDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.cpp deleted file mode 100644 index 59a2ec6..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.cpp +++ /dev/null @@ -1,219 +0,0 @@ -#include "bugdialog.h" -#include "ui_bugdialog.h" -#include "iconmanager.h" -#include "uiutils.h" -#include "common/utils.h" -#include "sqlitestudio.h" -#include "mainwindow.h" -#include "bugreportlogindialog.h" -#include "services/pluginmanager.h" -#include "services/bugreporter.h" -#include "services/notifymanager.h" -#include <QPushButton> -#include <QDebug> -#include <QDesktopServices> - -BugDialog::BugDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::BugDialog) -{ - init(); -} - -BugDialog::~BugDialog() -{ - delete ui; -} - -void BugDialog::setFeatureRequestMode(bool feature) -{ - bugMode = !feature; - updateState(); -} - -void BugDialog::init() -{ - ui->setupUi(this); - resize(width(), height() - 50); - - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Send")); - - connect(ui->moreDetailsGroup, SIGNAL(toggled(bool)), this, SLOT(updateState())); - connect(ui->shortDescriptionEdit, SIGNAL(textChanged(QString)), this, SLOT(validate())); - connect(ui->longDescriptionEdit, SIGNAL(textChanged()), this, SLOT(validate())); - connect(ui->emailEdit, SIGNAL(textChanged(QString)), this, SLOT(validate())); - connect(ui->helpButton, SIGNAL(clicked()), this, SLOT(help())); - connect(ui->loginButton, SIGNAL(clicked()), this, SLOT(logIn())); - - ui->versionEdit->setText(SQLITESTUDIO->getVersionString()); - ui->osEdit->setText(getOsString()); - ui->pluginsEdit->setText(PLUGINS->getLoadedPluginNames().join(", ")); - - user = CFG_CORE.Internal.BugReportUser.get(); - - if (CFG_CORE.Internal.BugReportRecentError.get()) - { - ui->shortDescriptionEdit->setText(CFG_CORE.Internal.BugReportRecentTitle.get()); - ui->longDescriptionEdit->setPlainText(CFG_CORE.Internal.BugReportRecentContents.get()); - } - - updateState(); - validate(); -} - -QString BugDialog::getMessageAboutReportHistory() -{ - return tr("You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.").arg(MAINWINDOW->getSQLiteStudioMenu()->title()) - .arg(MAINWINDOW->getAction(MainWindow::BUG_REPORT_HISTORY)->text()); -} - -void BugDialog::finishedBugReport(bool success, const QString& errorMsg) -{ - if (success) - { - notifyInfo(tr("A bug report sent successfully.") + " " + getMessageAboutReportHistory()); - } - else - { - CFG_CORE.Internal.BugReportRecentError.set(true); - notifyError(tr("An error occurred while sending a bug report: %1\n%2").arg(errorMsg, - tr("You can retry sending. The contents will be restored when you open a report dialog after an error like this."))); - } -} - -void BugDialog::finishedFeatureRequest(bool success, const QString& errorMsg) -{ - if (success) - { - notifyInfo(tr("An idea proposal sent successfully.") + " " + getMessageAboutReportHistory()); - } - else - { - CFG_CORE.Internal.BugReportRecentError.set(true); - notifyError(tr("An error occurred while sending an idea proposal: %1\n%2").arg(errorMsg, - tr("You can retry sending. The contents will be restored when you open a report dialog after an error like this."))); - } -} - -void BugDialog::updateState() -{ - ui->scrollArea->setVisible(ui->moreDetailsGroup->isChecked()); - - ui->moreDetailsGroup->setVisible(bugMode); - if (bugMode) - { - setWindowTitle(tr("A bug report")); - ui->shortDescriptionEdit->setPlaceholderText(tr("Describe problem in few words")); - ui->longDescriptionEdit->setPlaceholderText(tr("Describe problem and how to reproduce it")); - } - else - { - setWindowTitle(tr("A new feature idea")); - ui->shortDescriptionEdit->setPlaceholderText(tr("A title for your idea")); - ui->longDescriptionEdit->setPlaceholderText(tr("Describe your idea in more details")); - } - - if (user.isNull()) - { - ui->currentLoginLabel->setToolTip(tr("Reporting as an unregistered user, using e-mail address.")); - ui->currentLoginLabel->setPixmap(ICONS.USER_UNKNOWN); - ui->emailEdit->setEnabled(true); - ui->loginButton->setText(tr("Log in")); - ui->loginButton->setIcon(ICONS.USER); - validate(); - } - else - { - ui->currentLoginLabel->setToolTip(tr("Reporting as a registered user.")); - ui->currentLoginLabel->setPixmap(ICONS.USER); - ui->emailEdit->setText(user); - ui->emailEdit->setEnabled(false); - ui->loginButton->setText(tr("Log out")); - ui->loginButton->setIcon(ICONS.USER_UNKNOWN); - } -} - -void BugDialog::validate() -{ - bool emailOk = !user.isNull() || validateEmail(ui->emailEdit->text()); - int shortSize = ui->shortDescriptionEdit->text().trimmed().size(); - int longSize = ui->longDescriptionEdit->toPlainText().trimmed().size(); - bool shortOk = shortSize >= 10 && shortSize <= 100; - bool longOk = longSize >= 30; - - setValidStateWihtTooltip(ui->emailEdit, tr("Providing true email address will make it possible to contact you regarding your report. " - "To learn more, press 'help' button on the right side."), - emailOk, tr("Enter vaild e-mail address, or log in.")); - - setValidState(ui->shortDescriptionEdit, shortOk, tr("Short description requires at least 10 characters, but not more than 100. " - "Longer description can be entered in the field below.")); - - setValidState(ui->longDescriptionEdit, longOk, tr("Long description requires at least 30 characters.")); - - bool valid = shortOk && longOk && emailOk; - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(valid); -} - -void BugDialog::help() -{ - if (user.isNull()) - QDesktopServices::openUrl(QUrl(BUGS->getReporterEmailHelpUrl())); - else - QDesktopServices::openUrl(QUrl(BUGS->getReporterUserAndPasswordHelpUrl())); -} - -void BugDialog::logIn() -{ - if (!user.isNull()) - { - // Log out - user = QString(); - updateState(); - BUGS->clearBugReportCredentials(); - return; - } - - BugReportLoginDialog dialog(this); - if (dialog.exec() != QDialog::Accepted) - return; - - if (!dialog.isValid()) - return; - - BUGS->useBugReportCredentials(dialog.getLogin(), dialog.getPassword()); - user = dialog.getLogin(); - updateState(); -} - -void BugDialog::accept() -{ - CFG_CORE.Internal.BugReportRecentError.set(false); - CFG_CORE.Internal.BugReportRecentTitle.set(ui->shortDescriptionEdit->text()); - CFG_CORE.Internal.BugReportRecentContents.set(ui->longDescriptionEdit->toPlainText()); - - if (bugMode) - { - if (user.isNull()) - { - BUGS->reportBug(ui->emailEdit->text(), ui->shortDescriptionEdit->text(), ui->longDescriptionEdit->toPlainText(), ui->versionEdit->text(), - ui->osEdit->text(), ui->pluginsEdit->text(), BugDialog::finishedBugReport); - } - else - { - BUGS->reportBug(ui->shortDescriptionEdit->text(), ui->longDescriptionEdit->toPlainText(), ui->versionEdit->text(), ui->osEdit->text(), ui->pluginsEdit->text(), - BugDialog::finishedFeatureRequest); - } - } - else - { - if (user.isNull()) - { - BUGS->requestFeature(ui->emailEdit->text(), ui->shortDescriptionEdit->text(), ui->longDescriptionEdit->toPlainText(), BugDialog::finishedFeatureRequest); - } - else - { - BUGS->requestFeature(ui->shortDescriptionEdit->text(), ui->longDescriptionEdit->toPlainText(), BugDialog::finishedFeatureRequest); - } - } - QDialog::accept(); -} diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.h deleted file mode 100644 index bf60104..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef BUGDIALOG_H -#define BUGDIALOG_H - -#include "guiSQLiteStudio_global.h" -#include <QDialog> - -namespace Ui { - class BugDialog; -} - -class GUI_API_EXPORT BugDialog : public QDialog -{ - Q_OBJECT - - public: - explicit BugDialog(QWidget *parent = 0); - ~BugDialog(); - - void setFeatureRequestMode(bool feature); - - private: - void init(); - - static QString getMessageAboutReportHistory(); - static void finishedBugReport(bool success, const QString& errorMsg); - static void finishedFeatureRequest(bool success, const QString& errorMsg); - - Ui::BugDialog *ui = nullptr; - bool bugMode = true; - QString user; - - private slots: - void updateState(); - void validate(); - void help(); - void logIn(); - - public slots: - void accept(); -}; - -#endif // BUGDIALOG_H diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.ui deleted file mode 100644 index 3871436..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugdialog.ui +++ /dev/null @@ -1,208 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>BugDialog</class> - <widget class="QDialog" name="BugDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>516</width> - <height>421</height> - </rect> - </property> - <property name="windowTitle"> - <string>Bugs and ideas</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QGroupBox" name="reporterGroup"> - <property name="title"> - <string>Reporter</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLabel" name="currentLoginLabel"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../icons.qrc">:/icons/img/user_unknown.png</pixmap> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="emailEdit"> - <property name="placeholderText"> - <string>E-mail address</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="loginButton"> - <property name="text"> - <string>Log in</string> - </property> - <property name="icon"> - <iconset resource="../icons.qrc"> - <normaloff>:/icons/img/user.png</normaloff>:/icons/img/user.png</iconset> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="helpButton"> - <property name="text"> - <string notr="true">...</string> - </property> - <property name="icon"> - <iconset resource="../icons.qrc"> - <normaloff>:/icons/img/help.png</normaloff>:/icons/img/help.png</iconset> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="shortDescriptionGroup"> - <property name="title"> - <string>Short description</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QLineEdit" name="shortDescriptionEdit"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="longDescriptionGroup"> - <property name="title"> - <string>Detailed description</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QPlainTextEdit" name="longDescriptionEdit"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="moreDetailsGroup"> - <property name="title"> - <string>Show more details</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="QScrollArea" name="scrollArea"> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>462</width> - <height>209</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <item> - <widget class="QGroupBox" name="versionGroup"> - <property name="title"> - <string>SQLiteStudio version</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> - <widget class="QLineEdit" name="versionEdit"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="osGroup"> - <property name="title"> - <string>Operating system</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QLineEdit" name="osEdit"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="pluginsGroup"> - <property name="title"> - <string>Loaded plugins</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item> - <widget class="QLineEdit" name="pluginsEdit"/> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources> - <include location="../icons.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>BugDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>BugDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp deleted file mode 100644 index 19727fe..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "bugreportlogindialog.h" -#include "ui_bugreportlogindialog.h" -#include "uiutils.h" -#include "services/bugreporter.h" -#include "iconmanager.h" -#include "common/widgetcover.h" -#include <QPushButton> - -BugReportLoginDialog::BugReportLoginDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::BugReportLoginDialog) -{ - init(); -} - -BugReportLoginDialog::~BugReportLoginDialog() -{ - delete ui; -} - -bool BugReportLoginDialog::isValid() const -{ - return validCredentials; -} - -QString BugReportLoginDialog::getLogin() const -{ - return ui->loginEdit->text(); -} - -QString BugReportLoginDialog::getPassword() const -{ - return ui->passwordEdit->text(); -} - -void BugReportLoginDialog::init() -{ - ui->setupUi(this); - connect(ui->loginEdit, SIGNAL(textChanged(QString)), this, SLOT(credentialsChanged())); - connect(ui->passwordEdit, SIGNAL(textChanged(QString)), this, SLOT(credentialsChanged())); - connect(ui->validationButton, SIGNAL(clicked()), this, SLOT(remoteValidation())); - connect(BUGS, SIGNAL(credentialsValidationResult(bool,QString)), this, SLOT(remoteValidationResult(bool,QString))); - - widgetCover = new WidgetCover(this); - widgetCover->initWithInterruptContainer(tr("Abort")); - connect(widgetCover, SIGNAL(cancelClicked()), this, SLOT(abortRemoteValidation())); - - validate(); -} - -void BugReportLoginDialog::credentialsChanged() -{ - validCredentials = false; - validate(); -} - -void BugReportLoginDialog::validate() -{ - QString login = ui->loginEdit->text(); - QString pass = ui->passwordEdit->text(); - - bool loginOk = login.size() >= 2; - bool passOk = pass.size() >= 5; - - setValidState(ui->loginEdit, loginOk, tr("A login must be at least 2 characters long.")); - setValidState(ui->passwordEdit, passOk, tr("A password must be at least 5 characters long.")); - - bool credentialsOk = loginOk && passOk; - ui->validationButton->setEnabled(credentialsOk); - ui->validationLabel->setEnabled(credentialsOk); - - bool valid = credentialsOk && validCredentials; - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(valid); -} - -void BugReportLoginDialog::abortRemoteValidation() -{ - BUGS->abortCredentialsValidation(); -} - -void BugReportLoginDialog::remoteValidation() -{ - widgetCover->show(); - BUGS->validateBugReportCredentials(ui->loginEdit->text(), ui->passwordEdit->text()); -} - -void BugReportLoginDialog::remoteValidationResult(bool success, const QString& errorMessage) -{ - validCredentials = success; - ui->validationButton->setIcon(success ? ICONS.TEST_CONN_OK : ICONS.TEST_CONN_ERROR); - ui->validationLabel->setText(success ? tr("Valid") : errorMessage); - validate(); - widgetCover->hide(); -} diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.h deleted file mode 100644 index 131ba3d..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef BUGREPORTLOGINDIALOG_H -#define BUGREPORTLOGINDIALOG_H - -#include "guiSQLiteStudio_global.h" -#include <QDialog> - -namespace Ui { - class BugReportLoginDialog; -} - -class WidgetCover; - -class GUI_API_EXPORT BugReportLoginDialog : public QDialog -{ - Q_OBJECT - - public: - explicit BugReportLoginDialog(QWidget *parent = 0); - ~BugReportLoginDialog(); - - bool isValid() const; - QString getLogin() const; - QString getPassword() const; - - private: - void init(); - - Ui::BugReportLoginDialog *ui = nullptr; - bool validCredentials = false; - WidgetCover* widgetCover = nullptr; - - private slots: - void credentialsChanged(); - void validate(); - void abortRemoteValidation(); - void remoteValidation(); - void remoteValidationResult(bool success, const QString& errorMessage); -}; - -#endif // BUGREPORTLOGINDIALOG_H diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp index 14cb06b..8bf1698 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp @@ -37,7 +37,7 @@ void ColumnDialog::init() ui->precision->setStrict(true, true); ui->typeCombo->addItem(""); - foreach (DataType::Enum type, DataType::getAllTypes()) + for (DataType::Enum type : DataType::getAllTypes()) ui->typeCombo->addItem(DataType::toString(type)); connect(ui->typeCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(updateDataType())); @@ -149,6 +149,7 @@ void ColumnDialog::addConstraint(ConstraintDialog::Constraint mode) constraintsModel->appendConstraint(constr); ui->constraintsView->resizeColumnToContents(0); ui->constraintsView->resizeColumnToContents(1); + updateTypeForAutoIncr(); } void ColumnDialog::setupConstraintCheckBoxes() @@ -218,6 +219,7 @@ void ColumnDialog::editConstraint(SqliteCreateTable::Column::Constraint* constra ui->constraintsView->resizeColumnToContents(0); ui->constraintsView->resizeColumnToContents(1); updateValidations(); + updateTypeForAutoIncr(); } void ColumnDialog::delConstraint(const QModelIndex& idx) @@ -384,6 +386,8 @@ void ColumnDialog::updateTypeValidations() { QString scaleErrorMsg = tr("Scale is not allowed for INTEGER PRIMARY KEY columns."); QString precisionErrorMsg = tr("Precision cannot be defined without the scale."); + QString typeErrorMsg = tr("Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY."); + QString integerEnforcedMsg = tr("INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY."); QVariant scale = ui->scale->getValue(); QVariant precision = ui->precision->getValue(); @@ -393,6 +397,7 @@ void ColumnDialog::updateTypeValidations() bool precisionOk = !(precisionDefined && !scaleDefined); bool scaleOk = true; + bool typeOk = true; bool hasPk = column->getConstraint(SqliteCreateTable::Column::Constraint::PRIMARY_KEY) != nullptr; bool isInteger = ui->typeCombo->currentText().toUpper() == "INTEGER"; @@ -408,16 +413,48 @@ void ColumnDialog::updateTypeValidations() } } + if (!isInteger && hasAutoIncr()) + typeOk = false; + setValidState(ui->scale, scaleOk, scaleErrorMsg); setValidState(ui->precision, precisionOk, precisionErrorMsg); + setValidState(ui->typeCombo, typeOk, typeErrorMsg); + + if (typeOk && integerTypeEnforced) + setValidStateTooltip(ui->typeCombo, integerEnforcedMsg); - if (!scaleOk || !precisionOk) + if (!scaleOk || !precisionOk || !typeOk) { QPushButton* btn = ui->buttonBox->button(QDialogButtonBox::Ok); btn->setEnabled(false); } } +void ColumnDialog::updateTypeForAutoIncr() +{ + bool hasAuto = hasAutoIncr(); + if (hasAuto && ui->typeCombo->currentText().toUpper() != "INTEGER") + { + ui->typeCombo->setCurrentText("INTEGER"); + integerTypeEnforced = true; + } + else if (!hasAuto) + integerTypeEnforced = false; + + updateTypeValidations(); +} + +bool ColumnDialog::hasAutoIncr() const +{ + for (SqliteCreateTable::Column::Constraint* constr : column->getConstraints(SqliteCreateTable::Column::Constraint::PRIMARY_KEY)) + { + if (constr->autoincrKw) + return true; + } + + return false; +} + void ColumnDialog::moveConstraintUp() { QModelIndex idx = ui->constraintsView->currentIndex(); @@ -509,6 +546,7 @@ void ColumnDialog::configureDefault() void ColumnDialog::pkToggled(bool enabled) { constraintToggled(SqliteCreateTable::Column::Constraint::PRIMARY_KEY, enabled); + updateTypeForAutoIncr(); } void ColumnDialog::fkToggled(bool enabled) @@ -630,6 +668,7 @@ void ColumnDialog::updateDataType() if (!column) return; + integerTypeEnforced = false; QString typeTxt = ui->typeCombo->currentText(); QString scaleTxt = ui->scale->getValue().toString(); QString precisionTxt = ui->precision->getValue().toString(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h index 596441c..47615e8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h @@ -68,12 +68,15 @@ class GUI_API_EXPORT ColumnDialog : public QDialog, public ExtActionContainer QToolButton* getToolButtonForConstraint(SqliteCreateTable::Column::Constraint* constraint); bool isUnofficialSqlite2Constraint(SqliteCreateTable::Column::Constraint* constraint); void updateTypeValidations(); + void updateTypeForAutoIncr(); + bool hasAutoIncr() const; Ui::ColumnDialog *ui = nullptr; SqliteCreateTable::ColumnPtr column; ColumnDialogConstraintsModel* constraintsModel = nullptr; QCheckBox* modeCheckBox = nullptr; Db* db = nullptr; + bool integerTypeEnforced = false; private slots: void updateConstraintsToolbarState(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp index 85ae12d..63af58a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp @@ -63,7 +63,7 @@ ConfigDialog::~ConfigDialog() // Notify plugins about dialog being closed
UiConfiguredPlugin* cfgPlugin = nullptr;
- foreach (Plugin* plugin, PLUGINS->getLoadedPlugins())
+ for (Plugin* plugin : PLUGINS->getLoadedPlugins())
{
cfgPlugin = dynamic_cast<UiConfiguredPlugin*>(plugin);
if (!cfgPlugin)
@@ -133,7 +133,7 @@ QString ConfigDialog::getFilterString(QTreeWidget *widget) {
QList<QTreeWidgetItem*> items = widget->findItems("*", Qt::MatchWildcard|Qt::MatchRecursive);
QStringList strList;
- foreach (QTreeWidgetItem* item, items)
+ for (QTreeWidgetItem* item : items)
for (int i = 0; i < widget->columnCount(); i++)
strList << item->text(i) + " " + item->toolTip(0);
@@ -144,7 +144,7 @@ QString ConfigDialog::getFilterString(QListWidget *widget) {
QList<QListWidgetItem*> items = widget->findItems("*", Qt::MatchWildcard|Qt::MatchRecursive);
QStringList strList;
- foreach (QListWidgetItem* item, items)
+ for (QListWidgetItem* item : items)
strList << item->text() + " " + item->toolTip();
return strList.join(" ");
@@ -154,7 +154,7 @@ QString ConfigDialog::getFilterString(QTableWidget *widget) {
QList<QTableWidgetItem*> items = widget->findItems("*", Qt::MatchWildcard|Qt::MatchRecursive);
QStringList strList;
- foreach (QTableWidgetItem* item, items)
+ for (QTableWidgetItem* item : items)
strList << item->text() + " " + item->toolTip();
return strList.join(" ");
@@ -299,7 +299,7 @@ void ConfigDialog::applyFilter(const QString &filter) QColor disabledColor = ui->categoriesTree->palette().color(QPalette::Disabled, QPalette::WindowText);
if (filter.isEmpty())
{
- foreach (QTreeWidgetItem* item, getAllCategoryItems())
+ for (QTreeWidgetItem* item : getAllCategoryItems())
item->setForeground(0, normalColor);
return;
@@ -307,7 +307,7 @@ void ConfigDialog::applyFilter(const QString &filter) QList<QWidget*> widgets = ui->stackedWidget->findChildren<QWidget*>();
QList<QWidget*> matchedWidgets;
- foreach (QWidget* widget, widgets)
+ for (QWidget* widget : widgets)
{
if (getFilterString(widget).contains(filter, Qt::CaseInsensitive))
matchedWidgets << widget;
@@ -315,9 +315,9 @@ void ConfigDialog::applyFilter(const QString &filter) QHash<QWidget*, QTreeWidgetItem*> pageToCategoryItem = buildPageToCategoryItemMap();
QSet<QTreeWidgetItem*> matchedCategories;
- foreach (QWidget* page, pageToCategoryItem.keys())
+ for (QWidget* page : pageToCategoryItem.keys())
{
- foreach (QWidget* matched, matchedWidgets)
+ for (QWidget* matched : matchedWidgets)
{
if (page->isAncestorOf(matched))
{
@@ -333,10 +333,10 @@ void ConfigDialog::applyFilter(const QString &filter) }
}
- foreach (QTreeWidgetItem* item, getAllCategoryItems())
+ for (QTreeWidgetItem* item : getAllCategoryItems())
item->setForeground(0, disabledColor);
- foreach (QTreeWidgetItem* item, matchedCategories)
+ for (QTreeWidgetItem* item : matchedCategories)
{
item->setForeground(0, normalColor);
while ((item = item->parent()) != nullptr)
@@ -347,7 +347,7 @@ void ConfigDialog::applyFilter(const QString &filter) QHash<QWidget*, QTreeWidgetItem*> ConfigDialog::buildPageToCategoryItemMap() const
{
QHash<QString,QTreeWidgetItem*> pageNameToCategoryItem;
- foreach (QTreeWidgetItem* item, getAllCategoryItems())
+ for (QTreeWidgetItem* item : getAllCategoryItems())
pageNameToCategoryItem[item->statusTip(0)] = item;
QWidget* page = nullptr;
@@ -486,7 +486,14 @@ void ConfigDialog::addDataTypeEditor(const QString& pluginName) void ConfigDialog::addDataTypeEditor(MultiEditorWidgetPlugin* plugin)
{
MultiEditorWidget* editor = plugin->getInstance();
+ editor->setTabLabel(plugin->getTabLabel());
ui->dataEditorsSelectedTabs->addTab(editor, editor->getTabLabel().replace("&", "&&"));
+
+ connect(editor, &MultiEditorWidget::aboutToBeDeleted, [this, editor]()
+ {
+ int idx = ui->dataEditorsSelectedTabs->indexOf(editor);
+ ui->dataEditorsSelectedTabs->removeTab(idx);
+ });
}
void ConfigDialog::removeDataTypeEditor(QListWidgetItem* item, const QString& pluginName)
@@ -704,7 +711,7 @@ void ConfigDialog::delDataType() void ConfigDialog::dataTypesHelp()
{
- static const QString url = QStringLiteral("http://wiki.sqlitestudio.pl/index.php/User_Manual#Customizing_data_type_editors");
+ static const QString url = QStringLiteral("https://github.com/pawelsalawa/sqlitestudio/wiki/User_Manual#customizing-data-type-editors");
QDesktopServices::openUrl(QUrl(url, QUrl::StrictMode));
}
@@ -1085,7 +1092,7 @@ void ConfigDialog::refreshFormattersPage() void ConfigDialog::applyStyle(QWidget *widget, QStyle *style)
{
widget->setStyle(style);
- foreach (QObject* child, widget->children())
+ for (QObject* child : widget->children())
{
if (!qobject_cast<QWidget*>(child))
continue;
@@ -1184,7 +1191,7 @@ void ConfigDialog::initPlugins() // Recreate
QTreeWidgetItem *typeItem = nullptr;
- foreach (PluginType* pluginType, PLUGINS->getPluginTypes())
+ for (PluginType* pluginType : PLUGINS->getPluginTypes())
{
typeItem = createPluginsTypeItem(pluginType->getConfigUiForm(), pluginType->getTitle());
if (!typeItem)
@@ -1193,7 +1200,7 @@ void ConfigDialog::initPlugins() item->addChild(typeItem);
pluginTypeToItemMap[pluginType] = typeItem;
- foreach (Plugin* plugin, pluginType->getLoadedPlugins())
+ for (Plugin* plugin : pluginType->getLoadedPlugins())
pluginLoaded(plugin, pluginType, true);
}
@@ -1244,7 +1251,7 @@ void ConfigDialog::initPluginsPage() categoryRow = 0;
QList<PluginType*> pluginTypes = PLUGINS->getPluginTypes();
qSort(pluginTypes.begin(), pluginTypes.end(), PluginType::nameLessThan);
- foreach (PluginType* pluginType, pluginTypes)
+ for (PluginType* pluginType : pluginTypes)
{
category = new QTreeWidgetItem({pluginType->getTitle()});
font.setItalic(false);
@@ -1264,7 +1271,7 @@ void ConfigDialog::initPluginsPage() itemRow = 0;
pluginNames = pluginType->getAllPluginNames();
qSort(pluginNames);
- foreach (const QString& pluginName, pluginNames)
+ for (const QString& pluginName : pluginNames)
{
builtIn = PLUGINS->isBuiltIn(pluginName);
title = PLUGINS->getTitle(pluginName);
@@ -1497,7 +1504,7 @@ void ConfigDialog::initShortcuts(CfgCategory *cfgCategory) int itemRow = 0;
QStringList entryNames = cfgCategory->getEntries().keys();
qSort(entryNames);
- foreach (const QString& entryName, entryNames)
+ for (const QString& entryName : entryNames)
{
// Title
title = cfgCategory->getEntries()[entryName]->getTitle();
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui index 6bedd25..fe0b772 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui @@ -229,7 +229,7 @@ </sizepolicy>
</property>
<property name="currentIndex">
- <number>1</number>
+ <number>3</number>
</property>
<widget class="QWidget" name="databaseListPage">
<layout class="QVBoxLayout" name="verticalLayout_36">
@@ -407,8 +407,8 @@ <rect>
<x>0</x>
<y>0</y>
- <width>564</width>
- <height>580</height>
+ <width>577</width>
+ <height>472</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_34">
@@ -418,17 +418,30 @@ <string>Data browsing and editing</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="0">
- <widget class="QLabel" name="initColWidthLimitLabel">
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label_2">
<property name="toolTip">
- <string><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></string>
+ <string><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></string>
</property>
<property name="text">
- <string>Limit initial data column width to (in pixels):</string>
+ <string>Number of memorized table populating configurations</string>
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="2" column="2">
+ <widget class="QSpinBox" name="spinBox">
+ <property name="toolTip">
+ <string><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></string>
+ </property>
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.PopulateHistorySize</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
<widget class="QSpinBox" name="rowsPerPageSpin">
<property name="maximumSize">
<size>
@@ -447,7 +460,7 @@ </property>
</widget>
</item>
- <item row="1" column="1">
+ <item row="1" column="2">
<widget class="QSpinBox" name="initColWidthLimitSpin">
<property name="toolTip">
<string><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></string>
@@ -466,27 +479,37 @@ </property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="tolltipInDataViewCheck">
+ <item row="1" column="0" colspan="2">
+ <widget class="QLabel" name="initColWidthLimitLabel">
<property name="toolTip">
- <string><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></string>
+ <string><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></string>
</property>
<property name="text">
- <string>Show column and row details tooltip in data view</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ShowDataViewTooltips</string>
+ <string>Limit initial data column width to (in pixels):</string>
</property>
</widget>
</item>
- <item row="0" column="0">
+ <item row="0" column="0" colspan="2">
<widget class="QLabel" name="rowsPerPageLabel">
<property name="text">
<string>Number of data rows per page:</string>
</property>
</widget>
</item>
- <item row="3" column="0">
+ <item row="3" column="0" colspan="3">
+ <widget class="QCheckBox" name="tolltipInDataViewCheck">
+ <property name="toolTip">
+ <string><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></string>
+ </property>
+ <property name="text">
+ <string>Show column and row details tooltip in data view</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.ShowDataViewTooltips</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="3">
<widget class="QCheckBox" name="keepNullWhenEmptyCheck">
<property name="toolTip">
<string><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></string>
@@ -499,7 +522,7 @@ </property>
</widget>
</item>
- <item row="4" column="0" colspan="2">
+ <item row="5" column="0" colspan="3">
<widget class="QCheckBox" name="useDefaultForNullCheck">
<property name="toolTip">
<string><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></string>
@@ -837,8 +860,21 @@ </property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="checkBox">
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="bindParamLimitSpin">
+ <property name="toolTip">
+ <string><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></string>
+ </property>
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.BindParamsCacheSize</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="execQueryUnderCursorCheck">
<property name="toolTip">
<string><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></string>
</property>
@@ -850,6 +886,16 @@ </property>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="bindParamLimitLabel">
+ <property name="toolTip">
+ <string><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></string>
+ </property>
+ <property name="text">
+ <string>Number of memorized query parameters</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -1027,8 +1073,8 @@ <rect>
<x>0</x>
<y>0</y>
- <width>447</width>
- <height>307</height>
+ <width>335</width>
+ <height>237</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_31">
@@ -1448,8 +1494,8 @@ <string notr="true"><!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; }
-</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Abcdefgh</span></p></body></html></string>
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Abcdefgh</span></p></body></html></string>
</property>
</widget>
</item>
@@ -1539,8 +1585,8 @@ p, li { white-space: pre-wrap; } <rect>
<x>0</x>
<y>0</y>
- <width>268</width>
- <height>328</height>
+ <width>196</width>
+ <height>263</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@@ -1661,8 +1707,8 @@ p, li { white-space: pre-wrap; } <rect>
<x>0</x>
<y>0</y>
- <width>331</width>
- <height>829</height>
+ <width>247</width>
+ <height>701</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -2237,7 +2283,7 @@ p, li { white-space: pre-wrap; } <tabstop>ddlHistorySizeSpin</tabstop>
<tabstop>dontShowDdlPreview</tabstop>
<tabstop>queryHistorySizeSpin</tabstop>
- <tabstop>checkBox</tabstop>
+ <tabstop>execQueryUnderCursorCheck</tabstop>
<tabstop>expandTablesCheck</tabstop>
<tabstop>activeStyleCombo</tabstop>
<tabstop>previewTabs</tabstop>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp index 781e25e..183f8dd 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp @@ -144,7 +144,7 @@ void DbDialog::updateOptions() setUpdatesEnabled(false); // Remove olds - foreach (QWidget* w, optionWidgets) + for (QWidget* w : optionWidgets) { ui->optionsGrid->removeWidget(w); delete w; @@ -481,7 +481,7 @@ bool DbDialog::validate() if (nameState) { if (nameManuallyEdited) - setValidStateInfo(ui->nameEdit, tr("<p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p>")); + setValidStateInfo(ui->nameEdit, tr("<p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p>")); else setValidState(ui->nameEdit, true); } @@ -560,14 +560,13 @@ void DbDialog::valueForNameGenerationChanged() return; QString generatedName; - if (dbPlugins.count() > 0) - { - DbPlugin* plugin = dbPlugins[ui->typeCombo->currentText()]; + DbPlugin* plugin = dbPlugins.count() > 0 ? dbPlugins[ui->typeCombo->currentText()] : nullptr; + if (plugin) generatedName = DBLIST->generateUniqueDbName(plugin, ui->fileEdit->text()); - } else generatedName = DBLIST->generateUniqueDbName(ui->fileEdit->text()); + ui->nameEdit->setText(generatedName); } diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/ddlpreviewdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/ddlpreviewdialog.cpp index e86f9cd..3af221f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/ddlpreviewdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/ddlpreviewdialog.cpp @@ -28,7 +28,7 @@ void DdlPreviewDialog::setDdl(const QStringList& ddlList) { QStringList fixedList; QString newDdl; - foreach (const QString& ddl, ddlList) + for (const QString& ddl : ddlList) { newDdl = ddl.trimmed(); if (!newDdl.endsWith(";")) diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.cpp new file mode 100644 index 0000000..3ecae39 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.cpp @@ -0,0 +1,76 @@ +#include "execfromfiledialog.h" +#include "ui_execfromfiledialog.h" +#include "common/utils.h" +#include "uiconfig.h" +#include "uiutils.h" +#include <QFileDialog> + +ExecFromFileDialog::ExecFromFileDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::ExecFromFileDialog) +{ + init(); +} + +ExecFromFileDialog::~ExecFromFileDialog() +{ + delete ui; +} + +bool ExecFromFileDialog::ignoreErrors() const +{ + return ui->skipErrorsCheck->isChecked(); +} + +QString ExecFromFileDialog::filePath() const +{ + return ui->fileEdit->text(); +} + +QString ExecFromFileDialog::codec() const +{ + return ui->encodingCombo->currentText(); +} + +void ExecFromFileDialog::init() +{ + ui->setupUi(this); + + connect(ui->fileBrowse, SIGNAL(clicked()), this, SLOT(browseForInputFile())); + connect(ui->fileEdit, SIGNAL(textChanged(const QString&)), this, SLOT(updateState())); + + ui->encodingCombo->addItems(textCodecNames()); + ui->encodingCombo->setCurrentText(defaultCodecName()); +} + +void ExecFromFileDialog::browseForInputFile() +{ + QString dir = getFileDialogInitPath(); + QString filters = tr("SQL scripts (*.sql);;All files (*)"); + QString path = QFileDialog::getOpenFileName(nullptr, tr("Execute SQL file"), dir, filters); + if (path.isNull()) + return; + + setFileDialogInitPathByFile(path); + ui->fileEdit->setText(path); + updateState(); +} + +void ExecFromFileDialog::updateState() +{ + QString path = ui->fileEdit->text(); + if (path.isEmpty()) + { + setValidState(ui->fileEdit, false, tr("Please provide file to be executed.")); + return; + } + + QFileInfo fi(path); + if (!fi.exists() || !fi.isReadable()) + { + setValidState(ui->fileEdit, false, tr("Provided file does not exist or cannot be read.")); + return; + } + + setValidState(ui->fileEdit, true); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.h new file mode 100644 index 0000000..27751d4 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.h @@ -0,0 +1,32 @@ +#ifndef EXECFROMFILEDIALOG_H +#define EXECFROMFILEDIALOG_H + +#include <QDialog> + +namespace Ui { + class ExecFromFileDialog; +} + +class ExecFromFileDialog : public QDialog +{ + Q_OBJECT + + public: + explicit ExecFromFileDialog(QWidget *parent = nullptr); + ~ExecFromFileDialog(); + + bool ignoreErrors() const; + QString filePath() const; + QString codec() const; + + private: + void init(); + + Ui::ExecFromFileDialog *ui; + + private slots: + void browseForInputFile(); + void updateState(); +}; + +#endif // EXECFROMFILEDIALOG_H diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.ui index d1d26e6..6a24e51 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/bugreportlogindialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/execfromfiledialog.ui @@ -1,46 +1,46 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>BugReportLoginDialog</class> - <widget class="QDialog" name="BugReportLoginDialog"> + <class>ExecFromFileDialog</class> + <widget class="QDialog" name="ExecFromFileDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>343</width> - <height>197</height> + <width>400</width> + <height>203</height> </rect> </property> <property name="windowTitle"> - <string>Log in</string> + <string>Execute SQL from file</string> + </property> + <property name="modal"> + <bool>true</bool> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QGroupBox" name="credentialsGroup"> + <widget class="QGroupBox" name="fileGroup"> <property name="title"> - <string>Credentials</string> + <string>Input file</string> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="loginLabel"> - <property name="text"> - <string>Login:</string> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLineEdit" name="fileEdit"> + <property name="placeholderText"> + <string>Path to file</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="loginEdit"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="passwordLabel"> + <item> + <widget class="QToolButton" name="fileBrowse"> + <property name="toolTip"> + <string>Browse for file</string> + </property> <property name="text"> - <string>Password:</string> + <string/> </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="passwordEdit"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> + <property name="icon"> + <iconset resource="../icons.qrc"> + <normaloff>:/icons/img/directory_open.png</normaloff>:/icons/img/directory_open.png</iconset> </property> </widget> </item> @@ -48,32 +48,25 @@ </widget> </item> <item> - <widget class="QGroupBox" name="validationGroup"> + <widget class="QGroupBox" name="optionsGroup"> <property name="title"> - <string>Validation</string> + <string>Options</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QToolButton" name="validationButton"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="encodingLabel"> <property name="text"> - <string>Validate</string> - </property> - <property name="icon"> - <iconset resource="../icons.qrc"> - <normaloff>:/icons/img/test_conn_error.png</normaloff>:/icons/img/test_conn_error.png</iconset> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextBesideIcon</enum> + <string>File encoding</string> </property> </widget> </item> - <item> - <widget class="QLabel" name="validationLabel"> + <item row="0" column="1"> + <widget class="QComboBox" name="encodingCombo"/> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QCheckBox" name="skipErrorsCheck"> <property name="text"> - <string>Validation result message</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <string>Skip failing SQL statements</string> </property> </widget> </item> @@ -99,7 +92,7 @@ <connection> <sender>buttonBox</sender> <signal>accepted()</signal> - <receiver>BugReportLoginDialog</receiver> + <receiver>ExecFromFileDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> @@ -115,7 +108,7 @@ <connection> <sender>buttonBox</sender> <signal>rejected()</signal> - <receiver>BugReportLoginDialog</receiver> + <receiver>ExecFromFileDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp index 91b4087..7b6a4d0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp @@ -23,6 +23,15 @@ #include <QUiLoader> #include <QMimeData> +static const QString EXPORT_DIALOG_CFG_GROUP = "ExportDialog"; +static const QString EXPORT_DIALOG_CFG_CODEC = "codec"; +static const QString EXPORT_DIALOG_CFG_FILE = "outputFileName"; +static const QString EXPORT_DIALOG_CFG_CLIP = "intoClipboard"; +static const QString EXPORT_DIALOG_CFG_DATA = "exportData"; +static const QString EXPORT_DIALOG_CFG_IDX = "exportTableIndexes"; +static const QString EXPORT_DIALOG_CFG_TRIG = "exportTableTriggers"; +static const QString EXPORT_DIALOG_CFG_FORMAT = "format"; + ExportDialog::ExportDialog(QWidget *parent) : QWizard(parent), ui(new Ui::ExportDialog) @@ -362,7 +371,10 @@ void ExportDialog::formatPageDisplayed() formatPageVisited = true; } + readStdConfigForLastPage(); pluginSelected(); + + emit formatPageCompleteChanged(); } ExportPlugin* ExportDialog::getSelectedPlugin() const @@ -443,9 +455,6 @@ void ExportDialog::pluginSelected() updateExportOutputOptions(); updateOptions(); - - if (currentPlugin->getConfig() && !currentPlugin->getConfig()->isPersistable()) - currentPlugin->getConfig()->reset(); } void ExportDialog::updateExportOutputOptions() @@ -470,8 +479,18 @@ void ExportDialog::updateExportOutputOptions() ui->encodingLabel->setVisible(displayCodec); if (displayCodec) { - QString codec = currentPlugin->getDefaultEncoding(); + QString codec = CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_CODEC).toString(); + QString defaultCodec = currentPlugin->getDefaultEncoding(); + if (codec.isNull()) + codec = defaultCodec; + int idx = ui->encodingCombo->findText(codec); + if (idx == -1 && codec != defaultCodec) + { + codec = defaultCodec; + idx = ui->encodingCombo->findText(codec); + } + if (idx > -1) ui->encodingCombo->setCurrentIndex(idx); } @@ -555,6 +574,12 @@ void ExportDialog::accept() doExport(); } +int ExportDialog::exec() +{ + readStdConfigForFirstPage(); + return QDialog::exec(); +} + void ExportDialog::updatePluginOptions(ExportPlugin* plugin, int& optionsRow) { safe_delete(pluginOptionsWidget); @@ -596,6 +621,46 @@ void ExportDialog::updatePluginOptions(ExportPlugin* plugin, int& optionsRow) plugin->validateOptions(); } +void ExportDialog::storeStdConfig(const ExportManager::StandardExportConfig &stdConfig) +{ + CFG->begin(); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_CODEC, stdConfig.codec); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_FILE, stdConfig.outputFileName); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_CLIP, stdConfig.intoClipboard); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_DATA, stdConfig.exportData); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_IDX, stdConfig.exportTableIndexes); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_TRIG, stdConfig.exportTableTriggers); + CFG->set(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_FORMAT, currentPlugin->getFormatName()); + CFG->commit(); +} + +void ExportDialog::readStdConfigForFirstPage() +{ + bool exportData = CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_DATA, true).toBool(); + if (exportMode == ExportManager::DATABASE) + ui->exportDbDataCheck->setChecked(exportData); + else if (exportMode == ExportManager::TABLE) + ui->exportTableDataCheck->setChecked(exportData); + + ui->exportTableIndexesCheck->setChecked(CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_IDX, true).toBool()); + ui->exportTableTriggersCheck->setChecked(CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_TRIG, true).toBool()); +} + +void ExportDialog::readStdConfigForLastPage() +{ + QString format = CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_FORMAT).toString(); + int idx = ui->formatCombo->findText(format); + if (idx > -1) + ui->formatCombo->setCurrentIndex(idx); + + bool useClipboard = CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_CLIP, false).toBool(); + ui->exportFileRadio->setChecked(!useClipboard); + ui->exportClipboardRadio->setChecked(useClipboard); + ui->exportFileEdit->setText(CFG->get(EXPORT_DIALOG_CFG_GROUP, EXPORT_DIALOG_CFG_FILE, QString()).toString()); + + // Codec is read within updateExportOutputOptions() +} + void ExportDialog::updateValidation() { if (!currentPlugin) @@ -610,6 +675,9 @@ void ExportDialog::doExport() widgetCover->show(); ExportManager::StandardExportConfig stdConfig = getExportConfig(); + storeStdConfig(stdConfig); + configMapper->saveFromWidget(pluginOptionsWidget); + QString format = ui->formatCombo->currentText(); switch (exportMode) { @@ -684,6 +752,9 @@ ExportManager::StandardExportConfig ExportDialog::getExportConfig() const else stdConfig.exportData = false; + stdConfig.exportTableIndexes = ui->exportTableIndexesCheck->isChecked(); + stdConfig.exportTableTriggers = ui->exportTableTriggersCheck->isChecked(); + if (ui->encodingCombo->isVisible() && ui->encodingCombo->currentIndex() > -1) stdConfig.codec = ui->encodingCombo->currentText(); else diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h index 0471172..c2f6d7e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h @@ -45,6 +45,9 @@ class GUI_API_EXPORT ExportDialog : public QWizard void formatPageDisplayed(); ExportPlugin* getSelectedPlugin() const; void updatePluginOptions(ExportPlugin* plugin, int& optionsRow); + void storeStdConfig(const ExportManager::StandardExportConfig& stdConfig); + void readStdConfigForFirstPage(); + void readStdConfigForLastPage(); void doExport(); void exportDatabase(const ExportManager::StandardExportConfig& stdConfig, const QString& format); void exportTable(const ExportManager::StandardExportConfig& stdConfig, const QString& format); @@ -96,6 +99,7 @@ class GUI_API_EXPORT ExportDialog : public QWizard public slots: void accept(); + int exec(); signals: void formatPageCompleteChanged(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.cpp new file mode 100644 index 0000000..916c8af --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.cpp @@ -0,0 +1,35 @@ +#include "fileexecerrorsdialog.h" +#include "ui_fileexecerrorsdialog.h" + +FileExecErrorsDialog::FileExecErrorsDialog(const QList<QPair<QString, QString>>& errors, bool rolledBack, QWidget *parent) : + QDialog(parent), + ui(new Ui::FileExecErrorsDialog) +{ + ui->setupUi(this); + + ui->committedLabel->setVisible(!rolledBack); + ui->rolledBackLabel->setVisible(rolledBack); + + ui->tableWidget->setRowCount(errors.size()); + int row = 0; + for (const QPair<QString, QString>& err : errors) + { + ui->tableWidget->setItem(row, 0, item(err.first)); + ui->tableWidget->setItem(row, 1, item(err.second)); + row++; + } + ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); + ui->tableWidget->resizeRowsToContents(); +} + +FileExecErrorsDialog::~FileExecErrorsDialog() +{ + delete ui; +} + +QTableWidgetItem* FileExecErrorsDialog::item(const QString& text) +{ + QTableWidgetItem* item = new QTableWidgetItem(text); + item->setFlags(Qt::ItemIsEnabled); + return item; +} diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.h new file mode 100644 index 0000000..2b474ce --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.h @@ -0,0 +1,26 @@ +#ifndef FILEEXECERRORSDIALOG_H +#define FILEEXECERRORSDIALOG_H + +#include <QDialog> + +namespace Ui { + class FileExecErrorsDialog; +} + +class QTableWidgetItem; + +class FileExecErrorsDialog : public QDialog +{ + Q_OBJECT + + public: + explicit FileExecErrorsDialog(const QList<QPair<QString, QString> >& errors, bool rolledBack, QWidget *parent = nullptr); + ~FileExecErrorsDialog(); + + private: + QTableWidgetItem* item(const QString& text); + + Ui::FileExecErrorsDialog *ui; +}; + +#endif // FILEEXECERRORSDIALOG_H diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.ui new file mode 100644 index 0000000..4ad6d6c --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/fileexecerrorsdialog.ui @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>FileExecErrorsDialog</class> + <widget class="QDialog" name="FileExecErrorsDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>720</width> + <height>436</height> + </rect> + </property> + <property name="windowTitle"> + <string>Execution errors</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="topLabel"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Following errors were encountered during execution of SQL statements from the file:</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QTableWidget" name="tableWidget"> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="dragDropOverwriteMode"> + <bool>false</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::NoSelection</enum> + </property> + <attribute name="horizontalHeaderMinimumSectionSize"> + <number>100</number> + </attribute> + <column> + <property name="text"> + <string>SQL</string> + </property> + </column> + <column> + <property name="text"> + <string>Error</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QLabel" name="committedLabel"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Statements that were executed successfully were commited.</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="rolledBackLabel"> + <property name="font"> + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Statements that were executed successfully were rolled back.</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>FileExecErrorsDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>FileExecErrorsDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp index 2f52396..ddb443d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp @@ -6,7 +6,6 @@ #include "common/widgetcover.h" #include "services/dbmanager.h" #include "services/pluginmanager.h" -#include "services/importmanager.h" #include "sqlitestudio.h" #include "plugins/importplugin.h" #include "ui_importdialog.h" @@ -19,6 +18,12 @@ #include <QFileDialog> #include <QKeyEvent> +static const QString IMPORT_DIALOG_CFG_GROUP = "ImportDialog"; +static const QString IMPORT_DIALOG_CFG_CODEC = "codec"; +static const QString IMPORT_DIALOG_CFG_FILE = "inputFileName"; +static const QString IMPORT_DIALOG_CFG_IGNORE_ERR = "ignoreErrors"; +static const QString IMPORT_DIALOG_CFG_FORMAT = "format"; + ImportDialog::ImportDialog(QWidget *parent) : QWizard(parent), ui(new Ui::ImportDialog) @@ -55,6 +60,43 @@ bool ImportDialog::isPluginConfigValid() const return pluginConfigOk.size() == 0; } +void ImportDialog::storeStdConfig(ImportManager::StandardImportConfig &stdConfig) +{ + CFG->begin(); + CFG->set(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_CODEC, stdConfig.codec); + CFG->set(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_FILE, stdConfig.inputFileName); + CFG->set(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_IGNORE_ERR, stdConfig.ignoreErrors); + CFG->set(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_FORMAT, currentPlugin->getDataSourceTypeName()); + CFG->commit(); +} + +void ImportDialog::readStdConfig() +{ + QString format = CFG->get(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_FORMAT).toString(); + int idx = ui->dsTypeCombo->findText(format); + if (idx > -1) + ui->dsTypeCombo->setCurrentIndex(idx); + + ui->inputFileEdit->setText(CFG->get(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_FILE, QString()).toString()); + ui->ignoreErrorsCheck->setChecked(CFG->get(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_IGNORE_ERR, false).toBool()); + + // Encoding + QString codec = CFG->get(IMPORT_DIALOG_CFG_GROUP, IMPORT_DIALOG_CFG_CODEC).toString(); + QString defaultCodec = defaultCodecName(); + if (codec.isNull()) + codec = defaultCodec; + + int codecIdx = ui->codecCombo->findText(codec); + if (codecIdx == -1 && codec != defaultCodec) + { + codec = defaultCodec; + codecIdx = ui->codecCombo->findText(codec); + } + + if (codecIdx > -1) + ui->codecCombo->setCurrentIndex(codecIdx); +} + void ImportDialog::init() { ui->setupUi(this); @@ -303,7 +345,10 @@ void ImportDialog::updateValidation() void ImportDialog::pageChanged() { if (currentPage() == ui->dsPage) + { + readStdConfig(); updateValidation(); + } } void ImportDialog::browseForInputFile() @@ -351,6 +396,9 @@ void ImportDialog::accept() stdConfig.ignoreErrors = ui->ignoreErrorsCheck->isChecked(); + storeStdConfig(stdConfig); + configMapper->saveFromWidget(pluginOptionsWidget); + Db* db = DBLIST->getByName(ui->dbNameCombo->currentText());; if (!db) { diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.h index b4c2883..48402ae 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.h @@ -2,6 +2,7 @@ #define IMPORTDIALOG_H #include "guiSQLiteStudio_global.h" +#include "services/importmanager.h" #include <QWizard> namespace Ui { @@ -39,6 +40,8 @@ class GUI_API_EXPORT ImportDialog : public QWizard void updateStandardOptions(); void updatePluginOptions(int& rows); bool isPluginConfigValid() const; + void storeStdConfig(ImportManager::StandardImportConfig& stdConfig); + void readStdConfig(); Ui::ImportDialog *ui = nullptr; DbListModel* dbListModel = nullptr; diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp index c5da317..e3e7701 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp @@ -106,13 +106,13 @@ void IndexDialog::init() connect(ui->partialIndexEdit, SIGNAL(textChanged()), this, SLOT(updateValidation())); ui->partialIndexEdit->setVirtualSqlExpression("SELECT %1"); updatePartialConditionState(); - ui->columnsTable->setColumnHidden(1, false); + ui->columnsTable->setColumnHidden(2, false); } else { ui->partialIndexCheck->setVisible(false); ui->partialIndexEdit->setVisible(false); - ui->columnsTable->setColumnHidden(1, true); + ui->columnsTable->setColumnHidden(2, true); ui->addExprColumnButton->setVisible(false); ui->editExprColumnButton->setVisible(false); ui->delExprColumnButton->setVisible(false); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui index 36066c5..5b07d45 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui @@ -72,12 +72,12 @@ </column> <column> <property name="text"> - <string>Collation</string> + <string>Sort</string> </property> </column> <column> <property name="text"> - <string>Sort</string> + <string>Collation</string> </property> </column> </widget> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.cpp index d0976a3..020cfef 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.cpp @@ -22,24 +22,15 @@ NewVersionDialog::~NewVersionDialog() void NewVersionDialog::setUpdates(const QList<UpdateManager::UpdateEntry>& updates) { QTableWidgetItem* item = nullptr; - QString currVersion; int row = 0; ui->updateList->setRowCount(updates.size()); for (const UpdateManager::UpdateEntry& entry : updates) { - if (entry.compontent == "SQLiteStudio") - currVersion = SQLITESTUDIO->getVersionString(); - else - currVersion = PLUGINS->getPrintableVersion(entry.compontent); - item = new QTableWidgetItem(entry.compontent); ui->updateList->setItem(row, 0, item); - item = new QTableWidgetItem(currVersion); - ui->updateList->setItem(row, 1, item); - item = new QTableWidgetItem(entry.version); - ui->updateList->setItem(row, 2, item); + ui->updateList->setItem(row, 1, item); row++; } diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.ui index 6f50e7f..d5468b3 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/newversiondialog.ui @@ -72,11 +72,6 @@ </column> <column> <property name="text"> - <string>Current version</string> - </property> - </column> - <column> - <property name="text"> <string>Update version</string> </property> </column> @@ -111,7 +106,7 @@ </size> </property> <property name="description"> - <string>The update will be automatically downloaded and installed. This will also restart application at the end.</string> + <string>This application will be closed and the update installer will start to download and install all the updates.</string> </property> </widget> </item> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.cpp index 7861ff0..7f4ec20 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.cpp @@ -48,7 +48,10 @@ void PopulateDialog::init() }); for (PopulatePlugin* plugin : plugins) + { + pluginByName[plugin->getName()] = plugin; pluginTitles << plugin->getTitle(); + } widgetCover = new WidgetCover(this); widgetCover->initWithInterruptContainer(tr("Abort")); @@ -94,12 +97,29 @@ void PopulateDialog::deleteEngines(const QList<PopulateEngine*>& engines) delete engine; } -void PopulateDialog::rebuildEngines() +void PopulateDialog::rebuildEngines(const QHash<QString, QPair<QString, QVariant>>& columnConfig) { int row = 0; + QVariant config; + QString pluginName; for (const ColumnEntry& entry : columnEntries) { - pluginSelected(entry.combo, entry.combo->currentIndex()); + pluginName.clear(); + if (columnConfig.contains(entry.column)) + pluginName = columnConfig[entry.column].first; + + if (pluginName.isNull()) + { + pluginName = plugins[entry.combo->currentIndex()]->getName(); + config = CFG->getPopulateHistory(pluginName); + } + else + { + entry.combo->setCurrentIndex(plugins.indexOf(pluginByName[pluginName])); + config = columnConfig[entry.column].second; + } + + pluginSelected(entry.combo, entry.combo->currentIndex(), config); updateColumnState(row++, false); } } @@ -135,6 +155,8 @@ void PopulateDialog::refreshColumns() return; } + QString table = ui->tableCombo->currentText(); + buttonMapper = new QSignalMapper(this); connect(buttonMapper, SIGNAL(mapped(int)), this, SLOT(configurePlugin(int))); @@ -142,14 +164,23 @@ void PopulateDialog::refreshColumns() connect(checkMapper, SIGNAL(mapped(int)), this, SLOT(updateColumnState(int))); SchemaResolver resolver(db); - QStringList columns = resolver.getTableColumns(ui->tableCombo->currentText()); + QStringList columns = resolver.getTableColumns(table); QCheckBox* check = nullptr; QComboBox* combo = nullptr; QToolButton* btn = nullptr; + + int rows = -1; + QHash<QString, QPair<QString, QVariant>> columnConfig = CFG->getPopulateHistory(db->getName(), table, rows); + if (rows > -1) + ui->rowsSpin->setValue(rows); + int row = 0; for (const QString& column : columns) { check = new QCheckBox(column); + if (columnConfig.contains(column)) + check->setChecked(true); + connect(check, SIGNAL(toggled(bool)), checkMapper, SLOT(map())); checkMapper->setMapping(check, row); @@ -165,11 +196,11 @@ void PopulateDialog::refreshColumns() ui->columnsLayout->addWidget(check, row, 0); ui->columnsLayout->addWidget(combo, row, 1); ui->columnsLayout->addWidget(btn, row, 2); - columnEntries << ColumnEntry(check, combo, btn); + columnEntries << ColumnEntry(column, check, combo, btn); row++; } - rebuildEngines(); + rebuildEngines(columnConfig); QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); ui->columnsLayout->addItem(spacer, row, 0, 1, 3); @@ -179,11 +210,15 @@ void PopulateDialog::refreshColumns() void PopulateDialog::pluginSelected(int index) { + QVariant config; + if (index >= 0 && index < plugins.size()) + config = CFG->getPopulateHistory(plugins[index]->getName()); + QComboBox* cb = dynamic_cast<QComboBox*>(sender()); - pluginSelected(cb, index); + pluginSelected(cb, index, config); } -void PopulateDialog::pluginSelected(QComboBox* combo, int index) +void PopulateDialog::pluginSelected(QComboBox* combo, int index, const QVariant& config) { if (!combo) return; @@ -209,7 +244,11 @@ void PopulateDialog::pluginSelected(QComboBox* combo, int index) if (index < 0 || index >= plugins.size()) return; - entry->engine = plugins[index]->createEngine(); + entry->plugin = plugins[index]; + entry->engine = entry->plugin->createEngine(); + if (config.isValid()) + entry->engine->getConfig()->setValuesFromQVariant(config); + updateColumnState(columnIndex); } @@ -230,7 +269,8 @@ void PopulateDialog::configurePlugin(int index) engine->getConfig()->savepoint(); - PopulateConfigDialog dialog(engine, columnEntries[index].check->text(), columnEntries[index].combo->currentText(), this); + QString colName = columnEntries[index].column; + PopulateConfigDialog dialog(engine, colName, columnEntries[index].combo->currentText(), this); if (dialog.exec() != QDialog::Accepted) engine->getConfig()->restore(); @@ -304,6 +344,7 @@ void PopulateDialog::accept() if (!db) return; + QHash<QString, QPair<QString, QVariant>> configForHistory; QHash<QString,PopulateEngine*> engines; for (ColumnEntry& entry : columnEntries) { @@ -313,16 +354,19 @@ void PopulateDialog::accept() if (!entry.engine) return; - engines[entry.check->text()] = entry.engine; -// entry.engine = nullptr; // to avoid deleting it in the entry's destructor - worker will delete it after it's done + engines[entry.column] = entry.engine; + // entry.engine = nullptr; // to avoid deleting it in the entry's destructor - worker will delete it after it's done + + configForHistory[entry.column] = QPair<QString, QVariant>(entry.plugin->getName(), entry.engine->getConfig()->toQVariant()); } QString table = ui->tableCombo->currentText(); - qint64 rows = ui->rowsSpin->value(); + int rows = ui->rowsSpin->value(); started = true; widgetCover->displayProgress(rows, "%v / %m"); widgetCover->show(); + CFG->addPopulateHistory(db->getName(), table, rows, configForHistory); POPULATE_MANAGER->populate(db, table, engines, rows); } @@ -334,8 +378,8 @@ void PopulateDialog::reject() QDialog::reject(); } -PopulateDialog::ColumnEntry::ColumnEntry(QCheckBox* check, QComboBox* combo, QToolButton* button) : - check(check), combo(combo), button(button) +PopulateDialog::ColumnEntry::ColumnEntry(const QString& column, QCheckBox* check, QComboBox* combo, QToolButton* button) : + column(column), check(check), combo(combo), button(button) { } diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.h index 948d6ce..404b9e2 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/populatedialog.h @@ -3,6 +3,7 @@ #include "guiSQLiteStudio_global.h" #include <QDialog> +#include <QVariant> namespace Ui { class PopulateDialog; @@ -32,19 +33,21 @@ class GUI_API_EXPORT PopulateDialog : public QDialog private: struct GUI_API_EXPORT ColumnEntry { - ColumnEntry(QCheckBox* check, QComboBox* combo, QToolButton* button); + ColumnEntry(const QString& column, QCheckBox* check, QComboBox* combo, QToolButton* button); ~ColumnEntry(); + QString column; QCheckBox* check = nullptr; QComboBox* combo = nullptr; QToolButton* button = nullptr; PopulateEngine* engine = nullptr; + PopulatePlugin* plugin = nullptr; }; void init(); PopulateEngine* getEngine(int selectedPluginIndex); void deleteEngines(const QList<PopulateEngine*>& engines); - void rebuildEngines(); + void rebuildEngines(const QHash<QString, QPair<QString, QVariant> >& columnConfig); Ui::PopulateDialog *ui = nullptr; QGridLayout* columnsGrid = nullptr; @@ -53,6 +56,7 @@ class GUI_API_EXPORT PopulateDialog : public QDialog Db* db = nullptr; QStringList pluginTitles; QList<PopulatePlugin*> plugins; + QHash<QString,PopulatePlugin*> pluginByName; QList<ColumnEntry> columnEntries; QSignalMapper* checkMapper = nullptr; QSignalMapper* buttonMapper = nullptr; @@ -64,7 +68,7 @@ class GUI_API_EXPORT PopulateDialog : public QDialog void refreshTables(); void refreshColumns(); void pluginSelected(int index); - void pluginSelected(QComboBox* combo, int index); + void pluginSelected(QComboBox* combo, int index, const QVariant& config); void configurePlugin(int index); void updateColumnState(int index, bool updateGlobalState = true); void updateState(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp index 3254f26..255694c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp @@ -214,7 +214,7 @@ void TriggerDialog::readTrigger() if (createTrigger->queries.size() > 0) { QStringList sqls; - foreach (SqliteQuery* query, createTrigger->queries) + for (SqliteQuery* query : createTrigger->queries) sqls << query->detokenize(); ui->codeEdit->setPlainText(sqls.join(";\n")+";"); @@ -307,7 +307,7 @@ void TriggerDialog::rebuildTrigger() if (actionType == SqliteCreateTrigger::Event::UPDATE_OF) { QStringList colNames; - foreach (const QString& colName, selectedColumns) + for (const QString& colName : selectedColumns) colNames << wrapObjIfNeeded(colName, dialect); columns = " "+colNames.join(", "); @@ -363,7 +363,7 @@ void TriggerDialog::showColumnsDialog() QPoint topRight = ui->actionColumns->mapToGlobal(ui->actionColumns->rect().topRight()); TriggerColumnsDialog dialog(this, topRight.x(), topRight.y()); - foreach (const QString& colName, targetColumns) + for (const QString& colName : targetColumns) dialog.addColumn(colName, selectedColumns.contains(colName, Qt::CaseInsensitive)); if (dialog.exec() != QDialog::Accepted) diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.ui index 723f903..d25b2c0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.ui @@ -110,6 +110,9 @@ <property name="toolTip"> <string>Trigger statements to be executed.</string> </property> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> </widget> </item> <item row="7" column="0" colspan="3"> @@ -123,6 +126,9 @@ <property name="toolTip"> <string><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></string> </property> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> </widget> </item> </layout> diff --git a/SQLiteStudio3/guiSQLiteStudio/formmanager.cpp b/SQLiteStudio3/guiSQLiteStudio/formmanager.cpp index 0ee7d43..735fb5d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/formmanager.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/formmanager.cpp @@ -123,7 +123,7 @@ void FormManager::load() formDirs += STRINGIFY(FORMS_DIR); #endif - foreach (QString dirPath, formDirs) + for (QString dirPath : formDirs) loadRecurently(dirPath, ""); } @@ -134,7 +134,7 @@ void FormManager::loadRecurently(const QString& path, const QString& prefix) QDir dir(path); QString fullPath; QString widgetName; - foreach (QFileInfo entry, dir.entryInfoList(fileExtensions, QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot|QDir::Readable)) + for (const QFileInfo& entry : dir.entryInfoList(fileExtensions, QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot|QDir::Readable)) { fullPath = entry.absoluteFilePath(); if (entry.isDir()) diff --git a/SQLiteStudio3/guiSQLiteStudio/formview.cpp b/SQLiteStudio3/guiSQLiteStudio/formview.cpp index 0ebb9aa..575c2de 100644 --- a/SQLiteStudio3/guiSQLiteStudio/formview.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/formview.cpp @@ -85,7 +85,7 @@ void FormView::reloadInternal() { // Cleanup dataMapper->clearMapping(); - foreach (QWidget* widget, widgets) + for (QWidget* widget : widgets) { contents->layout()->removeWidget(widget); delete widget; @@ -97,7 +97,7 @@ void FormView::reloadInternal() // Recreate dataMapper->setModel(model.data()); int i = 0; - foreach (SqlQueryModelColumnPtr column, model->getColumns()) + for (SqlQueryModelColumnPtr column : model->getColumns()) addColumn(i++, column->displayName, column->dataType, (column->editionForbiddenReason.size() > 0)); } @@ -150,12 +150,18 @@ void FormView::updateDeletedState() { SqlQueryItem* item = model->itemFromIndex(dataMapper->getCurrentIndex(), 0); if (!item) + { + for (MultiEditor* editor : editors) + editor->setEnabled(false); + return; + } bool deleted = item->isDeletedRow(); int i = 0; - foreach (MultiEditor* editor, editors) + for (MultiEditor* editor : editors) { + editor->setEnabled(true); editor->setDeletedRow(deleted); editor->setReadOnly(readOnly[i++] || deleted); } diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro index 60a85ff..d603f87 100644 --- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro +++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro @@ -31,7 +31,8 @@ QMAKE_CXXFLAGS += -pedantic DEFINES += GUISQLITESTUDIO_LIBRARY -TRANSLATIONS += translations/guiSQLiteStudio_de.ts \ +TRANSLATIONS += translations/guiSQLiteStudio_ro_RO.ts \ + translations/guiSQLiteStudio_de.ts \ translations/guiSQLiteStudio_it.ts \ translations/guiSQLiteStudio_zh_CN.ts \ translations/guiSQLiteStudio_sk.ts \ @@ -172,10 +173,7 @@ SOURCES +=\ uidebug.cpp \ debugconsole.cpp \ common/extactionprototype.cpp \ - dialogs/bugdialog.cpp \ dialogs/aboutdialog.cpp \ - dialogs/bugreportlogindialog.cpp \ - windows/bugreporthistorywindow.cpp \ dialogs/newversiondialog.cpp \ dialogs/quitconfirmdialog.cpp \ common/datawidgetmapper.cpp \ @@ -187,7 +185,12 @@ SOURCES +=\ common/centerediconitemdelegate.cpp \ datagrid/sqlviewmodel.cpp \ common/exttableview.cpp \ - common/exttablewidget.cpp + common/exttablewidget.cpp \ + windows/sqliteextensioneditor.cpp \ + windows/sqliteextensioneditormodel.cpp \ + dialogs/bindparamsdialog.cpp \ + dialogs/execfromfiledialog.cpp \ + dialogs/fileexecerrorsdialog.cpp HEADERS += mainwindow.h \ iconmanager.h \ @@ -323,10 +326,7 @@ HEADERS += mainwindow.h \ uidebug.h \ debugconsole.h \ common/extactionprototype.h \ - dialogs/bugdialog.h \ dialogs/aboutdialog.h \ - dialogs/bugreportlogindialog.h \ - windows/bugreporthistorywindow.h \ dialogs/newversiondialog.h \ guiSQLiteStudio_global.h \ dialogs/quitconfirmdialog.h \ @@ -339,7 +339,13 @@ HEADERS += mainwindow.h \ common/centerediconitemdelegate.h \ datagrid/sqlviewmodel.h \ common/exttableview.h \ - common/exttablewidget.h + common/exttablewidget.h \ + windows/sqliteextensioneditor.h \ + windows/sqliteextensioneditormodel.h \ + dialogs/bindparamsdialog.h \ + common/bindparam.h \ + dialogs/execfromfiledialog.h \ + dialogs/fileexecerrorsdialog.h FORMS += mainwindow.ui \ dbtree/dbtree.ui \ @@ -381,15 +387,16 @@ FORMS += mainwindow.ui \ dialogs/dbconverterdialog.ui \ dialogs/dbdialog.ui \ debugconsole.ui \ - dialogs/bugdialog.ui \ dialogs/aboutdialog.ui \ - dialogs/bugreportlogindialog.ui \ - windows/bugreporthistorywindow.ui \ dialogs/newversiondialog.ui \ dialogs/quitconfirmdialog.ui \ dialogs/languagedialog.ui \ dialogs/cssdebugdialog.ui \ - dialogs/indexexprcolumndialog.ui + dialogs/indexexprcolumndialog.ui \ + windows/sqliteextensioneditor.ui \ + dialogs/bindparamsdialog.ui \ + dialogs/execfromfiledialog.ui \ + dialogs/fileexecerrorsdialog.ui RESOURCES += \ icons.qrc \ @@ -420,3 +427,4 @@ DISTFILES += \ + diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc index 0970b86..56db5ac 100644 --- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc +++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc @@ -1,5 +1,6 @@ <RCC> <qresource prefix="/msg"> + <file>translations/guiSQLiteStudio_ro_RO.qm</file> <file>translations/guiSQLiteStudio_pl.qm</file> <file>translations/guiSQLiteStudio_ru.qm</file> <file>translations/guiSQLiteStudio_fr.qm</file> @@ -14,3 +15,4 @@ + diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp b/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp index 3d6c5f2..8610dbf 100644 --- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp @@ -48,7 +48,7 @@ void IconManager::init() iconFileExtensions << "*.png" << "*.PNG" << "*.jpg" << "*.JPG" << "*.svg" << "*.SVG"; movieFileExtensions << "*.gif" << "*.GIF" << "*.mng" << "*.MNG"; - foreach (QString dirPath, iconDirs) + for (QString dirPath : iconDirs) { loadRecurently(dirPath, "", false); loadRecurently(dirPath, "", true); @@ -115,7 +115,7 @@ void IconManager::loadRecurently(QString dirPath, const QString& prefix, bool mo QString path; QString name; QDir dir(dirPath); - foreach (QFileInfo entry, dir.entryInfoList(extensions, QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot|QDir::Readable)) + for (QFileInfo entry : dir.entryInfoList(extensions, QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot|QDir::Readable)) { if (entry.isDir()) { diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h index 2bc63a2..6034de1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h +++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h @@ -109,9 +109,15 @@ class GUI_API_EXPORT IconManager : public QObject DEF_ICON(ERASE, "erase") DEF_ICON(ERASE_TABLE_DATA, "erase_table_data") DEF_ICON(EXEC_QUERY, "exec_query") + DEF_ICON(EXEC_SQL_FROM_FILE, "execute_sql_from_file") DEF_ICON(EXPLAIN_QUERY, "explain_query") DEF_ICON(EXPORT, "export") DEF_ICON(EXPORT_FILE_BROWSE, "export_file_browse") + DEF_ICON(EXTENSION, "brick") + DEF_ICON(EXTENSION_ADD, "brick_add") + DEF_ICON(EXTENSION_DELETE, "brick_delete") + DEF_ICON(EXTENSION_EDITOR, "brick_folder") + DEF_ICON(EXTENSION_ERROR, "brick_error") DEF_ICON(FEATURE_REQUEST, "feature_request") DEF_ICON(FONT_BROWSE, "font_browse") DEF_ICON(FORMAT_SQL, "format_sql") @@ -167,6 +173,7 @@ class GUI_API_EXPORT IconManager : public QObject DEF_ICON(RESULTS_BELOW, "results_below") DEF_ICON(RESULTS_IN_TAB, "results_in_tab") DEF_ICON(ROLLBACK, "rollback") + DEF_ICON(SAVE_FILE, "save_file") DEF_ICON(SAVE_SQL_FILE, "save_sql_file") DEF_ICON(SEARCH, "search") DEF_ICON(SEARCH_AND_REPLACE, "search_and_replace") @@ -248,6 +255,9 @@ class GUI_API_EXPORT IconManager : public QObject DEF_ICON(WIN_CLOSE_OTHER, "window_close_other") DEF_ICON(WIN_RESTORE, "window_restore") DEF_ICON(WIN_RENAME, "window_rename") + DEF_ICON(ZOOM_RESET, "zoom") + DEF_ICON(ZOOM_IN, "zoom_in") + DEF_ICON(ZOOM_OUT, "zoom_out") ) static IconManager* getInstance(); diff --git a/SQLiteStudio3/guiSQLiteStudio/icons.qrc b/SQLiteStudio3/guiSQLiteStudio/icons.qrc index 8819276..b656f25 100644 --- a/SQLiteStudio3/guiSQLiteStudio/icons.qrc +++ b/SQLiteStudio3/guiSQLiteStudio/icons.qrc @@ -201,5 +201,15 @@ <file>img/wand.png</file> <file>img/search_and_replace.png</file> <file>img/search.png</file> + <file>img/zoom.png</file> + <file>img/zoom_in.png</file> + <file>img/zoom_out.png</file> + <file>img/save_file.png</file> + <file>img/brick.png</file> + <file>img/brick_add.png</file> + <file>img/brick_delete.png</file> + <file>img/brick_error.png</file> + <file>img/brick_folder.png</file> + <file>img/execute_sql_from_file.png</file> </qresource> </RCC> diff --git a/SQLiteStudio3/guiSQLiteStudio/img/brick.png b/SQLiteStudio3/guiSQLiteStudio/img/brick.png Binary files differnew file mode 100644 index 0000000..7851cf3 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/brick.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/brick_add.png b/SQLiteStudio3/guiSQLiteStudio/img/brick_add.png Binary files differnew file mode 100644 index 0000000..fac186b --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/brick_add.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/brick_delete.png b/SQLiteStudio3/guiSQLiteStudio/img/brick_delete.png Binary files differnew file mode 100644 index 0000000..3a8c373 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/brick_delete.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/brick_error.png b/SQLiteStudio3/guiSQLiteStudio/img/brick_error.png Binary files differnew file mode 100644 index 0000000..18ab01e --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/brick_error.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/brick_folder.png b/SQLiteStudio3/guiSQLiteStudio/img/brick_folder.png Binary files differnew file mode 100644 index 0000000..5dea976 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/brick_folder.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/execute_sql_from_file.png b/SQLiteStudio3/guiSQLiteStudio/img/execute_sql_from_file.png Binary files differnew file mode 100644 index 0000000..806d7e6 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/execute_sql_from_file.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/save_file.png b/SQLiteStudio3/guiSQLiteStudio/img/save_file.png Binary files differnew file mode 100644 index 0000000..c619461 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/save_file.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/zoom.png b/SQLiteStudio3/guiSQLiteStudio/img/zoom.png Binary files differnew file mode 100644 index 0000000..908612e --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/zoom.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/zoom_in.png b/SQLiteStudio3/guiSQLiteStudio/img/zoom_in.png Binary files differnew file mode 100644 index 0000000..cdf0a52 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/zoom_in.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/zoom_out.png b/SQLiteStudio3/guiSQLiteStudio/img/zoom_out.png Binary files differnew file mode 100644 index 0000000..07bf98a --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/zoom_out.png diff --git a/SQLiteStudio3/guiSQLiteStudio/license.txt b/SQLiteStudio3/guiSQLiteStudio/license.txt deleted file mode 100644 index f166cc5..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/license.txt +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - 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. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it!
\ No newline at end of file diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp index f7bcb83..2b6463a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp @@ -9,6 +9,7 @@ #include "windows/functionseditor.h" #include "windows/collationseditor.h" #include "windows/ddlhistorywindow.h" +#include "windows/sqliteextensioneditor.h" #include "mdiarea.h" #include "statusfield.h" #include "uiconfig.h" @@ -32,8 +33,6 @@ #include "services/dbmanager.h" #include "services/updatemanager.h" #include "dialogs/aboutdialog.h" -#include "dialogs/bugdialog.h" -#include "windows/bugreporthistorywindow.h" #include "dialogs/newversiondialog.h" #include "dialogs/quitconfirmdialog.h" #include "common/widgetcover.h" @@ -47,6 +46,8 @@ #include <QInputDialog> #include <QProgressBar> #include <QLabel> +#include <QStyle> +#include <QApplication> CFG_KEYS_DEFINE(MainWindow) MainWindow* MainWindow::instance = nullptr; @@ -65,7 +66,7 @@ MainWindow::~MainWindow() void MainWindow::init() { ui->setupUi(this); - connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(cleanUp())); + connect(SQLITESTUDIO, SIGNAL(aboutToQuit()), this, SLOT(cleanUp())); #ifdef Q_OS_WIN setWindowIcon(ICONS.SQLITESTUDIO_APP.toQIcon().pixmap(256, 256)); @@ -130,32 +131,6 @@ void MainWindow::init() #endif connect(statusField, SIGNAL(linkActivated(QString)), this, SLOT(statusFieldLinkClicked(QString))); - // Widget cover - widgetCover = new WidgetCover(this); - widgetCover->setVisible(false); - - updatingBusyBar = new QProgressBar(); - updatingBusyBar->setRange(0, 100); - updatingBusyBar->setTextVisible(true); - updatingBusyBar->setValue(0); - updatingBusyBar->setFixedWidth(300); - - updatingSubBar = new QProgressBar(); - updatingSubBar->setRange(0, 100); - updatingSubBar->setTextVisible(true); - updatingSubBar->setValue(0); - updatingSubBar->setFixedWidth(300); - - updatingLabel = new QLabel(); - - widgetCover->getContainerLayout()->addWidget(updatingLabel, 0, 0); - widgetCover->getContainerLayout()->addWidget(updatingBusyBar, 1, 0); - widgetCover->getContainerLayout()->addWidget(updatingSubBar, 2, 0); -#ifdef PORTABLE_CONFIG - connect(UPDATES, SIGNAL(updatingProgress(QString,int,int)), this, SLOT(handleUpdatingProgress(QString,int,int))); - connect(UPDATES, SIGNAL(updatingError(QString)), this, SLOT(handleUpdatingError())); -#endif - connect(CFG_CORE.General.Language, SIGNAL(changed(QVariant)), this, SLOT(notifyAboutLanguageChange())); fixFonts(); @@ -166,6 +141,7 @@ void MainWindow::cleanUp() if (SQLITESTUDIO->getImmediateQuit()) return; +// qDebug() << "MainWindow::cleanUp()"; for (MdiWindow* win : getMdiArea()->getWindows()) delete win; @@ -254,42 +230,43 @@ void MainWindow::closeEvent(QCloseEvent* event) void MainWindow::createActions() { - createAction(OPEN_SQL_EDITOR, ICONS.OPEN_SQL_EDITOR, tr("Open SQL editor"), this, SLOT(openSqlEditorSlot()), ui->mainToolBar); - createAction(OPEN_DDL_HISTORY, ICONS.DDL_HISTORY, tr("Open DDL history"), this, SLOT(openDdlHistorySlot()), ui->mainToolBar); - createAction(OPEN_FUNCTION_EDITOR, ICONS.FUNCTION, tr("Open SQL functions editor"), this, SLOT(openFunctionEditorSlot()), ui->mainToolBar); - createAction(OPEN_COLLATION_EDITOR, ICONS.CONSTRAINT_COLLATION, tr("Open collations editor"), this, SLOT(openCollationEditorSlot()), ui->mainToolBar); - createAction(IMPORT, ICONS.IMPORT, tr("Import"), this, SLOT(importAnything()), ui->mainToolBar); - createAction(EXPORT, ICONS.EXPORT, tr("Export"), this, SLOT(exportAnything()), ui->mainToolBar); + createAction(OPEN_SQL_EDITOR, ICONS.OPEN_SQL_EDITOR, tr("Open SQL &editor"), this, SLOT(openSqlEditorSlot()), ui->mainToolBar); + createAction(OPEN_DDL_HISTORY, ICONS.DDL_HISTORY, tr("Open DDL &history"), this, SLOT(openDdlHistorySlot()), ui->mainToolBar); + createAction(OPEN_FUNCTION_EDITOR, ICONS.FUNCTION, tr("Open SQL &functions editor"), this, SLOT(openFunctionEditorSlot()), ui->mainToolBar); + createAction(OPEN_COLLATION_EDITOR, ICONS.CONSTRAINT_COLLATION, tr("Open &collations editor"), this, SLOT(openCollationEditorSlot()), ui->mainToolBar); + createAction(OPEN_EXTENSION_MANAGER, ICONS.EXTENSION, tr("Open ex&tension manager"), this, SLOT(openExtensionManagerSlot()), ui->mainToolBar); + createAction(IMPORT, ICONS.IMPORT, tr("&Import"), this, SLOT(importAnything()), ui->mainToolBar); + createAction(EXPORT, ICONS.EXPORT, tr("E&xport"), this, SLOT(exportAnything()), ui->mainToolBar); ui->mainToolBar->addSeparator(); - createAction(OPEN_CONFIG, ICONS.CONFIGURE, tr("Open configuration dialog"), this, SLOT(openConfig()), ui->mainToolBar); + createAction(OPEN_CONFIG, ICONS.CONFIGURE, tr("Open confi&guration dialog"), this, SLOT(openConfig()), ui->mainToolBar); - createAction(MDI_TILE, ICONS.WIN_TILE, tr("Tile windows"), ui->mdiArea, SLOT(tileSubWindows()), ui->viewToolbar); - createAction(MDI_TILE_HORIZONTAL, ICONS.WIN_TILE_HORIZONTAL, tr("Tile windows horizontally"), ui->mdiArea, SLOT(tileHorizontally()), ui->viewToolbar); - createAction(MDI_TILE_VERTICAL, ICONS.WIN_TILE_VERTICAL, tr("Tile windows vertically"), ui->mdiArea, SLOT(tileVertically()), ui->viewToolbar); - createAction(MDI_CASCADE, ICONS.WIN_CASCADE, tr("Cascade windows"), ui->mdiArea, SLOT(cascadeSubWindows()), ui->viewToolbar); + createAction(MDI_TILE, ICONS.WIN_TILE, tr("&Tile windows"), ui->mdiArea, SLOT(tileSubWindows()), ui->viewToolbar); + createAction(MDI_TILE_HORIZONTAL, ICONS.WIN_TILE_HORIZONTAL, tr("Tile windows &horizontally"), ui->mdiArea, SLOT(tileHorizontally()), ui->viewToolbar); + createAction(MDI_TILE_VERTICAL, ICONS.WIN_TILE_VERTICAL, tr("Tile windows &vertically"), ui->mdiArea, SLOT(tileVertically()), ui->viewToolbar); + createAction(MDI_CASCADE, ICONS.WIN_CASCADE, tr("&Cascade windows"), ui->mdiArea, SLOT(cascadeSubWindows()), ui->viewToolbar); createAction(NEXT_TASK, tr("Next window"), ui->taskBar, SLOT(nextTask()), this); createAction(PREV_TASK, tr("Previous window"), ui->taskBar, SLOT(prevTask()), this); createAction(HIDE_STATUS_FIELD, tr("Hide status field"), this, SLOT(hideStatusField()), this); - createAction(CLOSE_WINDOW, ICONS.WIN_CLOSE, tr("Close selected window"), this, SLOT(closeSelectedWindow()), this); - createAction(CLOSE_OTHER_WINDOWS, ICONS.WIN_CLOSE_OTHER, tr("Close all windows but selected"), this, SLOT(closeAllWindowsButSelected()), this); - createAction(CLOSE_ALL_WINDOWS, ICONS.WIN_CLOSE_ALL, tr("Close all windows"), this, SLOT(closeAllWindows()), this); - createAction(RESTORE_WINDOW, ICONS.WIN_RESTORE, tr("Restore recently closed window"), this, SLOT(restoreLastClosedWindow()), this); - createAction(RENAME_WINDOW, ICONS.WIN_RENAME, tr("Rename selected window"), this, SLOT(renameWindow()), this); + createAction(CLOSE_WINDOW, ICONS.WIN_CLOSE, tr("Close selected &window"), this, SLOT(closeSelectedWindow()), this); + createAction(CLOSE_OTHER_WINDOWS, ICONS.WIN_CLOSE_OTHER, tr("Close all windows &but selected"), this, SLOT(closeAllWindowsButSelected()), this); + createAction(CLOSE_ALL_WINDOWS, ICONS.WIN_CLOSE_ALL, tr("Close &all windows"), this, SLOT(closeAllWindows()), this); + createAction(RESTORE_WINDOW, ICONS.WIN_RESTORE, tr("Re&store recently closed window"), this, SLOT(restoreLastClosedWindow()), this); + createAction(RENAME_WINDOW, ICONS.WIN_RENAME, tr("&Rename selected window"), this, SLOT(renameWindow()), this); createAction(OPEN_DEBUG_CONSOLE, tr("Open Debug Console"), this, SLOT(openDebugConsole()), this); createAction(OPEN_CSS_CONSOLE, tr("Open CSS Console"), this, SLOT(openCssConsole()), this); - createAction(REPORT_BUG, ICONS.BUG, tr("Report a bug"), this, SLOT(reportBug()), this); - createAction(FEATURE_REQUEST, ICONS.FEATURE_REQUEST, tr("Propose a new feature"), this, SLOT(requestFeature()), this); - createAction(ABOUT, ICONS.SQLITESTUDIO_APP16, tr("About"), this, SLOT(aboutSqlitestudio()), this); - createAction(LICENSES, ICONS.LICENSES, tr("Licenses"), this, SLOT(licenses()), this); - createAction(HOMEPAGE, ICONS.HOMEPAGE, tr("Open home page"), this, SLOT(homepage()), this); - createAction(FORUM, ICONS.OPEN_FORUM, tr("Open forum page"), this, SLOT(forum()), this); - createAction(USER_MANUAL, ICONS.USER_MANUAL, tr("User Manual"), this, SLOT(userManual()), this); - createAction(SQLITE_DOCS, ICONS.SQLITE_DOCS, tr("SQLite documentation"), this, SLOT(sqliteDocs()), this); - createAction(BUG_REPORT_HISTORY, ICONS.BUG_LIST, tr("Report history"), this, SLOT(reportHistory()), this); + createAction(REPORT_BUG, ICONS.BUG, tr("Report a &bug"), this, SLOT(reportBug()), this); + createAction(FEATURE_REQUEST, ICONS.FEATURE_REQUEST, tr("Propose a new &feature"), this, SLOT(requestFeature()), this); + createAction(ABOUT, ICONS.SQLITESTUDIO_APP16, tr("&About"), this, SLOT(aboutSqlitestudio()), this); + createAction(LICENSES, ICONS.LICENSES, tr("&Licenses"), this, SLOT(licenses()), this); + createAction(HOMEPAGE, ICONS.HOMEPAGE, tr("Open home &page"), this, SLOT(homepage()), this); + createAction(FORUM, ICONS.OPEN_FORUM, tr("Open fo&rum page"), this, SLOT(forum()), this); + createAction(USER_MANUAL, ICONS.USER_MANUAL, tr("User &Manual"), this, SLOT(userManual()), this); + createAction(SQLITE_DOCS, ICONS.SQLITE_DOCS, tr("SQLite &documentation"), this, SLOT(sqliteDocs()), this); + createAction(BUG_REPORT_HISTORY, ICONS.BUG_LIST, tr("Bugs and feature &requests"), this, SLOT(reportHistory()), this); #ifdef PORTABLE_CONFIG - createAction(CHECK_FOR_UPDATES, ICONS.GET_UPDATE, tr("Check for updates"), this, SLOT(checkForUpdates()), this); + createAction(CHECK_FOR_UPDATES, ICONS.GET_UPDATE, tr("Check for &updates"), this, SLOT(checkForUpdates()), this); #endif actionMap[ABOUT]->setMenuRole(QAction::AboutRole); @@ -327,7 +304,7 @@ void MainWindow::initMenuBar() { // Database menu dbMenu = new QMenu(this); - dbMenu->setTitle(tr("Database", "menubar")); + dbMenu->setTitle(tr("&Database", "menubar")); menuBar()->addMenu(dbMenu); dbMenu->addAction(dbTree->getAction(DbTree::CONNECT_TO_DB)); @@ -347,7 +324,7 @@ void MainWindow::initMenuBar() // Structure menu structMenu = new QMenu(this); - structMenu->setTitle(tr("Structure", "menubar")); + structMenu->setTitle(tr("&Structure", "menubar")); menuBar()->addMenu(structMenu); structMenu->addAction(dbTree->getAction(DbTree::ADD_TABLE)); @@ -368,7 +345,7 @@ void MainWindow::initMenuBar() // View menu viewMenu = createPopupMenu(); - viewMenu->setTitle(tr("View", "menubar")); + viewMenu->setTitle(tr("&View", "menubar")); menuBar()->addMenu(viewMenu); mdiMenu = new QMenu(viewMenu); @@ -393,13 +370,14 @@ void MainWindow::initMenuBar() // Tools menu toolsMenu = new QMenu(this); - toolsMenu->setTitle(tr("Tools", "menubar")); + toolsMenu->setTitle(tr("&Tools", "menubar")); menuBar()->addMenu(toolsMenu); toolsMenu->addAction(actionMap[OPEN_SQL_EDITOR]); toolsMenu->addAction(actionMap[OPEN_DDL_HISTORY]); toolsMenu->addAction(actionMap[OPEN_FUNCTION_EDITOR]); toolsMenu->addAction(actionMap[OPEN_COLLATION_EDITOR]); + toolsMenu->addAction(actionMap[OPEN_EXTENSION_MANAGER]); toolsMenu->addAction(actionMap[IMPORT]); toolsMenu->addAction(actionMap[EXPORT]); toolsMenu->addSeparator(); @@ -407,7 +385,7 @@ void MainWindow::initMenuBar() // Help menu sqlitestudioMenu = new QMenu(this); - sqlitestudioMenu->setTitle(tr("Help")); + sqlitestudioMenu->setTitle(tr("&Help")); menuBar()->addMenu(sqlitestudioMenu); if (isDebugEnabled() && isDebugConsoleEnabled()) { @@ -447,7 +425,7 @@ void MainWindow::saveSession(MdiWindow* currWindow) if (CFG_UI.General.RestoreSession.get()) { QList<QVariant> windowSessions; - foreach (MdiWindow* window, ui->mdiArea->getWindows()) + for (MdiWindow* window : ui->mdiArea->getWindows()) if (window->restoreSessionNextTime()) windowSessions << window->saveSession(); @@ -515,7 +493,7 @@ void MainWindow::restoreWindowSessions(const QList<QVariant>& windowSessions) if (windowSessions.size() == 0) return; - foreach (const QVariant& winSession, windowSessions) + for (const QVariant& winSession : windowSessions) restoreWindowSession(winSession); } @@ -597,7 +575,7 @@ EditorWindow* MainWindow::openSqlEditor(Db* dbToSet, const QString& sql) void MainWindow::closeNonSessionWindows() { - foreach (MdiWindow* window, ui->mdiArea->getWindows()) + for (MdiWindow* window : ui->mdiArea->getWindows()) if (!window->restoreSessionNextTime()) window->close(); } @@ -662,6 +640,11 @@ void MainWindow::openCollationEditorSlot() openCollationEditor(); } +void MainWindow::openExtensionManagerSlot() +{ + openExtensionManager(); +} + void MainWindow::exportAnything() { if (!ExportManager::isAnyPluginAvailable()) @@ -736,15 +719,12 @@ void MainWindow::openCssConsole() void MainWindow::reportBug() { - BugDialog dialog(this); - dialog.exec(); + QDesktopServices::openUrl(QUrl(SQLITESTUDIO->getNewIssuePage())); } void MainWindow::requestFeature() { - BugDialog dialog(this); - dialog.setFeatureRequestMode(true); - dialog.exec(); + QDesktopServices::openUrl(QUrl(SQLITESTUDIO->getNewIssuePage())); } void MainWindow::aboutSqlitestudio() @@ -781,7 +761,7 @@ void MainWindow::sqliteDocs() void MainWindow::reportHistory() { - openReportHistory(); + QDesktopServices::openUrl(QUrl(SQLITESTUDIO->getIssuesPage())); } void MainWindow::statusFieldLinkClicked(const QString& link) @@ -816,23 +796,9 @@ void MainWindow::noUpdatesAvailable() void MainWindow::checkForUpdates() { manualUpdatesChecking = true; - UPDATES->checkForUpdates(true); -} - -void MainWindow::handleUpdatingProgress(const QString& jobTitle, int jobPercent, int totalPercent) -{ - if (!widgetCover->isVisible()) - widgetCover->show(); - - updatingLabel->setText(jobTitle); - updatingBusyBar->setValue(totalPercent); - updatingSubBar->setValue(jobPercent); + UPDATES->checkForUpdates(); } -void MainWindow::handleUpdatingError() -{ - widgetCover->hide(); -} #endif void MainWindow::updateCornerDocking() @@ -850,6 +816,16 @@ void MainWindow::updateCornerDocking() } } +void MainWindow::messageFromSecondaryInstance(quint32 instanceId, QByteArray message) +{ + UNUSED(instanceId); + QApplication::setActiveWindow(this); + raise(); + QString dbToOpen = deserializeFromBytes(message).toString(); + if (!dbToOpen.isNull()) + openDb(dbToOpen); +} + DdlHistoryWindow* MainWindow::openDdlHistory() { return openMdiWindow<DdlHistoryWindow>(); @@ -865,9 +841,9 @@ CollationsEditor* MainWindow::openCollationEditor() return openMdiWindow<CollationsEditor>(); } -BugReportHistoryWindow* MainWindow::openReportHistory() +SqliteExtensionEditor* MainWindow::openExtensionManager() { - return openMdiWindow<BugReportHistoryWindow>(); + return openMdiWindow<SqliteExtensionEditor>(); } void MainWindow::fixFonts() diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h index be96af1..fbc3317 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h +++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h @@ -31,6 +31,7 @@ class WidgetCover; class QProgressBar; class QLabel; class ThemeTuner; +class SqliteExtensionEditor; #ifdef Q_OS_MACX #define PREV_TASK_KEY_SEQ Qt::CTRL + Qt::ALT + Qt::Key_Left @@ -70,6 +71,7 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer OPEN_DDL_HISTORY, OPEN_FUNCTION_EDITOR, OPEN_COLLATION_EDITOR, + OPEN_EXTENSION_MANAGER, EXPORT, IMPORT, CLOSE_WINDOW, @@ -140,7 +142,7 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer DdlHistoryWindow* openDdlHistory(); FunctionsEditor* openFunctionEditor(); CollationsEditor* openCollationEditor(); - BugReportHistoryWindow* openReportHistory(); + SqliteExtensionEditor* openExtensionManager(); void fixFonts(); template <class T> @@ -168,15 +170,13 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer QPointer<NewVersionDialog> newVersionDialog; #endif WidgetCover* widgetCover = nullptr; - QLabel* updatingLabel = nullptr; - QProgressBar* updatingBusyBar = nullptr; - QProgressBar* updatingSubBar = nullptr; bool manualUpdatesChecking = false; public slots: EditorWindow* openSqlEditor(); void updateWindowActions(); void updateCornerDocking(); + void messageFromSecondaryInstance(quint32 instanceId, QByteArray message); private slots: void notifyAboutLanguageChange(); @@ -188,6 +188,7 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer void openDdlHistorySlot(); void openFunctionEditorSlot(); void openCollationEditorSlot(); + void openExtensionManagerSlot(); void exportAnything(); void importAnything(); void closeAllWindows(); @@ -210,8 +211,6 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer void updatesAvailable(const QList<UpdateManager::UpdateEntry>& updates); void noUpdatesAvailable(); void checkForUpdates(); - void handleUpdatingProgress(const QString& jobTitle, int jobPercent, int totalPercent); - void handleUpdatingError(); #endif void statusFieldLinkClicked(const QString& link); }; @@ -220,7 +219,7 @@ template <class T> T* MainWindow::openMdiWindow() { T* win = nullptr; - foreach (MdiWindow* mdiWin, ui->mdiArea->getWindows()) + for (MdiWindow* mdiWin : ui->mdiArea->getWindows()) { win = dynamic_cast<T*>(mdiWin->getMdiChild()); if (win) diff --git a/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp b/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp index 0d07bcb..8f8521d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp @@ -72,7 +72,7 @@ QAction* MdiArea::getTaskByWindow(MdiWindow* window) QList<MdiWindow*> MdiArea::getWindows() const { QList<MdiWindow*> windowList; - foreach(QAction* action, taskBar->getTasks()) + for (QAction* action : taskBar->getTasks()) windowList << actionToWinMap[action]; return windowList; @@ -90,7 +90,7 @@ QList<MdiChild*> MdiArea::getMdiChilds() const QList<MdiWindow*> MdiArea::getWindowsToTile() const { QList<MdiWindow*> list; - foreach (MdiWindow *window, getWindows()) + for (MdiWindow *window : getWindows()) { if (window->isMinimized()) continue; @@ -162,7 +162,7 @@ void MdiArea::tileHorizontally() QPoint position(0, 0); QList<MdiWindow*> windowsToTile = getWindowsToTile(); int winCnt = windowsToTile.count(); - foreach (MdiWindow *window, windowsToTile) + for (MdiWindow *window : windowsToTile) { if (window->isMaximized()) window->showNormal(); @@ -189,7 +189,7 @@ void MdiArea::tileVertically() QPoint position(0, 0); QList<MdiWindow*> windowsToTile = getWindowsToTile(); int winCnt = windowsToTile.count(); - foreach (MdiWindow *window, windowsToTile) + for (MdiWindow *window : windowsToTile) { if (window->isMaximized()) window->showNormal(); @@ -212,7 +212,7 @@ void MdiArea::closeAllButActive() QList<QMdiSubWindow*> allButActive = subWindowList(); allButActive.removeOne(activeSubWindow()); - foreach (QMdiSubWindow *window, allButActive) + for (QMdiSubWindow *window : allButActive) window->close(); } @@ -221,7 +221,7 @@ MdiWindow* MdiArea::getWindowByChild(MdiChild *child) if (!child) return nullptr; - foreach (QMdiSubWindow *window, subWindowList()) + for (QMdiSubWindow *window : subWindowList()) if (window->widget() == child) return dynamic_cast<MdiWindow*>(window); @@ -261,7 +261,7 @@ bool MdiArea::isActiveSubWindow(MdiChild *child) QStringList MdiArea::getWindowTitles() { QStringList titles; - foreach (QMdiSubWindow *subWin, subWindowList()) + for (QMdiSubWindow *subWin : subWindowList()) titles << subWin->windowTitle(); return titles; @@ -269,7 +269,7 @@ QStringList MdiArea::getWindowTitles() MdiWindow *MdiArea::getWindowByTitle(const QString &title) { - foreach (QMdiSubWindow *subWin, subWindowList()) + for (QMdiSubWindow *subWin : subWindowList()) { QString t = subWin->windowTitle(); if (subWin->windowTitle() == title) diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp index c99b774..d766738 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp @@ -30,13 +30,13 @@ static QHash<QString,bool> missingEditorPluginsAlreadyWarned; -MultiEditor::MultiEditor(QWidget *parent) : +MultiEditor::MultiEditor(QWidget *parent, TabsMode tabsMode) : QWidget(parent) { - init(); + init(tabsMode); } -void MultiEditor::init() +void MultiEditor::init(TabsMode tabsMode) { QVBoxLayout* vbox = new QVBoxLayout(); vbox->setMargin(margins); @@ -73,14 +73,39 @@ void MultiEditor::init() layout()->addWidget(tabs); tabs->tabBar()->installEventFilter(this); - configBtn = new QToolButton(); - configBtn->setToolTip(tr("Configure editors for this data type")); - configBtn->setIcon(ICONS.CONFIGURE); - configBtn->setFocusPolicy(Qt::NoFocus); - configBtn->setAutoRaise(true); - configBtn->setEnabled(false); - connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked())); - tabs->setCornerWidget(configBtn); + switch (tabsMode) + { + case CONFIGURABLE: + { + configBtn = new QToolButton(); + configBtn->setToolTip(tr("Configure editors for this data type")); + configBtn->setIcon(ICONS.CONFIGURE); + configBtn->setFocusPolicy(Qt::NoFocus); + configBtn->setAutoRaise(true); + configBtn->setEnabled(false); + connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked())); + tabs->setCornerWidget(configBtn); + break; + } + case DYNAMIC: + { + initAddTabMenu(); + addTabBtn = new QToolButton(); + addTabBtn->setToolTip(tr("Open another tab")); + addTabBtn->setIcon(ICONS.PLUS); + addTabBtn->setFocusPolicy(Qt::NoFocus); + addTabBtn->setAutoRaise(true); + addTabBtn->setEnabled(true); + addTabBtn->setPopupMode(QToolButton::InstantPopup); + addTabBtn->setMenu(addTabMenu); + tabs->setCornerWidget(addTabBtn); + tabs->setTabsClosable(true); + connect(tabs, &QTabWidget::tabCloseRequested, this, &MultiEditor::removeTab); + break; + } + case PRECONFIGURED: + break; + } QGraphicsColorizeEffect* effect = new QGraphicsColorizeEffect(); effect->setColor(Qt::black); @@ -167,6 +192,25 @@ void MultiEditor::addEditor(MultiEditorWidget* editorWidget) tabs->addTab(editorWidget, editorWidget->getTabLabel().replace("&", "&&")); THEME_TUNER->manageCompactLayout(editorWidget); editorWidget->installEventFilter(this); + + connect(editorWidget, &MultiEditorWidget::aboutToBeDeleted, [this, editorWidget]() + { + int idx = tabs->indexOf(editorWidget); + tabs->removeTab(idx); + }); + + if (addTabMenu) + { + QAction* addTabAction = findFirst<QAction>(addTabMenu->actions(), [editorWidget](QAction* a) + { + return a->data().toString() == editorWidget->getTabLabel(); + }); + + if (addTabAction) + addTabMenu->removeAction(addTabAction); + else + qWarning() << "Could not find action associated with added MultiEditorWidget:" << editorWidget->getTabLabel(); + } } void MultiEditor::showTab(int idx) @@ -235,11 +279,12 @@ void MultiEditor::setDataType(const DataType& dataType) { this->dataType = dataType; - foreach (MultiEditorWidget* editorWidget, getEditorTypes(dataType)) + for (MultiEditorWidget* editorWidget : getEditorTypes(dataType)) addEditor(editorWidget); showTab(0); - configBtn->setEnabled(true); + if (configBtn) + configBtn->setEnabled(true); } void MultiEditor::focusThisEditor() @@ -271,6 +316,7 @@ void MultiEditor::loadBuiltInEditors() QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType) { QList<MultiEditorWidget*> editors; + MultiEditorWidget* editor = nullptr; QString typeStr = dataType.toString().trimmed().toUpper(); QHash<QString,QVariant> editorsOrder = CFG_UI.General.DataEditorsOrder.get(); @@ -290,7 +336,9 @@ QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType) continue; } - editors << plugin->getInstance(); + editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + editors << editor; } } @@ -313,6 +361,7 @@ QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType) editorWithPrio.first = plugin->getPriority(dataType); editorWithPrio.second = plugin->getInstance(); + editorWithPrio.second->setTabLabel(plugin->getTabLabel()); sortedEditors << editorWithPrio; } @@ -360,12 +409,17 @@ void MultiEditor::updateValue(const QVariant& newValue) for (int i = 0; i < tabs->count(); i++) { editorWidget = dynamic_cast<MultiEditorWidget*>(tabs->widget(i)); - editorWidget->setValue(newValue); - editorWidget->setUpToDate(true); + setValueToWidget(editorWidget, newValue); } invalidatingDisabled = false; } +void MultiEditor::setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue) +{ + editorWidget->setValue(newValue); + editorWidget->setUpToDate(true); +} + void MultiEditor::updateLabel() { if (deleted) @@ -380,3 +434,62 @@ QVariant MultiEditor::getValueOmmitNull() const { return dynamic_cast<MultiEditorWidget*>(tabs->currentWidget())->getValue(); } + +void MultiEditor::initAddTabMenu() +{ + addTabMenu = new QMenu(addTabBtn); + for (MultiEditorWidgetPlugin* plugin : PLUGINS->getLoadedPlugins<MultiEditorWidgetPlugin>()) + addPluginToMenu(plugin); + + sortAddTabMenu(); +} + +void MultiEditor::addPluginToMenu(MultiEditorWidgetPlugin* plugin) +{ + QAction* addTabAction = addTabMenu->addAction(plugin->getTabLabel()); + addTabAction->setData(plugin->getTabLabel()); // for display-independent identification of action to avoid ampersand issue + connect(addTabAction, &QAction::triggered, [plugin, this]() + { + MultiEditorWidget* editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + addEditor(editor); + setValueToWidget(editor, valueBeforeNull); + showTab(tabs->count() - 1); + }); +} + +void MultiEditor::sortAddTabMenu() +{ + QList<QAction*> editorActions = addTabMenu->actions(); + std::sort(editorActions.begin(), editorActions.end(), [](QAction* a1, QAction* a2) + { + return a1->data().toString().compare(a2->data().toString(), Qt::CaseInsensitive) < 0; + }); + + for (QAction* action : editorActions) + addTabMenu->removeAction(action); + + addTabMenu->insertActions(nullptr, editorActions); +} + +void MultiEditor::removeTab(int idx) +{ + MultiEditorWidget* editor = dynamic_cast<MultiEditorWidget*>(tabs->widget(idx)); + QString label = editor->getTabLabel(); + tabs->removeTab(idx); + + // Re-add it to menu + MultiEditorWidgetPlugin* plugin = findFirst<MultiEditorWidgetPlugin>( + PLUGINS->getLoadedPlugins<MultiEditorWidgetPlugin>(), + [label](MultiEditorWidgetPlugin* p) {return p->getTabLabel() == label;} + ); + + if (!plugin) + { + qWarning() << "Missing MultiEditorWidgetPlugin after removing its tab for label:" << label; + return; + } + + addPluginToMenu(plugin); + sortAddTabMenu(); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h index 04b9af7..55d7f2e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h @@ -12,6 +12,7 @@ class MultiEditorWidget; class QLabel; class MultiEditorWidgetPlugin; class QToolButton; +class QMenu; class GUI_API_EXPORT MultiEditor : public QWidget { @@ -31,7 +32,13 @@ class GUI_API_EXPORT MultiEditor : public QWidget HEX }; - explicit MultiEditor(QWidget *parent = 0); + enum TabsMode { + CONFIGURABLE, /**< Tabs are loaded from datatype and also have configure button visible. */ + PRECONFIGURED, /**< Tabs are loaded from datatype. No config button is present. */ + DYNAMIC /**< No tabs are loaded, but user has button to add new tabs, can close them and reorder them. */ + }; + + explicit MultiEditor(QWidget *parent = nullptr, TabsMode tabsMode = CONFIGURABLE); void addEditor(MultiEditorWidget* editorWidget); void showTab(int idx); @@ -50,12 +57,16 @@ class GUI_API_EXPORT MultiEditor : public QWidget static void loadBuiltInEditors(); private: - void init(); + void init(TabsMode tabsMode); void updateVisibility(); void updateNullEffect(); void updateValue(const QVariant& newValue); + void setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue); void updateLabel(); QVariant getValueOmmitNull() const; + void initAddTabMenu(); + void addPluginToMenu(MultiEditorWidgetPlugin* plugin); + void sortAddTabMenu(); static QList<MultiEditorWidget*> getEditorTypes(const DataType& dataType); @@ -74,6 +85,8 @@ class GUI_API_EXPORT MultiEditor : public QWidget bool valueModified = false; QVariant valueBeforeNull; QToolButton* configBtn = nullptr; + QToolButton* addTabBtn = nullptr; + QMenu* addTabMenu = nullptr; DataType dataType; /** @@ -90,6 +103,7 @@ class GUI_API_EXPORT MultiEditor : public QWidget void nullStateChanged(int state); void invalidateValue(); void setModified(); + void removeTab(int idx); signals: void modified(); diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp index ed7c260..1882335 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp @@ -125,11 +125,6 @@ QList<QWidget*> MultiEditorBool::getNoScrollWidgets() return list; } -QString MultiEditorBool::getTabLabel() -{ - return tr("Boolean"); -} - void MultiEditorBool::focusThisWidget() { checkBox->setFocus(); @@ -213,3 +208,8 @@ int MultiEditorBoolPlugin::getPriority(const DataType& dataType) } return 100; } + +QString MultiEditorBoolPlugin::getTabLabel() +{ + return tr("Boolean"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h index f328cf0..6aa11d5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h @@ -22,7 +22,6 @@ class GUI_API_EXPORT MultiEditorBool : public MultiEditorWidget QVariant getValue(); void setReadOnly(bool boolValue); QList<QWidget*> getNoScrollWidgets(); - QString getTabLabel(); void focusThisWidget(); private: @@ -63,6 +62,7 @@ class GUI_API_EXPORT MultiEditorBoolPlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORBOOL_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp index 44178f8..4059f96 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp @@ -9,11 +9,6 @@ MultiEditorDate::MultiEditorDate(QWidget* parent) setDisplayFormat(formats.first()); } -QString MultiEditorDate::getTabLabel() -{ - return tr("Date"); -} - void MultiEditorDate::staticInit() { formats << "yyyy-MM-dd"; @@ -85,3 +80,8 @@ int MultiEditorDatePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorDatePlugin::getTabLabel() +{ + return tr("Date"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h index d51150b..3b53c32 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h @@ -10,8 +10,6 @@ class GUI_API_EXPORT MultiEditorDate : public MultiEditorDateTime public: explicit MultiEditorDate(QWidget *parent = 0); - QString getTabLabel(); - static void staticInit(); protected: @@ -34,6 +32,7 @@ class GUI_API_EXPORT MultiEditorDatePlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORDATE_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp index bd1e244..99053b0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp @@ -106,7 +106,7 @@ QList<QWidget*> MultiEditorDateTime::getNoScrollWidgets() QDateTime MultiEditorDateTime::fromString(const QString& value) { QDateTime dateTime; - foreach (const QString& format, getParsingFormats()) + for (const QString& format : getParsingFormats()) { dateTime = QDateTime::fromString(value, format); if (dateTime.isValid()) @@ -176,11 +176,6 @@ void MultiEditorDateTime::setReadOnly(bool value) updateReadOnlyDisplay(); } -QString MultiEditorDateTime::getTabLabel() -{ - return tr("Date & time"); -} - void MultiEditorDateTime::focusThisWidget() { dateTimeEdit->setFocus(); @@ -273,3 +268,8 @@ int MultiEditorDateTimePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorDateTimePlugin::getTabLabel() +{ + return tr("Date & time"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h index 59bd111..9038ede 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h @@ -27,7 +27,6 @@ class GUI_API_EXPORT MultiEditorDateTime : public MultiEditorWidget bool getReadOnly() const; void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); protected: @@ -79,6 +78,7 @@ class GUI_API_EXPORT MultiEditorDateTimePlugin : public BuiltInPlugin, public Mu MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORDATETIME_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp index 5a3cd28..a959e53 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp @@ -9,8 +9,6 @@ MultiEditorHex::MultiEditorHex() hexEdit = new QHexEdit(); layout()->addWidget(hexEdit); - //hexEdit->setTabChangesFocus(true); - connect(hexEdit, SIGNAL(dataChanged()), this, SLOT(modificationChanged())); setFocusProxy(hexEdit); } @@ -34,11 +32,6 @@ void MultiEditorHex::setReadOnly(bool value) hexEdit->setReadOnly(value); } -QString MultiEditorHex::getTabLabel() -{ - return tr("Hex"); -} - void MultiEditorHex::focusThisWidget() { hexEdit->setFocus(); @@ -92,3 +85,8 @@ int MultiEditorHexPlugin::getPriority(const DataType& dataType) } return 100; } + +QString MultiEditorHexPlugin::getTabLabel() +{ + return tr("Hex"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h index 5fd32a0..e647f12 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h @@ -20,7 +20,6 @@ class GUI_API_EXPORT MultiEditorHex : public MultiEditorWidget void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); QList<QWidget*> getNoScrollWidgets(); @@ -45,6 +44,7 @@ class GUI_API_EXPORT MultiEditorHexPlugin : public BuiltInPlugin, public MultiEd MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORHEX_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp index 526f5c4..6b1dd09 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp @@ -18,7 +18,7 @@ MultiEditorNumeric::MultiEditorNumeric(QWidget* parent) void MultiEditorNumeric::setValue(const QVariant& value) { - spinBox->setValue(value); + spinBox->setValue(value, false); } QVariant MultiEditorNumeric::getValue() @@ -31,11 +31,6 @@ void MultiEditorNumeric::setReadOnly(bool value) spinBox->setReadOnly(value); } -QString MultiEditorNumeric::getTabLabel() -{ - return tr("Number", "numeric multi editor tab name"); -} - void MultiEditorNumeric::focusThisWidget() { spinBox->setFocus(); @@ -108,3 +103,8 @@ int MultiEditorNumericPlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorNumericPlugin::getTabLabel() +{ + return tr("Number", "numeric multi editor tab name"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h index c74d27a..224c6d4 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h @@ -17,7 +17,6 @@ class GUI_API_EXPORT MultiEditorNumeric : public MultiEditorWidget void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); QList<QWidget*> getNoScrollWidgets(); @@ -39,6 +38,7 @@ class GUI_API_EXPORT MultiEditorNumericPlugin : public BuiltInPlugin, public Mul MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORNUMERIC_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp index 05db8e0..0d963a5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp @@ -5,6 +5,7 @@ #include <QVBoxLayout> #include <QAction> #include <QMenu> +#include <QDebug> CFG_KEYS_DEFINE(MultiEditorText) @@ -40,11 +41,6 @@ void MultiEditorText::setReadOnly(bool value) textEdit->setReadOnly(value); } -QString MultiEditorText::getTabLabel() -{ - return tr("Text"); -} - QToolBar* MultiEditorText::getToolBar(int toolbar) const { UNUSED(toolbar); @@ -182,3 +178,8 @@ int MultiEditorTextPlugin::getPriority(const DataType& dataType) } return 1; } + +QString MultiEditorTextPlugin::getTabLabel() +{ + return tr("Text"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h index bd814ce..59d2a44 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h @@ -44,7 +44,6 @@ class GUI_API_EXPORT MultiEditorText : public MultiEditorWidget, public ExtActio void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); QToolBar* getToolBar(int toolbar) const; void focusThisWidget(); QList<QWidget*> getNoScrollWidgets(); @@ -82,6 +81,7 @@ class GUI_API_EXPORT MultiEditorTextPlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORTEXT_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp index 8b49715..35800ce 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp @@ -11,11 +11,6 @@ MultiEditorTime::MultiEditorTime(QWidget *parent) setDisplayFormat(formats.first()); } -QString MultiEditorTime::getTabLabel() -{ - return tr("Time"); -} - void MultiEditorTime::staticInit() { formats << "hh:mm:ss" @@ -88,3 +83,8 @@ int MultiEditorTimePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorTimePlugin::getTabLabel() +{ + return tr("Time"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h index 1fb05f3..e5b64a8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h @@ -11,8 +11,6 @@ class GUI_API_EXPORT MultiEditorTime : public MultiEditorDateTime public: explicit MultiEditorTime(QWidget *parent = 0); - QString getTabLabel(); - static void staticInit(); protected: @@ -35,6 +33,7 @@ class GUI_API_EXPORT MultiEditorTimePlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORTIME_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp index caea9a5..826728a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp @@ -8,10 +8,20 @@ MultiEditorWidget::MultiEditorWidget(QWidget *parent) : void MultiEditorWidget::installEventFilter(QObject* filterObj) { QObject::installEventFilter(filterObj); - foreach (QWidget* w, getNoScrollWidgets()) + for (QWidget* w : getNoScrollWidgets()) w->installEventFilter(filterObj); } +void MultiEditorWidget::setTabLabel(const QString& value) +{ + tabLabel = value; +} + +QString MultiEditorWidget::getTabLabel() +{ + return tabLabel; +} + bool MultiEditorWidget::isUpToDate() const { return upToDate; diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h index 14bac26..dc98b1a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h @@ -9,25 +9,28 @@ class GUI_API_EXPORT MultiEditorWidget : public QWidget Q_OBJECT public: - explicit MultiEditorWidget(QWidget *parent = 0); + explicit MultiEditorWidget(QWidget *parent = nullptr); virtual void setValue(const QVariant& value) = 0; virtual QVariant getValue() = 0; virtual void setReadOnly(bool value) = 0; virtual QList<QWidget*> getNoScrollWidgets() = 0; - virtual QString getTabLabel() = 0; virtual void focusThisWidget() = 0; void installEventFilter(QObject* filterObj); + void setTabLabel(const QString& value); + QString getTabLabel(); bool isUpToDate() const; void setUpToDate(bool value); private: bool upToDate = true; + QString tabLabel; signals: void valueModified(); + void aboutToBeDeleted(); }; #endif // MULTIEDITORWIDGET_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h index 011bde5..7426006 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h @@ -12,6 +12,7 @@ class GUI_API_EXPORT MultiEditorWidgetPlugin : public virtual Plugin virtual MultiEditorWidget* getInstance() = 0; virtual bool validFor(const DataType& dataType) = 0; virtual int getPriority(const DataType& dataType) = 0; + virtual QString getTabLabel() = 0; }; #endif // MULTIEDITORWIDGETPLUGIN_H diff --git a/SQLiteStudio3/guiSQLiteStudio/selectabledbmodel.h b/SQLiteStudio3/guiSQLiteStudio/selectabledbmodel.h index bbae582..f33e413 100644 --- a/SQLiteStudio3/guiSQLiteStudio/selectabledbmodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/selectabledbmodel.h @@ -11,7 +11,7 @@ class DbTreeItem; class GUI_API_EXPORT SelectableDbModel : public QSortFilterProxyModel { public: - explicit SelectableDbModel(QObject *parent = 0); + explicit SelectableDbModel(QObject *parent = nullptr); QVariant data(const QModelIndex& index, int role) const; bool setData(const QModelIndex& index, const QVariant& value, int role); diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp index c3fd257..b3656a6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp @@ -20,6 +20,7 @@ #include "dbtree/dbtreeitem.h" #include "dbtree/dbtree.h" #include "dbtree/dbtreemodel.h" +#include "common/lazytrigger.h" #include <QAction> #include <QMenu> #include <QTimer> @@ -66,8 +67,9 @@ void SqlEditor::init() connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberAreaWidth())); connect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(updateLineNumberArea(QRect,int))); - connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine())); + connect(this, SIGNAL(textChanged()), this, SLOT(checkContentSize())); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(cursorMoved())); + connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine())); updateLineNumberAreaWidth(); highlightCurrentLine(); @@ -79,15 +81,14 @@ void SqlEditor::init() connect(completer, SIGNAL(leftPressed()), this, SLOT(completerLeftPressed())); connect(completer, SIGNAL(rightPressed()), this, SLOT(completerRightPressed())); - autoCompleteTimer = new QTimer(this); - autoCompleteTimer->setSingleShot(true); - autoCompleteTimer->setInterval(autoCompleterDelay); - connect(autoCompleteTimer, SIGNAL(timeout()), this, SLOT(checkForAutoCompletion())); + autoCompleteTrigger = new LazyTrigger(autoCompleterDelay, + [this]() -> bool {return autoCompletion && !deletionKeyPressed;}, + this); + connect(autoCompleteTrigger, SIGNAL(triggered()), this, SLOT(checkForAutoCompletion())); + + queryParserTrigger = new LazyTrigger(queryParserDelay, this); + connect(autoCompleteTrigger, SIGNAL(triggered()), this, SLOT(parseContents())); - queryParserTimer = new QTimer(this); - queryParserTimer->setSingleShot(true); - queryParserTimer->setInterval(queryParserDelay); - connect(queryParserTimer, SIGNAL(timeout()), this, SLOT(parseContents())); connect(this, SIGNAL(textChanged()), this, SLOT(scheduleQueryParser())); queryParser = new Parser(Dialect::Sqlite3); @@ -502,17 +503,9 @@ void SqlEditor::completeSelected() insertPlainText(value); } -void SqlEditor::scheduleAutoCompletion() -{ - autoCompleteTimer->stop(); - - if (autoCompletion && !deletionKeyPressed) - autoCompleteTimer->start(); -} - void SqlEditor::checkForAutoCompletion() { - if (!db || !autoCompletion || deletionKeyPressed) + if (!db || !autoCompletion || deletionKeyPressed || !richFeaturesEnabled) return; Lexer lexer(getDialect()); @@ -545,7 +538,7 @@ void SqlEditor::refreshValidObjects() QSet<QString> databases = resolver.getDatabases(); databases << "main"; QStringList objects; - foreach (const QString& dbName, databases) + for (const QString& dbName : databases) { objects = resolver.getAllObjects(dbName); objectsInNamedDb[dbName] << objects; @@ -623,6 +616,9 @@ int SqlEditor::lineNumberAreaWidth() void SqlEditor::highlightParenthesis() { + if (!richFeaturesEnabled) + return; + // Clear extra selections QList<QTextEdit::ExtraSelection> selections = extraSelections(); @@ -703,6 +699,14 @@ void SqlEditor::indentSelected(bool shiftPressed) QTextDocument* doc = document(); QTextBlock startBlock = doc->findBlock(cursor.selectionStart()); QTextBlock endBlock = doc->findBlock(cursor.selectionEnd()); + + if (cursor.selectionEnd() > endBlock.position()) + { + QTextBlock afterEndBlock = endBlock.next(); + if (afterEndBlock.isValid()) + endBlock = afterEndBlock; + } + for (QTextBlock it = startBlock; it != endBlock; it = it.next()) { if (shiftPressed) @@ -834,18 +838,8 @@ void SqlEditor::completerRightPressed() void SqlEditor::parseContents() { - if (document()->characterCount() > SqliteSyntaxHighlighter::MAX_QUERY_LENGTH) - { - if (richFeaturesEnabled) - notifyWarn(tr("Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.")); - - richFeaturesEnabled = false; + if (!richFeaturesEnabled) return; - } - else if (!richFeaturesEnabled) - { - richFeaturesEnabled = true; - } // Updating dialect according to current database (if any) Dialect dialect = Dialect::Sqlite3; @@ -880,9 +874,9 @@ void SqlEditor::checkForSyntaxErrors() // Marking invalid tokens, like in "SELECT * from test] t" - the "]" token is invalid. // Such tokens don't cause parser to fail. - foreach (SqliteQueryPtr query, queryParser->getQueries()) + for (SqliteQueryPtr query : queryParser->getQueries()) { - foreach (TokenPtr token, query->tokens) + for (TokenPtr token : query->tokens) { if (token->type == Token::INVALID) markErrorAt(token->start, token->end, true); @@ -896,7 +890,7 @@ void SqlEditor::checkForSyntaxErrors() } // Setting new markers when errors were detected - foreach (ParserError* error, queryParser->getErrors()) + for (ParserError* error : queryParser->getErrors()) markErrorAt(sqlIndex(error->getFrom()), sqlIndex(error->getTo())); emit errorsChecked(true); @@ -912,10 +906,10 @@ void SqlEditor::checkForValidObjects() Dialect dialect = db->getDialect(); QList<SqliteStatement::FullObject> fullObjects; QString dbName; - foreach (SqliteQueryPtr query, queryParser->getQueries()) + for (SqliteQueryPtr query : queryParser->getQueries()) { fullObjects = query->getContextFullObjects(); - foreach (const SqliteStatement::FullObject& fullObj, fullObjects) + for (const SqliteStatement::FullObject& fullObj : fullObjects) { dbName = fullObj.database ? stripObjName(fullObj.database->value, dialect) : "main"; if (!objectsInNamedDb.contains(dbName)) @@ -945,10 +939,8 @@ void SqlEditor::scheduleQueryParser(bool force) syntaxValidated = false; document()->setModified(false); - queryParserTimer->stop(); - queryParserTimer->start(); - - scheduleAutoCompletion(); + queryParserTrigger->schedule(); + autoCompleteTrigger->schedule(); } int SqlEditor::sqlIndex(int idx) @@ -1053,6 +1045,21 @@ void SqlEditor::cursorMoved() } } +void SqlEditor::checkContentSize() +{ + if (document()->characterCount() > SqliteSyntaxHighlighter::MAX_QUERY_LENGTH) + { + if (richFeaturesEnabled) + notifyWarn(tr("Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.")); + + richFeaturesEnabled = false; + } + else if (!richFeaturesEnabled) + { + richFeaturesEnabled = true; + } +} + void SqlEditor::formatSql() { QString sql = hasSelection() ? getSelectedText() : toPlainText(); @@ -1094,17 +1101,14 @@ void SqlEditor::loadFromFile() setFileDialogInitPathByFile(fName); - QFile file(fName); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + QString err; + QString sql = readFileContents(fName, &err); + if (sql.isNull() && !err.isNull()) { - notifyError(tr("Could not open file '%1' for reading: %2").arg(fName).arg(file.errorString())); + notifyError(tr("Could not open file '%1' for reading: %2").arg(fName).arg(err)); return; } - QTextStream stream(&file); - stream.setCodec("UTF-8"); - QString sql = stream.readAll(); - file.close(); setPlainText(sql); loadedFile = fName; @@ -1556,7 +1560,7 @@ void SqlEditor::setShowLineNumbers(bool value) void SqlEditor::checkSyntaxNow() { - queryParserTimer->stop(); + queryParserTrigger->cancel(); parseContents(); } @@ -1617,7 +1621,7 @@ const SqlEditor::DbObject* SqlEditor::getValidObjectForPosition(const QPoint& po const SqlEditor::DbObject* SqlEditor::getValidObjectForPosition(int position, bool movedLeft) { - foreach (const DbObject& obj, validDbObjects) + for (const DbObject& obj : validDbObjects) { if ((!movedLeft && position > obj.from && position-1 <= obj.to) || (movedLeft && position >= obj.from && position <= obj.to)) diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h index 1c98682..c56492c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h +++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h @@ -13,11 +13,17 @@ #include <QFuture> class CompleterWindow; -class QTimer; class Parser; class SqlEditor; class SearchTextDialog; class SearchTextLocator; +class LazyTrigger; + +#ifdef Q_OS_OSX +# define COMPLETE_REQ_KEY Qt::META +#else +# define COMPLETE_REQ_KEY Qt::CTRL +#endif CFG_KEY_LIST(SqlEditor, QObject::tr("SQL editor input field"), CFG_KEY_ENTRY(CUT, QKeySequence::Cut, QObject::tr("Cut selected text")) @@ -34,7 +40,7 @@ CFG_KEY_LIST(SqlEditor, QObject::tr("SQL editor input field"), CFG_KEY_ENTRY(FIND_PREV, QKeySequence::FindPrevious, QObject::tr("Find previous")) CFG_KEY_ENTRY(REPLACE, QKeySequence::Replace, QObject::tr("Replace in text")) CFG_KEY_ENTRY(DELETE_LINE, Qt::CTRL + Qt::Key_D, QObject::tr("Delete current line")) - CFG_KEY_ENTRY(COMPLETE, Qt::CTRL + Qt::Key_Space, QObject::tr("Request code assistant")) + CFG_KEY_ENTRY(COMPLETE, COMPLETE_REQ_KEY + Qt::Key_Space, QObject::tr("Request code assistant")) CFG_KEY_ENTRY(FORMAT_SQL, Qt::CTRL + Qt::Key_T, QObject::tr("Format contents")) CFG_KEY_ENTRY(MOVE_BLOCK_DOWN, Qt::ALT + Qt::Key_Down, QObject::tr("Move selected block of text one line down")) CFG_KEY_ENTRY(MOVE_BLOCK_UP, Qt::ALT + Qt::Key_Up, QObject::tr("Move selected block of text one line up")) @@ -199,10 +205,10 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine QMenu* validObjContextMenu = nullptr; Db* db = nullptr; CompleterWindow* completer = nullptr; - QTimer* autoCompleteTimer = nullptr; + LazyTrigger* autoCompleteTrigger = nullptr; bool autoCompletion = true; bool deletionKeyPressed = false; - QTimer* queryParserTimer = nullptr; + LazyTrigger* queryParserTrigger = nullptr; Parser* queryParser = nullptr; QHash<QString,QStringList> objectsInNamedDb; QMutex objectsInNamedDbMutex; @@ -254,7 +260,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void backspacePressed(); void complete(); void completeSelected(); - void scheduleAutoCompletion(); +// void scheduleAutoCompletion(); void checkForAutoCompletion(); void completerTypedText(const QString& text); void completerBackspacePressed(); @@ -266,6 +272,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine void highlightCurrentLine(); void updateLineNumberArea(const QRect&rect, int dy); void cursorMoved(); + void checkContentSize(); void formatSql(); void saveToFile(); void saveAsToFile(); diff --git a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp index ac8d6cf..55ccc08 100644 --- a/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/sqlitesyntaxhighlighter.cpp @@ -279,7 +279,7 @@ bool SqliteSyntaxHighlighter::isError(int start, int lgt, bool* limitedDamage) { start += currentBlock().position(); int end = start + lgt - 1; - foreach (const Error& error, errors) + for (const Error& error : errors) { if (error.from <= start && error.to >= end) { @@ -294,7 +294,7 @@ bool SqliteSyntaxHighlighter::isValid(int start, int lgt) { start += currentBlock().position(); int end = start + lgt - 1; - foreach (const DbObject& obj, dbObjects) + for (const DbObject& obj : dbObjects) { if (obj.from <= start && obj.to >= end) return true; @@ -379,7 +379,7 @@ SqliteSyntaxHighlighter::DbObject::DbObject(int from, int to) : QList<const TextBlockData::Parenthesis*> TextBlockData::parentheses() { QList<const TextBlockData::Parenthesis*> list; - foreach (const TextBlockData::Parenthesis& par, parData) + for (const TextBlockData::Parenthesis& par : parData) list << ∥ return list; @@ -395,7 +395,7 @@ void TextBlockData::insertParenthesis(int pos, char c) const TextBlockData::Parenthesis* TextBlockData::parenthesisForPosision(int pos) { - foreach (const Parenthesis& par, parData) + for (const Parenthesis& par : parData) { if (par.position == pos) return ∥ diff --git a/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp b/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp index 4acd1a6..571fcba 100644 --- a/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp @@ -178,13 +178,13 @@ void StatusField::setupMenu() void StatusField::readRecentMessages() { noFlashing = true; - foreach (const QString& msg, NotifyManager::getInstance()->getRecentInfos()) + for (const QString& msg : NotifyManager::getInstance()->getRecentInfos()) info(msg); - foreach (const QString& msg, NotifyManager::getInstance()->getRecentWarnings()) + for (const QString& msg : NotifyManager::getInstance()->getRecentWarnings()) warn(msg); - foreach (const QString& msg, NotifyManager::getInstance()->getRecentErrors()) + for (const QString& msg : NotifyManager::getInstance()->getRecentErrors()) error(msg); noFlashing = false; diff --git a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp index b63c58d..fd0c338 100644 --- a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp @@ -158,7 +158,7 @@ QAction* TaskBar::getNextClosestAction(const QPoint& position) QToolButton* btn = nullptr; if (orientation() == Qt::Horizontal) { - foreach (QAction* action, tasks) + for (QAction* action : tasks) { btn = getToolButton(action); if (btn && btn->x() >= position.x()) @@ -167,7 +167,7 @@ QAction* TaskBar::getNextClosestAction(const QPoint& position) } else { - foreach (QAction* action, tasks) + for (QAction* action : tasks) { btn = getToolButton(action); if (btn && btn->y() >= position.y()) @@ -260,15 +260,33 @@ void TaskBar::dragTaskTo(QAction* task, int positionIndex) if (positionIndex < 0) return; + dragCurrentIndex = positionIndex; + removeAction(task); if (positionIndex >= tasks.size()) + { addAction(task); + tasks.removeOne(task); + tasks << task; + } else + { + int oldIdx = tasks.indexOf(task); + + // If we move from left to right, the positionIndex actually points to 1 position after, + // so insertAction() can expect its "before action" first argument. + // Although at this step we want precise position index to move the task on the list, + // so if this is movement from left to right, we deduct 1 from the index. + int newTaskIdx = (positionIndex > oldIdx) ? (positionIndex - 1) : positionIndex; + if (oldIdx == newTaskIdx) + return; + insertAction(tasks.at(positionIndex), task); + tasks.move(oldIdx, newTaskIdx); + } connect(getToolButton(task), SIGNAL(pressed()), this, SLOT(mousePressed())); - dragCurrentIndex = positionIndex; } QMimeData* TaskBar::generateMimeData() diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm Binary files differindex f1dac43..3f118d1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts index c597ce1..0047f6c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts @@ -14,9 +14,8 @@ <translation>Über SQLiteStudio</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Freier, open-source, multiplattformfähiger SQLite Datenbankmanager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor und aktiver Verantwortlicher:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Freier, open-source, multiplattformfähiger SQLite Datenbankmanager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor und aktiver Verantwortlicher:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -59,6 +58,11 @@ <translation>Konfigurationsverzeichnis</translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation>Qt Version:</translation> @@ -92,260 +96,220 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Fehler und Anregungen</translation> + <translation type="vanished">Fehler und Anregungen</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>Gemeldet von</translation> + <translation type="vanished">Gemeldet von</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>Ihre E-mail Adresse oder Ihr 'bugtracker' Login</translation> + <translation type="vanished">Ihre E-mail Adresse oder Ihr 'bugtracker' Login</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>Anmelden</translation> + <translation type="vanished">Anmelden</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>Kurzbeschreibung</translation> + <translation type="vanished">Kurzbeschreibung</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>Ausführliche Fehlerbeschreibung</translation> + <translation type="vanished">Ausführliche Fehlerbeschreibung</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>Mehr Details</translation> + <translation type="vanished">Mehr Details</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>SQLiteStudio Version</translation> + <translation type="vanished">SQLiteStudio Version</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>Betriebssystem</translation> + <translation type="vanished">Betriebssystem</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>Geladene Plugins</translation> + <translation type="vanished">Geladene Plugins</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>Absenden</translation> + <translation type="vanished">Absenden</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation>Sie können Ihre gemeldeten Fehler und Anregungen sehen, wenn Sie im Menü '%1' den Eintrag '%2' auswählen.</translation> + <translation type="vanished">Sie können Ihre gemeldeten Fehler und Anregungen sehen, wenn Sie im Menü '%1' den Eintrag '%2' auswählen.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Ihr Fehlerbericht wurde erfolgreich versendet.</translation> + <translation type="vanished">Ihr Fehlerbericht wurde erfolgreich versendet.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>Beim Absenden des Fehlerberichts ist ein Fehler aufgetreten: %1 %2</translation> + <translation type="vanished">Beim Absenden des Fehlerberichts ist ein Fehler aufgetreten: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>Sie können versuchen den Bericht erneut abzusenden. Ihr eingegebener Text wird nach einem Fehler wie diesem wieder hergestellt.</translation> + <translation type="vanished">Sie können versuchen den Bericht erneut abzusenden. Ihr eingegebener Text wird nach einem Fehler wie diesem wieder hergestellt.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>Ihre Anregung wurde erfolgreich versendet.</translation> + <translation type="vanished">Ihre Anregung wurde erfolgreich versendet.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>Beim Absenden der Anregung ist ein Fehler aufgetreten: %1 %2</translation> + <translation type="vanished">Beim Absenden der Anregung ist ein Fehler aufgetreten: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Fehlerbericht erfassen</translation> + <translation type="vanished">Fehlerbericht erfassen</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>Beschreiben Sie das Problem mit wenigen Worten</translation> + <translation type="vanished">Beschreiben Sie das Problem mit wenigen Worten</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>Beschreiben Sie das Problem hier genauer und die Schritte, um es zu reproduzieren</translation> + <translation type="vanished">Beschreiben Sie das Problem hier genauer und die Schritte, um es zu reproduzieren</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>Anregung zu einer neuen Funktion erfassen</translation> + <translation type="vanished">Anregung zu einer neuen Funktion erfassen</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>Ein kurzer Titel für ihre Anregung</translation> + <translation type="vanished">Ein kurzer Titel für ihre Anregung</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>Beschreiben Sie hier Ihre Anregung ausführlich</translation> + <translation type="vanished">Beschreiben Sie hier Ihre Anregung ausführlich</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>Versenden als nicht registrierter Benutzer mittels E-mail Adresse.</translation> + <translation type="vanished">Versenden als nicht registrierter Benutzer mittels E-mail Adresse.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>Versenden als registrierter Benutzer.</translation> + <translation type="vanished">Versenden als registrierter Benutzer.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>Abmelden</translation> + <translation type="vanished">Abmelden</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>Die Angabe Ihrer echten E-mail Adresse ermöglicht es uns Sie bzgl. Ihres Berichts zu kontaktieren. Erfahren Sie mehr dazu und klicken Sie den 'Hilfe' Knopf auf der rechtehn Seite.</translation> + <translation type="vanished">Die Angabe Ihrer echten E-mail Adresse ermöglicht es uns Sie bzgl. Ihres Berichts zu kontaktieren. Erfahren Sie mehr dazu und klicken Sie den 'Hilfe' Knopf auf der rechtehn Seite.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>Geben Sie Ihre gültige E-mail Adresse oder Ihre Anmeldedaten an.</translation> + <translation type="vanished">Geben Sie Ihre gültige E-mail Adresse oder Ihre Anmeldedaten an.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>Eine Kurzbeschreibung benötigt mindestens 10 Zeichen, maximal jedoch 100 Zeichen. Eine ausführlichere Beschreibung kann in dem Feld unten erfasst werden.</translation> + <translation type="vanished">Eine Kurzbeschreibung benötigt mindestens 10 Zeichen, maximal jedoch 100 Zeichen. Eine ausführlichere Beschreibung kann in dem Feld unten erfasst werden.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>Eine ausführliche Beschreibung benötigt mindestens 30 Zeichen.</translation> + <translation type="vanished">Eine ausführliche Beschreibung benötigt mindestens 30 Zeichen.</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>Titel</translation> + <translation type="vanished">Titel</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>Gemeldet am</translation> + <translation type="vanished">Gemeldet am</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>Berichtsverlauf</translation> + <translation type="vanished">Berichtsverlauf</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>Lösche Berichtsverlauf</translation> + <translation type="vanished">Lösche Berichtsverlauf</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>Gewählten Eintrag löschen</translation> + <translation type="vanished">Gewählten Eintrag löschen</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>Ungültige Antwort vom Server.</translation> + <translation type="vanished">Ungültige Antwort vom Server.</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>Anmelden</translation> + <translation type="vanished">Anmelden</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> <translatorcomment>Hier fehlt mir der Kontext!!!</translatorcomment> - <translation>Überprüfung</translation> + <translation type="vanished">Überprüfung</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>Login:</translation> + <translation type="vanished">Login:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>Passwort:</translation> + <translation type="vanished">Passwort:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation>Überprüfung</translation> + <translation type="vanished">Überprüfung</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation>Überprüfe</translation> + <translation type="vanished">Überprüfe</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>Ergebnis der Überprüfung</translation> + <translation type="vanished">Ergebnis der Überprüfung</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>Abbrechen</translation> + <translation type="vanished">Abbrechen</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>Ein Login Kürzel muss mindestens 2 Zeichen lang sein.</translation> + <translation type="vanished">Ein Login Kürzel muss mindestens 2 Zeichen lang sein.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>Ein Passwort muss mindestens 5 Zeichen lang sein.</translation> + <translation type="vanished">Ein Passwort muss mindestens 5 Zeichen lang sein.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>Gültig</translation> + <translation type="vanished">Gültig</translation> </message> </context> <context> @@ -356,12 +320,12 @@ <translation>Kollationen filtern</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation>Kollationsname:</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation type="unfinished">Sprache:</translation> </message> @@ -490,11 +454,20 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Invalid default value expression: %1</source> - <translation type="unfinished">Ungültiger Standardwert für Ausdruck: %1</translation> + <translation type="obsolete">Ungültiger Standardwert für Ausdruck: %1</translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation>Geben Sie einen Namen für die Bedingung ein.</translation> </message> @@ -606,7 +579,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation>Bedingung löschen</translation> @@ -666,34 +639,44 @@ <translation>Standardbedingung hinzufügen</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>Sind Sie sicher, dass Sie die folgende Bedingung löschen wollen: '%1'?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation>Korrigiert die Konfiguration der Bedingung.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation>Diese Bedingung wird von SQLite 2 offiziell nicht unterstützt, aber sie kann dennoch benutzt werden.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Für INTEGER PRIMARY KEY ist eine Skalierung nicht erlaubt.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation>Die Präzision kann ohne Skalierung nicht definiert werden.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Für INTEGER PRIMARY KEY ist eine Präzision nicht erlaubt.</translation> </message> @@ -795,10 +778,9 @@ but it's okay to use it.</source> <translation>Geben Sie einen Namen für die Bedingung ein.</translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation>Automatische Zählung (nur für %1 Spaltentypen)</translation> + <translation type="vanished">Automatische Zählung (nur für %1 Spaltentypen)</translation> </message> </context> <context> @@ -910,7 +892,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>Konfiguration</translation> </message> @@ -1001,128 +983,139 @@ but it's okay to use it.</source> <translation>Datenbearbeitung</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>Anzahl an Datenzeilen pro Seite:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation><p>Wenn Daten in das Ergebnisfenster eingelesen werden, dann wird die Breite der Spalten dabei automatisch angepasst. Dieser Wert begrenzt maximale Breite für die automatische Breitenanpassung. Der Anwender kann die Spaltenbreite jedoch manuell über dieses Limit verbreitern.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation>Begrenze die initiale Spaltenbreite im Ergebnisfenster auf (Pixel):</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation>Neue Zeile im Gitternetz des Datenfensters hinzufügen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation>Vor der derzeitig ausgewählten Zeile</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation>Nach der derzeitig ausgewählten Zeile</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation>Am Ende der Datenfensters</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation><p>Wenn aktiviert, wird der Reiter "Daten" anstelle des Reiters "Struktur" angezeigt beim öffnen eines Tabellenfensters angezeigt.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation><p>Wenn aktiviert, wird der Reiter "Daten" als erster Reiter angezeigt für jedes Tabellenfenster, anstelle an zweiter Stelle.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation>Den Reiter Daten als ersten Reiter im Tabellenfenster anzeigen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation>Den Reiter Daten als ersten Reiter im View-Fenster anzeigen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>Datentypen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>Verfügbare Editoren:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation>Für diesen Datentyp ausgewählte Editoren:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>Schema</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>Maximale Anzahl an DDL Änderungen im Verlauf.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>DDL Verlaufsgröße:</translation> </message> @@ -1131,104 +1124,104 @@ but it's okay to use it.</source> <translation type="vanished">Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>SQL Abfragen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>Maximale Anzahl an SQL Abfragen im Verlauf.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>Verlaufsgröße:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>Wenn diese Option aktiviert ist und sich mehrere SQL Abfragen im Editorfenster befinden, dann wird nur die SQL Abfrage ausgeführt, in der sich der Cursor befindet. Ist diese Option nicht gesetzt, dann werden alle SQL Abfragen ausgeführt. Sie können die auszuführenden SQL Abfragen selbst bestimmen, indem Sie diese vor der Ausführung mit der Maus oder Tastatur markieren.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>Führt nur die Abfrage unter dem Cursor aus</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>Updates</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>Prüfe vor dem Start automatisch auf Updates</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>Sitzung</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>Stelle letzte Sitzung nach dem Start wieder her (aktive MDI Fenster)</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation>Statusfeld</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation>Den Panel Status immer öffnen, wenn eine neue Meldung ausgegeben wird</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation>Filtere Tastaturkürzel nach Name oder Tastenkombination</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation>Aktion</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>Tastenkombination</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>Sprache</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation>Die Änderung der Sprache erfordert einen Neustart des Programms.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation>Kompaktes Layout</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation><p>Das kompakte Layout reduziert alle Lücken und Abstände der Oberfläche auf ein Minimum, um mehr Platz für die Darstellung der Daten zu schaffen. Die Oberfläche sieht dann zwar nicht mehr sehr ästhetisch aus, aber man hat mehr Daten im Überblick.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation>Benutze kompaktes Layout</translation> </message> @@ -1308,7 +1301,7 @@ but it's okay to use it.</source> <translation>Zeige Systemtabellen und Indizes in der Liste an</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation>Tabellenfenster</translation> </message> @@ -1317,12 +1310,12 @@ but it's okay to use it.</source> <translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Tabellenfenster der Reiter "Daten" angezeigt statt "Strukturen".</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation>Öffnet das Tabellenfenster mit dem Reiter "Daten" im Vordergrund</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation>Viewfenster</translation> </message> @@ -1331,182 +1324,193 @@ but it's okay to use it.</source> <translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Viewfenster der Reiter "Daten" angezeigt statt "Strukturen".</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation>Öffnet das Viewfenster mit dem Reiter "Daten" im Vordergrund</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation>Dockingbereiche des Hauptfensters</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation>Linke und rechte Bereiche belegen die Ecken</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation>Obere und untere Bereiche belegen die Ecken</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation>Verberge eingebaute Plugins</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>Aktueller Stil:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>Vorschau</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>Aktiviert</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>Deaktiviert</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>Aktives Formatierungsplugin</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>Schriftart des SQL Editors</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>Schriftart der Datenbankliste</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>Zusätzliche Bezeichnungen in der Datenbankliste</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>Schriftart der Ergebnisansicht</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>Schriftart des Statusfelds</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>Farben des SQL Editors</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation>Hintergrundfarbe der aktuellen Zeile</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation><p>SQL Zeichenketten sind mit einfachen Anführungszeichen umschlossen.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation>Vordergrundfarbe von Zeichenketten</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation><p>Bind Parameter sind Platzhalter für Werte, die der Anwender eingibt. Sie haben dabei eine der folgenden Formen:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation>Vordergrundfarbe von Bind Parametern</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation>Hintergrundfarbe von hervorgehobener Klammern</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation><p>BLOB Werte sind hexadezimale Werte wie z.B.:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation>Vordergrundfarbe von BLOB Werten</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation>Reguläre Vordergrundfarbe</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation>Hintergrundfarbe der Zeilennummernleiste</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation>Vordergrundfarbe von Schlüsselwörtern</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation>Vordergrundfarbe von Ziffern</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation>Vordergrundfarbe von Kommentaren</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation><p>Gültige Objekte sind Namen von Tabellen, Indizes, Triggern oder Views die in der SQLite Datenbank existieren.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation>Vordergrundfarbe von gültigen Objekten</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation>Farben der Ergebnisansicht</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> @@ -1523,140 +1527,140 @@ but it's okay to use it.</source> <translation type="vanished"><p>Tritt beim Speichern einer Änderung ein Problem auf, dann wird die problematische Zelle mit dieser Farbe markiert.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation>Rahmenfarbe für fehlerhafte Daten</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation>Vordergrundfarbe für NULL Werte</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation>Hintergrundfarbe von gelöschten Zeilen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation>Farben der Datenbankliste</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation><p>Zusätzliche Bezeichnungen sind solche, die z.B. die SQLite Version oder die Anzahl an Einträgen in einer Baumliste usw. anzeigen.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation>Vordergrundfarbe für zusätzliche Bezeichnungen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation>Farben des Statusfelds</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation>Vordergrundfarbe für Infomeldungen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation>Vordergrundfarbe für Warnmeldungen</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation>Vordergrundfarbe für Fehlermeldungen</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>Bezeichnung:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation>Kategorie:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>Version:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>Autor:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>Interner Name:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>Abhängigkeiten:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation>Konflikte:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation>Plugin Details</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation>Plugins werden direkt beim Aktivieren/Deaktivieren geladen bzw. entfernt, die modifizierte Pluginliste wird jedoch erst beim Bestätigen und Schließen des Konfigurationsfensters gespeichert.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (eingebaut)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>Details</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation>Keine Plugins in dieser Kategorie.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>Neuen Datentypen zufügen</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>Markierten Datentypen umbenennen</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation>Markierten Datentypen löschen</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation>Hilfe zur Konfiguration des Datentypen Editors</translation> </message> @@ -1808,138 +1812,154 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation>Daten filtern</translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation>Gitteransicht</translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation>Formularansicht</translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation>Aktualisiere Tabellendaten</translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>Erste Seite</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>Vorherige Seite</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>Nächste Seite</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>Letzte Seite</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation>Filter anwenden</translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation>Änderungen für die selektierten Zellen speichern</translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation>Änderungen für die selektierten Zellen zurücknehmen</translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation>Zeige Ergebnismenge in der Gitteransicht</translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation>Zeige Ergebnismenge in der Formularansicht</translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation>Nach Text filtern</translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation>Nach regulärem Ausdruck filtern</translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation>Nach einem SQL Ausdruck filtern</translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation>Reiterleiste oben</translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation>Reiterleiste unten</translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation>Neue Zeilen über der ausgewählten Zeile einfügen</translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation>Neue Zeilen nach der ausgewählten Zeile einfügen</translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation>Neue Zeilen am Ende des Datenfensters einfügen</translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation>Gesamtanzahl der Zeilen wird ermittelt. Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>Zeile: %1</translation> </message> @@ -2126,7 +2146,7 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2237,289 +2257,426 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran <translation>Nach Name filtern</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>Alles auswählen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>Gruppe erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>Diese Gruppe löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>Gruppe umbenennen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>Datenbank hinzufügen</translation> + <translation type="vanished">Datenbank hinzufügen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>Datenbank editieren</translation> + <translation type="vanished">Datenbank editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>Datenbank entfernen</translation> + <translation type="vanished">Datenbank entfernen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>Mit der Datenbank verbinden</translation> + <translation type="vanished">Mit der Datenbank verbinden</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>Verbindung zur Datenbank trennen</translation> + <translation type="vanished">Verbindung zur Datenbank trennen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>Import</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>Datenbank exportieren</translation> + <translation type="vanished">Datenbank exportieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>Datenbanktyp konvertieren</translation> + <translation type="vanished">Datenbanktyp konvertieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> <translatorcomment>???</translatorcomment> - <translation>Vakuum</translation> + <translation type="vanished">Vakuum</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>Integritätsprüfung</translation> + <translation type="vanished">Integritätsprüfung</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>Tabelle erstellen</translation> + <translation type="vanished">Tabelle erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>Tabelle editieren</translation> + <translation type="vanished">Tabelle editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>Tabelle löschen</translation> + <translation type="vanished">Tabelle löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>Tabelle exportieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>In die Tabelle importieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>Tabelle füllen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>Erzeuge identische Tabelle</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>Automatischen Zähler zurücksetzen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>Index erstellen</translation> + <translation type="vanished">Index erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>Index editieren</translation> + <translation type="vanished">Index editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>Index löschen</translation> + <translation type="vanished">Index löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>Trigger erstellen</translation> + <translation type="vanished">Trigger erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>Trigger editieren</translation> + <translation type="vanished">Trigger editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>Trigger löschen</translation> + <translation type="vanished">Trigger löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>View erstellen</translation> + <translation type="vanished">View erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>View editieren</translation> + <translation type="vanished">View editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>View löschen</translation> + <translation type="vanished">View löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>Spalte zufügen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>Spalte editieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>Spalte löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>Gewählte Einträge löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>Filter zurücksetzen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>Alle Datenbankschemen aktualisieren</translation> + <translation type="vanished">Alle Datenbankschemen aktualisieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>Alle markierten Datenbankschemen aktualisieren</translation> + <translation type="vanished">Alle markierten Datenbankschemen aktualisieren</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation>Tabellendaten löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>Datenbank</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>Gruppieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation>Abfrage für Tabelle generieren</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>Gruppe erstellen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>Gruppenname</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation>Der Eintrag mit Namen %1 existiert bereits in der Gruppe %2.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>Gruppe löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>Sind Sie sicher, dass Sie die Gruppe %1 löschen möchten? Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation>Sind Sie sicher, dass Sie die Datenbank '%1' aus der Liste entfernen möchten?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation>Sind Sie sicher, dass Sie folgende Datenbanken aus der Liste entfernen möchten: %1</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation>Datenbank entfernen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation>Vacuum (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished">Die Datei '%1' kann nicht für Lesezugriffe geöffnet werden: %2</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Delete database</source> <translation type="obsolete">Datenbank löschen</translation> </message> @@ -2529,14 +2686,14 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t <translation type="obsolete">Sind Sie sicher, dass Sie die Datenbank '%1' entfernen möchten?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Der Import kann nicht durchgeführt werden, da kein Import Plugin geladen ist.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Export fehlgeschlagen, da kein Export Plugins geladen sind.</translation> </message> @@ -2549,22 +2706,22 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t <translation type="obsolete">VACUUM erfolgreich abgeschlossen.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>Integritätsprüfung (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>Autoincrement zurücksetzen</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle '%1' zurücksetzen möchten?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle '%1': %2</translation> </message> @@ -2577,37 +2734,37 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t <translation type="vanished">Sind Sie sicher, dass Sie alle Daten der Tabelle '%1' löschen möchten?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation>Beim Löschen der Daten aus Tabelle '%1' ist folgender Fehler aufgetreten: %2</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation>Es wurden alle Daten aus Tabelle '%1' gelöscht.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>Folgende Objekte werden gelöscht: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>Folgende Datenbanken werden aus der Liste entfernt: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation>Die aus der gelöschten Gruppe verbleibenden Objekte werden an die Position der gelöschten Gruppe verschoben.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%1<br><br>Sind Sie sicher, dass Sie fortfahren möchten?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>Objekte löschen</translation> </message> @@ -2696,75 +2853,75 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t <translation>Trigger (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation>Verschieben</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation>Inklusive Daten</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation>Inklusive Indizes</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation>Inklusive Trigger</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>Abbrechen</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation>Referenzierte Tabellen</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Möchten Sie die folgenden referenzierten Tabellen mit einbeziehen? %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation>Namenskonflikt</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>Folgende Objekte existieren bereits in der Datenbank. Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den Vorgang abzubrechen:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation>SQL Statement Konvertierung</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>Folgender Fehler trat auf bei der Konvertierung von SQL Statements in die SQLite Zielversion:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Möchten Sie diese Fehler ignorieren und fortfahren?</translation> </message> @@ -2820,130 +2977,136 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Abfrage</translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>Verlauf</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>Ergebnisse in separatem Reiter</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>Ergebnisse unter der Abfrage</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>SQL Editor %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>Ergebnisse</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>Abfrage ausführen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation>Abfrage ausführen (explain)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>Ausführungsverlauf löschen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>Ergebnisse exportieren</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>View aus der Abfrage erstellen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>Vorherige Datenbank</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>Nächste Datenbank</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>Nächsten Reiter zeigen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>Vorherigen Reiter zeigen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation>Fokus auf die Ergebnisse unten</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation>Fokus auf den SQL Editor oben</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation>Aktive Datenbank (%1/%2)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation>Abfrage in %1 Sekunde(n) abgeschlossen. %2 Zeile(n) betroffen</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation>Abfrage in %1 Sekunde(n) abgeschlossen.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>Lösche Ausführungsverlauf</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>Sind Sie sicher, dass Sie den gesamten SQL Ausführungsverlauf löschen möchten? Dieser Vorgang kann nicht rückgängig gemacht werden.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Es kann nicht exportiert werden, da kein Export Plugin geladen ist.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation>Es ist keine Datenbank im SQL Editor selektiert. Für eine unbekannte Datenbank kann kein View erzeugt werden.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2971,6 +3134,64 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished">Optionen</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished">SQL Skripte (*.sql);;Alle Dateien (*)</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3121,70 +3342,103 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Optionen des Exportformats</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>Wählen Sie die zu exportierenden Datebank aus.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>Wählen Sie die zu exportierenden Tabellen aus.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translatorcomment>???</translatorcomment> <translation>Geben Sie eine gültige Abfrage für den Export an.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation>Wählen Sie ein zu exportierendes Datebankobjekt aus.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation>Sie müssen einen Namen für die Exportdatei angeben.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Das von Ihnen angegebene Verzeichnis existiert bereits. Es kann nicht überschrieben werden.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation>Das Verzeichnis '%1' existiert nicht.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Die Datei '%1' existiert bereits und wird überschrieben werden.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation>Wählen Sie eine Datei aus in die exportiert werden soll</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Es trat ein interner Fehler während des Exportvorgangs auf. Dies ist ein Fehler, bitte melden Sie ihn dem Programmautor.</translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished">Fehler</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3204,49 +3458,49 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>Zeile speichern (Commit)</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>Zeile rückgängig (Rollback)</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>Erste Zeile</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>Vorherige Zeile</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>Nächste Zeile</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>Letzte Zeile</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>Neue Zeile einfügen</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>Aktuelle Zeile löschen</translation> @@ -3305,13 +3559,13 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Initialisierungsanweisungen:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation>Funktionsanweisungen:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation>Abschlussanweisungen:</translation> </message> @@ -3480,42 +3734,42 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Datenquellenoptionen</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Wenn Sie einen Tabellenname eingeben, der noch nicht existiert, dann wird diese neue Tabelle erzeugt werden.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>Datenbankname eingeben</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>Importplugin auswählen</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>Sie müssen den Namen der Importdatei angeben.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>Die Datei '%1' existiert nicht.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Der von Ihnen angegebene Pfad ist ein Verzeichnis. Es wird jedoch eine Datei benötigt.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>Wählen Sie eine Datei aus von der importiert werden soll.</translation> </message> @@ -3554,12 +3808,12 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Spalte</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation>Kollation</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>Sortierung</translation> </message> @@ -3739,273 +3993,402 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Ansichtenleiste</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation>Konfigurationshelfer</translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation>Syntaxhervorhebungen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>Dateneditoren</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation>Ablauf im Debugmodus. Zum Öffnen der Debugkonsole drücken Sie %1 oder wählen Menü 'Hilfe' den Eintrag 'Debugkonsole öffnen' aus.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation>Ablauf im Debugmodus. Debugmeldungen werden in der Standardausgabe angezeigt..</translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>Das Programm muss neu gestartet werden, damit die Änderung der Sprache wirksam wird.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>SQL Editor öffnen</translation> + <translation type="vanished">SQL Editor öffnen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>DDL Verlauf öffnen</translation> - </message> - <message> - <location filename="../mainwindow.cpp" line="259"/> - <source>Open SQL functions editor</source> - <translation></translation> + <translation type="vanished">DDL Verlauf öffnen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> <source>Open collations editor</source> - <translation>Editor für Kollationen öffnen</translation> + <translation type="vanished">Editor für Kollationen öffnen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>Importieren</translation> + <translation type="vanished">Importieren</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>Exportieren</translation> + <translation type="vanished">Exportieren</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>Einstellungen</translation> + <translation type="vanished">Einstellungen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>Alle Fenster aufteilen</translation> + <translation type="vanished">Alle Fenster aufteilen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>Alle Fenster horizontal aufteilen</translation> + <translation type="vanished">Alle Fenster horizontal aufteilen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>Alle Fenster vertikal aufteilen</translation> + <translation type="vanished">Alle Fenster vertikal aufteilen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>Alle Fenster kaskadiert aufteilen</translation> + <translation type="vanished">Alle Fenster kaskadiert aufteilen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>Nächstes Fenster</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>Vorheriges Fenster</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation>Statusfeld verbergen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>Ausgewähltes Fenster schließen</translation> + <translation type="vanished">Ausgewähltes Fenster schließen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>Alle anderen Fenster schließen</translation> + <translation type="vanished">Alle anderen Fenster schließen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>Alle Fenster schließen</translation> + <translation type="vanished">Alle Fenster schließen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>Zuletzt geöffnetes Fenster wiederherstellen</translation> + <translation type="vanished">Zuletzt geöffnetes Fenster wiederherstellen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>Ausgewähltes Fenster umbenennen</translation> + <translation type="vanished">Ausgewähltes Fenster umbenennen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>Debug Konsole öffnen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation>CSS Konsole öffnen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>Fehler melden</translation> + <translation type="vanished">Fehler melden</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>Eine neue Programmfunktion vorschlagen</translation> + <translation type="vanished">Eine neue Programmfunktion vorschlagen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>Über SQLiteStudio</translation> + <translation type="vanished">Über SQLiteStudio</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>Lizenzen</translation> + <translation type="vanished">Lizenzen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>Homepage aufrufen</translation> + <translation type="vanished">Homepage aufrufen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>Forum aufrufen</translation> + <translation type="vanished">Forum aufrufen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>Bedienungsanleitung</translation> + <translation type="vanished">Bedienungsanleitung</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>SQLite Dokumentation</translation> + <translation type="vanished">SQLite Dokumentation</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>Verlauf gemeldeter Fehler</translation> + <translation type="vanished">Verlauf gemeldeter Fehler</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>Auf Updates prüfen</translation> + <translation type="vanished">Auf Updates prüfen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>Datenbank</translation> + <translation type="vanished">Datenbank</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>Struktur</translation> + <translation type="vanished">Struktur</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>Ansicht</translation> + <translation type="vanished">Ansicht</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>Fensterliste</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>Werkzeuge</translation> + <translation type="vanished">Werkzeuge</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>Hilfe</translation> + <translation type="vanished">Hilfe</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>Der folgende Stil kann nicht gesetzt werden: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Es kann nicht exportiert werden, da kein Export Plugin geladen ist.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Es kann nicht importiert werden, da kein Import Plugin geladen ist.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>Fenster umbenennen</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>Neuen Namen für das Fenster eingeben:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Neues Update verfügbar. <a href="%1">Weitere Details</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>Sie haben bereits die aktuellste Version. Keine Update verfügbar.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation>Die Datenbank, die mittels Programmparameter übergeben wurde (%1), war bereits in der Liste unter dem Namen %2 vorhanden.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>Die Datenbank, die mittels Programmparameter übergeben wurde (%1), wurde in der Liste termporär unter dem Namen %2 zugefügt.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>Die Datenbank %1 konnte nicht hinzugefügt werden.</translation> </message> @@ -4041,23 +4424,28 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>NULL Wert</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation>Konfigurationseditoren für diesen Datentyp</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation>Das Dateneditor Plugin '%1' ist nicht geladen, obwohl es für den '%1' Datentypen als Editor definiert ist.</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation>Gelöscht</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>Nur lesend</translation> @@ -4066,94 +4454,144 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <context> <name>MultiEditorBool</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> <source>Boolean</source> - <translation>Boolean</translation> + <translation type="vanished">Boolean</translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> + <source>Boolean</source> + <translation type="unfinished">Boolean</translation> </message> </context> <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation>Datum</translation> + <translation type="vanished">Datum</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished">Datum</translation> </message> </context> <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation>Datum & Zeit</translation> + <translation type="vanished">Datum & Zeit</translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished">Datum & Zeit</translation> </message> </context> <context> <name>MultiEditorHex</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> <source>Hex</source> - <translation>Hexadezimal</translation> + <translation type="vanished">Hexadezimal</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> + <source>Hex</source> + <translation type="unfinished">Hexadezimal</translation> </message> </context> <context> <name>MultiEditorNumeric</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation>Nummer</translation> + <translation type="vanished">Nummer</translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished">Nummer</translation> </message> </context> <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> <source>Text</source> - <translation>Text</translation> + <translation type="vanished">Text</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translatorcomment>Hier fehlt mir der Kontext... Nacharbeiten nötig.</translatorcomment> <translation>Reiter Änderungen Fokus</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>Ausschneiden</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>Löschen</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation>Rückgängig</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation>Wiederholen</translation> </message> </context> <context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished">Text</translation> + </message> +</context> +<context> <name>MultiEditorTime</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> <source>Time</source> - <translation>Zeit</translation> + <translation type="vanished">Zeit</translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> + <source>Time</source> + <translation type="unfinished">Zeit</translation> </message> </context> <context> @@ -4228,37 +4666,40 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Komponente</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Current version</source> - <translation>Derzeitige Version</translation> + <translation type="vanished">Derzeitige Version</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>Neue Version</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>Beim Programmstart auf Updates prüfen</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>Auf neue Version aktualisieren!</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>Das Update wird automatisch heruntergeladen und installiert. Die Anwendung wird daraufhin neugestartet.</translation> + <translation type="vanished">Das Update wird automatisch heruntergeladen und installiert. Die Anwendung wird daraufhin neugestartet.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>Nicht jetzt.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>Update nicht installieren und Fenster schließen.</translation> </message> @@ -4310,32 +4751,32 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Füllen</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation>Abbrechen</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>Konfigurieren</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation>Die Konfigurationsauffüllung für diese Spalte ist ungültig oder unvollständig.</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation>Wählen Sie die Datebank und Tabelle zum Auffüllen aus</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>Wählen Sie die Tabelle zum Auffüllen aus</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>Sie müssen mindestens eine Spalte auswählen.</translation> </message> @@ -4410,129 +4851,134 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Name der Kollation: %1</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation>Ergebnisansicht</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation>Kopiert Zelleninhalt(e) in die Zwischenablage</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Paste cell(s) contents from clipboard</source> <translation>Fügt Zelleninhalt(e) von der Zwischenablage ein</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="25"/> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation>Fügt einen leeren Wert in die selektierte(n) Zelle(n) ein</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation>Fügt den NULL Wert in die selektierte(n) Zelle(n) ein</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation>Änderungen der Zellenninhalte speichern</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation>Änderungen der Zelleninhalte zurücknehmen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation>Markierte Datenzeile löschen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation>Neue Datenzeile einfügen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation>Inhalt der markierten Zelle im separaten Editor öffnen</translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation>Verfügbare Gesamtseiten: %1</translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation>Insgesamt geladene Zeilen: %1</translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation>Ergebnisansicht (tabellarisch und Formular)</translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation>Daten aktualisieren</translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation>Zur tabellarischen Ergebnisansicht wechseln</translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation>Zur Formularansicht wechseln</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation>Liste der Datenbanken</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation>Gewählten Eintrag löschen</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation>Filter zurücksetzen</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation>Schema aktualisieren</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation>Alle Schemas aktualisieren</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation>Datenbank hinzufügen</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation>Alles auswählen</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation>Gewählte Einträge kopieren</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation>Von der Zwischenablage einfügen</translation> </message> @@ -4607,42 +5053,42 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Derzeitige Zeile löschen</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation>Hauptfenster</translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation>SQL Editor öffnen</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation>Vorheriges Fenster</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation>Nächstes Fenster</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation>Statusfeld verbergen</translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation>Konfigurationsdialog öffnen</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation>Debug Konsole öffnen</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation>CSS Konsole öffnen</translation> </message> @@ -4653,111 +5099,111 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation>Gewählten Text ausschneiden</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation>Gewählten Text kopieren</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation>Gewählten Text löschen</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation>Rückgängig</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation>Wiederholen</translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation>SQL Editor Eingabefeld</translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation>Gesamten Editorinhalt auswählen</translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation>Inhalte in eine Datei speichern</translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation>Inhalte aus einer Datei laden</translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation>Suche im Text</translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation>Nächster Fund</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation>Vorheriger Fund</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation>Ersetze im Text</translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation>Aktuelle Zeile löschen</translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation>Code-Assistenten anfordern</translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation>Format-Inhalte</translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation>Selektierten Textblock eine Zeile nach unten verschieben</translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation>Selektierten Textblock eine Zeile nach oben verschieben</translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation>Selektierten Textblock kopieren und unterhalb einfügen</translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation>Selektierten Textblock kopieren und oberhalb einfügen</translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation>Kommentar umschalten</translation> </message> @@ -4778,15 +5224,13 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Datenbankdatei</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> <source>Reports history window</source> <translatorcomment>Diese Übersetzung muss noch einmal geprüft werden, wenn ich den Kontext dazu kenne.</translatorcomment> - <translation>Report-Verlaufsfenster</translation> + <translation type="vanished">Report-Verlaufsfenster</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation>Gewählten Eintrag löschen</translation> + <translation type="vanished">Gewählten Eintrag löschen</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4834,6 +5278,11 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V <translation>Tastatureingabe-Fokus in das obere SQL Editorfenster setzen</translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation>Tabellenfenster</translation> @@ -5059,180 +5508,180 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>Ausschneiden</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>Kopieren</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>Einfügen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>Löschen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>Alles auswählen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation>Rückgängig</translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation>Wiederholen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation>Komplett</translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>SQL formatieren</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>SQL in Datei speichern</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation>SQL aus Datei laden</translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>Zeile löschen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>Zeile löschen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation>Block nach unten verschieben</translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation>Block nach oben verschieben</translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation>Block nach unten kopieren</translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translatorcomment>"up down" ??? Muss geklärt werden!</translatorcomment> <translation>Kopiere auf ab</translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>Finden</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>Nächster Fund</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>Vorheriger Fund</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>Ersetzen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation>Kommentar umschalten</translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation>SQL Inhalte in Datei speichern: %1</translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation>Die Funktion Autovervollständigung kann nur genutzt werden, wenn eine gültige Datenbank für den SQL Editor gewählt wurde.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation>Der Text im SQL Editor ist sehr groß, daher wurde die Syntaxkontrolle und die farbliche Hervorhebung von Objekten vorübergehend deaktiviert.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>In Datei speichern</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation>Die Datei '%1' kann nicht für Schreibzugriffe geöffnet werden: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation>SQL Skripte (*.sql);;Alle Dateien (*)</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>Datei öffnen</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation>Die Datei '%1' kann nicht für Lesezugriffe geöffnet werden: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>Das Dokumentenende wurde erreicht. Drücken Sie 'Nächster Fund', um die Suche am Dokumentenanfang fortzusetzen.</translation> </message> @@ -5288,24 +5737,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished">Die Zelle kann nicht editiert. Details: %1</translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5313,8 +5762,8 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation> </message> @@ -5327,12 +5776,12 @@ find next</source> <translation type="vanished">Es gibt ungespeicherte Änderungen. Möchten Sie wirklich fortfahren? Alle Änderungen werden dann verloren gehen.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Es können keine Daten für eine Zelle gespeichert werden, die eine bereits geschlossene Datenbank referenziert.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Es kann keine Transaktion auf der Datenbank gestartet werden. Details: %1</translation> </message> @@ -5341,12 +5790,12 @@ find next</source> <translation type="vanished">Fehler beim Committen der Transaktion: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Fehler beim Rollback der Transaktion: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Es wurde versucht eine nicht editierbare Zelle zu committen (derzeit modifiziert und auf das Commit wartend)! Dies ist ein Fehler den Sie melden sollten.</translation> </message> @@ -5355,43 +5804,48 @@ find next</source> <translation type="vanished">Fehler beim Committen der Daten: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Fehler beim Ausführen der SQL-Abfrage auf der Datenbank '%1': %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation>Fehler beim Laden der Abfrageergebnisse: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation>Mehrere Zeilen einfügen</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation>Anzahl an Zeilen zum Einfügen:</translation> </message> @@ -5399,117 +5853,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>Kopieren als...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>Einfügen als...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>NULL Wert setzen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>Werte löschen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation>Wert im Editor bearbeiten</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>Commit</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>Rollback</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation>Gewählte Zellen speichern</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation>Gewählte Zellen wiederherstellen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation>Sortierspalten definieren</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation>Benutzerdefinierte Sortierung entfernen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>Zeile einfügen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>Mehrere Zeilen einfügen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>Gewählte Zeile löschen</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation>Es sind keine Elemente selektiert in die der Inhalt der Zwischenablage eingefügt werden könnte.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>Werte editieren</translation> </message> @@ -5532,6 +6006,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished">Datenbanken</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished">In allen Datenbanken registrieren</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished">In den folgenden Datenbanken registrieren:</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished">Alle Dateien (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished">Datei öffnen</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5639,7 +6226,7 @@ but it's okay to use them anyway.</source> <translation type="unfinished">Geben Sie einen Namen für die Bedingung ein.</translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation type="unfinished"></translation> @@ -5693,24 +6280,24 @@ but it's okay to use them anyway.</source> <translation type="unfinished">Bei Konflikt</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation type="unfinished">Sortierung</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation type="unfinished">Mindestens eine Spalte auswählen.</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation type="unfinished">Geben Sie einen Namen für die Bedingung ein.</translation> </message> @@ -6269,7 +6856,7 @@ Are you sure you want to create a table with blank name?</source> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6314,7 +6901,7 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation type="unfinished">DDL</translation> </message> @@ -6393,18 +6980,18 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation type="unfinished">Trigger</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation type="unfinished">DDL</translation> </message> @@ -6436,125 +7023,125 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished">Spalte nach oben verschieben</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished">Spalte nach unten verschieben</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation type="unfinished">Trigger Liste aktualisieren</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation type="unfinished">Trigger erstellen</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation type="unfinished">Trigger editieren</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation type="unfinished">Trigger löschen</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation type="unfinished"></translation> </message> @@ -6563,101 +7150,101 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="obsolete">Nicht gespeicherte Änderungen</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation type="unfinished">Name</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished">Details</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts index 2771e77..fc3f218 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts @@ -14,11 +14,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> - <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> <source>Licenses</source> <translation type="unfinished"></translation> @@ -59,6 +54,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation type="unfinished"></translation> @@ -90,258 +90,15 @@ </message> </context> <context> - <name>BugDialog</name> - <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> - <source>Bugs and ideas</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> - <source>Reporter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> - <source>E-mail address</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> - <source>Short description</source> - <translation type="unfinished"></translation> - </message> + <name>BindParamsDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> - <source>Detailed description</source> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> - <source>Show more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> - <source>SQLiteStudio version</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> - <source>Operating system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> - <source>Loaded plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> - <source>Send</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> - <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> - <source>A bug report sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> - <source>An error occurred while sending a bug report: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> - <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> - <source>An idea proposal sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> - <source>An error occurred while sending an idea proposal: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> - <source>A bug report</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> - <source>Describe problem in few words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> - <source>Describe problem and how to reproduce it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> - <source>A new feature idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> - <source>A title for your idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> - <source>Describe your idea in more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> - <source>Reporting as an unregistered user, using e-mail address.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> - <source>Reporting as a registered user.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> - <source>Log out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> - <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> - <source>Enter vaild e-mail address, or log in.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> - <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> - <source>Long description requires at least 30 characters.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportHistoryWindow</name> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Title</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Reported at</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>URL</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> - <source>Reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> - <source>Clear reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> - <source>Invalid response from server.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportLoginDialog</name> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> - <source>Credentials</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> - <source>Login:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> - <source>Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> - <source>Validation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> - <source>Validate</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> - <source>Validation result message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> - <source>Abort</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> - <source>A login must be at least 2 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> - <source>A password must be at least 5 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> - <source>Valid</source> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> <translation type="unfinished"></translation> </message> </context> @@ -353,12 +110,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation type="unfinished"></translation> </message> @@ -483,11 +240,16 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> - <source>Invalid default value expression: %1</source> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -599,7 +361,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation type="unfinished"></translation> @@ -659,34 +421,44 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -787,12 +559,6 @@ but it's okay to use it.</source> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> - <source>Autoincrement (only for %1 type columns)</source> - <comment>column primary key</comment> - <translation type="unfinished"></translation> - </message> </context> <context> <name>ColumnUniqueAndNotNullPanel</name> @@ -903,7 +669,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> @@ -993,215 +759,215 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation type="unfinished"></translation> </message> @@ -1277,350 +1043,372 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation type="unfinished"></translation> </message> @@ -1772,137 +1560,153 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation type="unfinished"></translation> </message> @@ -2081,7 +1885,7 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2183,352 +1987,397 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> - <source>Add a database</source> + <location filename="../dbtree/dbtree.cpp" line="145"/> + <source>Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> - <source>Edit the database</source> + <location filename="../dbtree/dbtree.cpp" line="153"/> + <source>Export the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> - <source>Remove the database</source> + <location filename="../dbtree/dbtree.cpp" line="154"/> + <source>Import into the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> - <source>Connect to the database</source> + <location filename="../dbtree/dbtree.cpp" line="155"/> + <source>Populate table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> - <source>Disconnect from the database</source> + <location filename="../dbtree/dbtree.cpp" line="156"/> + <source>Create similar table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> - <source>Import</source> + <location filename="../dbtree/dbtree.cpp" line="157"/> + <source>Reset autoincrement sequence</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> - <source>Export the database</source> + <location filename="../dbtree/dbtree.cpp" line="167"/> + <source>Add a column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> - <source>Convert database type</source> + <location filename="../dbtree/dbtree.cpp" line="168"/> + <source>Edit the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> - <source>Vacuum</source> + <location filename="../dbtree/dbtree.cpp" line="169"/> + <source>Delete the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> - <source>Integrity check</source> + <location filename="../dbtree/dbtree.cpp" line="170"/> + <source>Delete selected items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> - <source>Create a table</source> + <location filename="../dbtree/dbtree.cpp" line="171"/> + <source>Clear filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> - <source>Edit the table</source> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Erase table data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> - <source>Delete the table</source> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> + <source>Database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> - <source>Export the table</source> + <location filename="../dbtree/dbtree.cpp" line="370"/> + <source>Grouping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> - <source>Import into the table</source> + <location filename="../dbtree/dbtree.cpp" line="375"/> + <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> - <source>Populate table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Create group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> - <source>Create similar table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <source>Group name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> - <source>Reset autoincrement sequence</source> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Entry with name %1 already exists in group %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> - <source>Create an index</source> + <location filename="../dbtree/dbtree.cpp" line="1107"/> + <source>Delete group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> - <source>Edit the index</source> + <location filename="../dbtree/dbtree.cpp" line="1108"/> + <source>Are you sure you want to delete group %1? +All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> - <source>Delete the index</source> + <location filename="../dbtree/dbtree.cpp" line="1171"/> + <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> - <source>Create a trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1179"/> + <source>Are you sure you want to remove following databases from the list: +%1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> - <source>Edit the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1181"/> + <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> - <source>Delete the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1487"/> + <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> - <source>Create a view</source> + <location filename="../dbtree/dbtree.cpp" line="1546"/> + <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> - <source>Edit the view</source> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> - <source>Delete the view</source> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> + <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> - <source>Add a column</source> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> - <source>Edit the column</source> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> - <source>Delete the column</source> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> - <source>Delete selected items</source> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> - <source>Clear filter</source> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> - <source>Refresh all database schemas</source> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> - <source>Refresh selected database schema</source> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Erase table data</source> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> - <source>Database</source> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> - <source>Grouping</source> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> - <source>Generate query for table</source> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Create group</source> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <source>Group name</source> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Entry with name %1 already exists in group %2.</source> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> - <source>Delete group</source> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> - <source>Are you sure you want to delete group %1? -All objects from this group will be moved to parent group.</source> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> - <source>Are you sure you want to remove database '%1' from the list?</source> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> - <source>Are you sure you want to remove following databases from the list: -%1</source> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> - <source>Remove database</source> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> - <source>Vacuum (%1)</source> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> - <source>Autoincrement value for table '%1' has been reset successfully.</source> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Are you sure you want to delete all data from table(s): %1?</source> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> - <source>Cannot import, because no import plugin is loaded.</source> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DbTreeItemDelegate</name> @@ -2614,74 +2463,74 @@ All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2735,130 +2584,136 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2882,6 +2737,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3030,69 +2943,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3112,49 +3058,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation type="unfinished"></translation> @@ -3213,13 +3159,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation type="unfinished"></translation> </message> @@ -3383,42 +3329,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3457,12 +3403,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation type="unfinished"></translation> </message> @@ -3641,273 +3587,278 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> - <source>Open SQL editor</source> + <location filename="../mainwindow.cpp" line="247"/> + <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> - <source>Open DDL history</source> + <location filename="../mainwindow.cpp" line="248"/> + <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> - <source>Open SQL functions editor</source> + <location filename="../mainwindow.cpp" line="249"/> + <source>Hide status field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> - <source>Open collations editor</source> + <location filename="../mainwindow.cpp" line="257"/> + <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> - <source>Import</source> + <location filename="../mainwindow.cpp" line="258"/> + <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> - <source>Export</source> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> - <source>Open configuration dialog</source> + <location filename="../mainwindow.cpp" line="352"/> + <source>Window list</source> + <comment>menubar view menu</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> - <source>Tile windows</source> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> - <source>Tile windows horizontally</source> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> - <source>Tile windows vertically</source> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> - <source>Cascade windows</source> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> - <source>Next window</source> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> - <source>Previous window</source> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> - <source>Hide status field</source> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> - <source>Close selected window</source> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> - <source>Close all windows but selected</source> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> - <source>Close all windows</source> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> - <source>Restore recently closed window</source> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> - <source>Rename selected window</source> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> - <source>Open Debug Console</source> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> - <source>Open CSS Console</source> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> - <source>Report a bug</source> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> - <source>Propose a new feature</source> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> - <source>About</source> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> - <source>Licenses</source> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> - <source>Open home page</source> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> - <source>Open forum page</source> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> - <source>User Manual</source> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> - <source>SQLite documentation</source> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> - <source>Report history</source> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> - <source>Check for updates</source> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> - <source>Database</source> - <comment>menubar</comment> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> - <source>Structure</source> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> - <source>View</source> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> - <source>Window list</source> - <comment>menubar view menu</comment> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> - <source>Tools</source> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> - <source>Help</source> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3939,64 +3890,69 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorBool</name> + <name>MultiEditorBoolPlugin</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> <source>Boolean</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDate</name> + <name>MultiEditorDatePlugin</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> + <location filename="../multieditor/multieditordate.cpp" line="86"/> <source>Date</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDateTime</name> + <name>MultiEditorDateTimePlugin</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> <source>Date & time</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorHex</name> + <name>MultiEditorHexPlugin</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> <source>Hex</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorNumeric</name> + <name>MultiEditorNumericPlugin</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> <source>Number</source> <comment>numeric multi editor tab name</comment> <translation type="unfinished"></translation> @@ -4005,50 +3961,53 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> - <source>Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorTime</name> + <name>MultiEditorTextPlugin</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> <source>Time</source> <translation type="unfinished"></translation> </message> @@ -4125,37 +4084,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> - <source>Current version</source> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> - <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation type="unfinished"></translation> </message> @@ -4207,32 +4161,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation type="unfinished"></translation> </message> @@ -4307,129 +4261,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> - <source>Paste cell(s) contents from clipboard</source> + <source>Copy cell(s) contents together with header to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="25"/> + <source>Paste cell(s) contents from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation type="unfinished"></translation> </message> @@ -4504,42 +4463,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> @@ -4550,111 +4509,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4675,16 +4634,6 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> - <source>Reports history window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../windows/editorwindow.h" line="26"/> <source>SQL editor window</source> <translation type="unfinished"></translation> @@ -4730,6 +4679,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation type="unfinished"></translation> @@ -4947,179 +4901,179 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation type="unfinished"></translation> </message> @@ -5167,24 +5121,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5192,69 +5146,74 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -5262,117 +5221,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5391,6 +5370,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5498,7 +5590,7 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation type="unfinished"></translation> @@ -5552,24 +5644,24 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -6120,7 +6212,7 @@ Are you sure you want to create a table with blank name?</source> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6165,7 +6257,7 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6243,18 +6335,18 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6286,224 +6378,224 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm Binary files differindex 71a632e..0f02e29 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts index 8a46630..aec2cac 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts @@ -6,7 +6,7 @@ <message> <location filename="../dialogs/aboutdialog.ui" line="14"/> <source>About SQLiteStudio and licenses</source> - <translation>À propos de SQLiteStudio et ses licences</translation> + <translation>À propos de SQLiteStudio et des licences</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="24"/> @@ -14,9 +14,13 @@ <translation>À propos de…</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Libre, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Auteur et maintenance:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Libre, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Auteur et maintenance:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -51,7 +55,7 @@ <message> <location filename="../dialogs/aboutdialog.ui" line="172"/> <source>SQLite 3 version:</source> - <translation type="unfinished"></translation> + <translation>Version de SQLite 3 :</translation> </message> <message> <source>SQLite 3 version :</source> @@ -70,7 +74,7 @@ <message> <location filename="../dialogs/aboutdialog.cpp" line="39"/> <source>Portable distribution.</source> - <translation>Version portable</translation> + <translation>Version portable.</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="42"/> @@ -80,7 +84,7 @@ <message> <location filename="../dialogs/aboutdialog.cpp" line="45"/> <source>Operating system managed distribution.</source> - <translation>Operating system managed distribution</translation> + <translation>Distribution gérée par le système d'exploitation.</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="89"/> @@ -94,260 +98,220 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Bugs et idées</translation> + <translation type="vanished">Bugs et idées</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>Rapport</translation> + <translation type="vanished">Rapport</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>Adresse électronique</translation> + <translation type="vanished">Adresse électronique</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>S’identifier</translation> + <translation type="vanished">S’identifier</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>Description brève</translation> + <translation type="vanished">Description brève</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>Description détaillée</translation> + <translation type="vanished">Description détaillée</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>Montrer plus de détails</translation> + <translation type="vanished">Montrer plus de détails</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>Version SQLiteStudio</translation> + <translation type="vanished">Version de SQLiteStudio</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>Système d’exploitation</translation> + <translation type="vanished">Système d’exploitation</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>Plugins chargés</translation> + <translation type="vanished">Plugins chargés</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>Envoyez</translation> + <translation type="vanished">Envoyer</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation>Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu « %1 » puis « %2 ».</translation> + <translation type="vanished">Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu « %1 » puis « %2 ».</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Rapport de bogue envoyé avec succès</translation> + <translation type="vanished">Rapport de bogue envoyé avec succès</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>Une erreur est survenue lors de l’envoi du rapport de bogue : %1 + <translation type="vanished">Une erreur est survenue lors de l’envoi du rapport de bogue : %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>Vous pouvez réexpédier. Le contenu sera restoré lorsque vous ouvrirez le dialogue du rapport après une telle erreur.</translation> + <translation type="vanished">Vous pouvez essayer à nouveau. Le contenu sera restauré lorsque vous ouvrirez le dialogue du rapport après une telle erreur.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>L’idée proposée à été envoyée avec succès.</translation> + <translation type="vanished">L’idée proposée à été envoyée avec succès.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>Une erreeur est survenu lors de l’envoi de l’idée proposée : %1 %2</translation> + <translation type="vanished">Une erreeur est survenu lors de l’envoi de l’idée proposée : %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Rapport de bug</translation> + <translation type="vanished">Rapport de bug</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>Décrivez le problème en queques mots</translation> + <translation type="vanished">Décrivez le problème en queques mots</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>Décriver le problem et comment le reproduire</translation> + <translation type="vanished">Décrivez le problème et comment le reproduire</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>Une nouvelle idée de fonctionalité</translation> + <translation type="vanished">Une nouvelle idée de fonctionalité</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>Un titre pour votre idée</translation> + <translation type="vanished">Un titre pour votre idée</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>Décrivez votre idée avec plus de détails</translation> + <translation type="vanished">Décrivez votre idée avec plus de détails</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>Rapport comme nouvel utilisateur, avec une adresse mail.</translation> + <translation type="vanished">Envoyer le rapport comme nouvel utilisateur, avec une adresse mail.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>Rapport comme utilisateur enregistré.</translation> + <translation type="vanished">Envoyer le rapport comme utilisateur enregistré.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>Déconnexion</translation> + <translation type="vanished">Déconnexion</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>En fournissant un mail existant il sera possible de vous contacterau sujet du rapport. Pour en savoir plus, clic sur le bouton « help » sur le coté droit.</translation> + <translation type="vanished">En fournissant un mail existant il sera possible de vous contacter au sujet du rapport. Pour en savoir plus, clic sur le bouton « help » sur le coté droit.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>Entrez un email valide ou connectez-vous.</translation> + <translation type="vanished">Entrez un email valide ou connectez-vous.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>Une description courte nécessite au moins 10 caractères, mais pas plus de 100. La longueur de la description ne peut être contenue dans ce champ.</translation> + <translation type="vanished">Une description courte nécessite au moins 10 caractères, mais pas plus de 100. La longueur de la description ne peut être contenue dans ce champ.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>Une descption longue require au moins 30 caractères.</translation> + <translation type="vanished">Une descption longue requiert au moins 30 caractères.</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>Titre</translation> + <translation type="vanished">Titre</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>Reporté à</translation> + <translation type="vanished">Rapport envoyé à</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>Historique de rapports</translation> + <translation type="vanished">Historique de rapports</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>Vider l’historique de rapports</translation> + <translation type="vanished">Vider l’historique des rapports</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>Supprimer l’entrée sélectionnée</translation> + <translation type="vanished">Supprimer l’entrée sélectionnée</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>Réponse invalide du serveur.</translation> + <translation type="vanished">Réponse invalide du serveur.</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>Connexion</translation> + <translation type="vanished">Connexion</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation>Certifications</translation> + <translation type="vanished">Identités</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>Identification :</translation> + <translation type="vanished">Identification :</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>Mot de passe :</translation> + <translation type="vanished">Mot de passe :</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation>Validation</translation> + <translation type="vanished">Validation</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation>Valider</translation> + <translation type="vanished">Valider</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>Message de validation</translation> + <translation type="vanished">Message de validation</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>Abandonner</translation> + <translation type="vanished">Abandonner</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>Un identifiant dois avoir au moins 2 caractères.</translation> + <translation type="vanished">Un identifiant doit avoir au moins 2 caractères.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>Un mot de passe doit avoir au moins 5 caractères.</translation> + <translation type="vanished">Un mot de passe doit avoir au moins 5 caractères.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>Valide</translation> + <translation type="vanished">Valide</translation> </message> </context> <context> @@ -355,15 +319,15 @@ <message> <location filename="../windows/collationseditor.ui" line="75"/> <source>Filter collations</source> - <translation>Filtre de regroupements</translation> + <translation>Filtre de collation</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> - <translation>Nom de regroupements :</translation> + <translation>Nom de collation :</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation>Language d’implémentation :</translation> </message> @@ -375,7 +339,7 @@ <message> <location filename="../windows/collationseditor.ui" line="138"/> <source>Register in all databases</source> - <translation>Inscrire daans toutes les bases de données</translation> + <translation>Inscrire dans toutes les bases de données</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="145"/> @@ -385,61 +349,57 @@ <message> <location filename="../windows/collationseditor.ui" line="166"/> <source>Implementation code:</source> - <translation>Code d’inplémentation :</translation> + <translation>Code d’implémentation :</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="52"/> <source>Collations editor</source> - <translation>Éditeur de regroupement</translation> + <translation>Éditeur de collation</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="57"/> <source>Commit all collation changes</source> - <translation>Enregistrer les motifications de regroupement</translation> + <translation>Enregistrer les motifications de collation</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="58"/> <source>Rollback all collation changes</source> - <translation>Annuler toutes les modifications de regroupement</translation> + <translation>Annuler toutes les modifications de collation</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="60"/> <source>Create new collation</source> - <translation>Création de regroupement</translation> + <translation>Création de collation</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="61"/> <source>Delete selected collation</source> - <translation>Supprimer le regroupement sélectionné</translation> + <translation>Supprimer la collation sélectionnée</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="63"/> <source>Editing collations manual</source> - <translation>Modification manuelle de regroupement</translation> + <translation>Manuel pour l'édition de collations</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="283"/> <source>Enter a non-empty, unique name of the collation.</source> - <translation>Saississez un nom unique, non vide, de regroupement.</translation> + <translation>Saisissez un nom unique, non vide, de regroupement.</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="291"/> <source>Pick the implementation language.</source> - <translation>Prendre le language d’inplémentation.</translation> + <translation>Choisir le language d’implémentation.</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="294"/> <source>Enter a non-empty implementation code.</source> - <translation>Saississez un nom, non vide, de language d’implémentation.</translation> + <translation>Saisissez un nom, non vide, de language d’implémentation.</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="388"/> <source>Collations editor window has uncommitted modifications.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Collations editor window has uncommited modifications.</source> - <translation type="vanished">L’éditeur de regroupement n’as pas enregistré les modifications.</translation> + <translation type="unfinished">L’éditeur de collations a des modifications non enregistrées.</translation> </message> </context> <context> @@ -447,7 +407,7 @@ <message> <location filename="../common/colorbutton.cpp" line="29"/> <source>Pick a color</source> - <translation>Coisir une couleur</translation> + <translation>Choisir une couleur</translation> </message> </context> <context> @@ -455,12 +415,12 @@ <message> <location filename="../constraints/columncollatepanel.ui" line="41"/> <source>Collation name:</source> - <translation>Nom de la jointure :</translation> + <translation>Nom de la collation :</translation> </message> <message> <location filename="../constraints/columncollatepanel.ui" line="73"/> <source>Named constraint:</source> - <translation>Constante nommée :</translation> + <translation>Contrainte nommée :</translation> </message> <message> <location filename="../constraints/columncollatepanel.cpp" line="80"/> @@ -470,7 +430,7 @@ <message> <location filename="../constraints/columncollatepanel.cpp" line="81"/> <source>Enter a collation name.</source> - <translation>Saisir le nom de la jointure.</translation> + <translation>Saisir le nom de la collation.</translation> </message> </context> <context> @@ -488,17 +448,26 @@ <message> <location filename="../constraints/columndefaultpanel.cpp" line="39"/> <source>Enter a default value expression.</source> - <translation>Saississez l’expression d’une valeur par défaut.</translation> + <translation>Saisissez l’expression d’une valeur par défaut.</translation> </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Invalid default value expression: %1</source> - <translation>Invalide expression d’une valeur par défaut : %1</translation> + <translation type="vanished">Expression invalide pour une valeur par défaut : %1</translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> - <translation>Saississez un nom de contrainte.</translation> + <translation>Saisir un nom de contrainte.</translation> </message> </context> <context> @@ -567,7 +536,7 @@ <message> <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> - <translation>Jointure</translation> + <translation>Collation</translation> </message> <message> <location filename="../dialogs/columndialog.ui" line="150"/> @@ -577,7 +546,7 @@ <message> <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> - <translation>Vérifiez la contition</translation> + <translation>Vérifier la condition</translation> </message> <message> <location filename="../dialogs/columndialog.ui" line="164"/> @@ -608,7 +577,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation>Supprimer la contrainte</translation> @@ -641,13 +610,13 @@ <location filename="../dialogs/columndialog.cpp" line="94"/> <source>Add an unique constraint</source> <comment>column dialog</comment> - <translation>Ajouter une contrainte unique</translation> + <translation>Ajouter une contrainte d'unicité</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="95"/> <source>Add a check constraint</source> <comment>column dialog</comment> - <translation>Ajouter un contrôle de la contrainte</translation> + <translation>Ajouter une contrainte de contrôle</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="96"/> @@ -668,35 +637,45 @@ <translation>Ajouter une contrainte par défaut</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>Êtes-vous sûr de vouloir supprimer la contrainte « %1 » ?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation>Corrigez la configuration de la contrainte.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation>Cette contrainte n’est pas supportée officiellement par SQLite 2, mais c’est OK pour l’utiliser.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -719,7 +698,7 @@ mais c’est OK pour l’utiliser.</translation> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/> <source>Details</source> <comment>column dialog constraints</comment> - <translation>Details</translation> + <translation>Détails</translation> </message> </context> <context> @@ -757,17 +736,17 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="40"/> <source>Pick the foreign table.</source> - <translation>Sélectionner une table étrangère.</translation> + <translation>Sélectionner la table étrangère.</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="41"/> <source>Pick the foreign column.</source> - <translation>Séléctionner une colonne étrangère.</translation> + <translation>Sélectionner la colonne étrangère.</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="42"/> <source>Enter a name of the constraint.</source> - <translation>Saississez un nom de contraite.</translation> + <translation>Saisir un nom de contraite.</translation> </message> </context> <context> @@ -790,18 +769,17 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="111"/> <source>On conflict:</source> - <translation>Sur conflit :</translation> + <translation>En cas de conflit :</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.cpp" line="87"/> <source>Enter a name of the constraint.</source> - <translation>Saississez le nom d’une contrainte.</translation> + <translation>Saisissez le nom d’une contrainte.</translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation>Auto-incrémentation (seulement pour %1 colonne type)</translation> + <translation type="vanished">Auto-incrémentation (seulement pour %1 colonne type)</translation> </message> </context> <context> @@ -814,12 +792,12 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/> <source>On conflict:</source> - <translation>Sur conflit :</translation> + <translation>En cas de conflit :</translation> </message> <message> <location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/> <source>Enter a name of the constraint.</source> - <translation>Saississez un nom de contrainte.</translation> + <translation>Saisissez un nom de contrainte.</translation> </message> </context> <context> @@ -852,7 +830,7 @@ mais c’est OK pour l’utiliser.</translation> <location filename="../completer/completerwindow.cpp" line="167"/> <source>View: %1</source> <comment>completer statusbar</comment> - <translation>Vue %1</translation> + <translation>Vue : %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="169"/> @@ -894,13 +872,13 @@ mais c’est OK pour l’utiliser.</translation> <location filename="../completer/completerwindow.cpp" line="191"/> <source>Binary data</source> <comment>completer statusbar</comment> - <translation>Données binaire</translation> + <translation>Données binaires</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="193"/> <source>Collation: %1</source> <comment>completer statusbar</comment> - <translation>Regroupement : %1</translation> + <translation>Collation : %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="195"/> @@ -913,7 +891,7 @@ mais c’est OK pour l’utiliser.</translation> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>Configuration</translation> </message> @@ -935,7 +913,7 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../dialogs/configdialog.ui" line="118"/> <source>Look & feel</source> - <translation>Aspet</translation> + <translation>Apparence</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="129"/> @@ -960,17 +938,17 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../dialogs/configdialog.ui" line="213"/> <source>Code formatters</source> - <translation>Formatage code</translation> + <translation>Formateurs de code</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="178"/> <source>Data browsing</source> - <translation>Navigation données</translation> + <translation>Navigation de données</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="189"/> <source>Data editors</source> - <translation>Éditeur de données</translation> + <translation>Éditeurs de données</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="418"/> @@ -978,202 +956,194 @@ mais c’est OK pour l’utiliser.</translation> <translation>Navigateur et éditeur de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>Nombre de lignes de données par page :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation><p>Lorsque les données sont lues dans le tableau, la largeur est automatiquement ajustée. Cette valeur limite la largeur initiale pour l’ajustement, mais l’utilisateur peut recadrer les colonnes manuellement au-dessus de cette limite.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation>Limite initiale de la largeur de la colonne de données (en pixel) :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> - <translation type="unfinished"></translation> + <translation>Insertion d'une nouvelle ligne dans la grille de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> - <translation type="unfinished"></translation> + <translation>Avant la ligne courante</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> - <translation type="unfinished"></translation> + <translation>Après la ligne courante</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> - <translation type="unfinished"></translation> + <translation>À la fin de la vue de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> - <translation type="unfinished"></translation> + <translation>Placer l'onglet Données en premier dans les fenêtres de tables</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>Types de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>Éditeurs disponibles :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation>Éditeur sélectionné pour ce type de données :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>Edition de schéma</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>Nombre de DDL modifiés gardés dans l’historique.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>Dimension de l’historique DDL :</translation> </message> <message> - <source>Don't show DDL preview dialog when commiting schema changes</source> - <translation type="vanished">Ne pas montrer la présualisation DDL pendant l’enregistrement du schéma modifié</translation> - </message> - <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>Requêtes SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>Nombre de requêtes gardées dans l’historique.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>Dimension de l’historique :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>S’il y a plus d’une requête dans l’éditeur SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d’insertion. Autrement toutes les requêtes seront exécutées. Vous pouvez limiter le nombre de requêtes devant être exécutées en sélectionnant ces requêtes avant leur exécution.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>Exécuter seulement la requête sous le curseur</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>Mises à jour</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>Contrôle automatique des mises à jour au lancement</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>Session</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>Restaurer la dernière session (Fenêtre MDI active) après lancement</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation>Filtre par nom raccourci ou combinaison de touches</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation>Action</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>Combinaison de touches</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>Langage</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> - <translation>Le changement de langage requiére le redemarrage de l’application pour prendre effet.</translation> + <translation>Le changement de langage requiert le redémarrage de l’application pour prendre effet.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation>Présentation compacte</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation>Utiliser la présentation compacte</translation> </message> <message> - <source>General.CompactLayout</source> - <translation type="vanished">Général.PrésentationCompacte</translation> - </message> - <message> <location filename="../dialogs/configdialog.ui" line="166"/> <location filename="../dialogs/configdialog.ui" line="239"/> <source>Database list</source> @@ -1192,7 +1162,7 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../dialogs/configdialog.ui" line="258"/> <source>Expand tables node when connected to a database</source> - <translation>Déployez le noeud des tables lors de la connexion de la base de données</translation> + <translation>Développer le nœud des tables lors de la connexion de la base de données</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="268"/> @@ -1202,7 +1172,7 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../dialogs/configdialog.ui" line="271"/> <source>Display additional labels on the list</source> - <translation>Afficher des labels supplémentaires à la liste </translation> + <translation>Afficher des labels supplémentaires dans la liste </translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="286"/> @@ -1227,12 +1197,12 @@ mais c’est OK pour l’utiliser.</translation> <message> <location filename="../dialogs/configdialog.ui" line="315"/> <source>Expand views node when connected to a database</source> - <translation>Etendre le noeud des vues lorsque la base de données est connectée</translation> + <translation>Développer le nœud des vues lorsque la base de données est connectée</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="325"/> <source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source> - <translation>Si cette option est déactivée, les objets seront triés pour qu’ ils apparaissent dans la table sqlite_master (dans l’ordre de création)</translation> + <translation>Si cette option est désactivée, les objets seront triés pour qu’ ils apparaissent dans la table sqlite_master (dans l’ordre de création)</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="328"/> @@ -1270,395 +1240,397 @@ mais c’est OK pour l’utiliser.</translation> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> - <source>Show column and row details tooltip in data view</source> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> - <source>Table windows</source> - <translation>Fenêtre de ta table</translation> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> </message> <message> - <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source> - <translation type="vanished">Lorsque c’est permis, la fenêtre des tables sera affichée avec l’onglet des données, à la place de l’onglet structure.</translation> + <location filename="../dialogs/configdialog.ui" line="505"/> + <source>Show column and row details tooltip in data view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="595"/> + <source>Table windows</source> + <translation>Fenêtres de tables</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> - <translation>Ourerture la fenêtre de table avec l’onglet des données au départ</translation> + <translation>Sélectionner l'onglet de données lors de l'ouverture d'une fenêtre de table</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation>Fenêtre de vue</translation> </message> <message> - <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source> - <translation type="vanished">Lorsque c’est permis, la fenêtre des vues sera affichée avec l’onglet des données, à la place de l’onglet structure.</translation> - </message> - <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> - <translation>Ourerture la fenêtre de vue avec l’onglet des données au départ</translation> + <translation>Sélectionner l'onglet de données lors de l'ouverture d'une fenêtre de vue</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation>Cacher des plugins incorporés</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>Style actuel :</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>Aperçu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>En service</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>Hors service</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>Plugin de formattage actif</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>Police de caractères de l’éditeur SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>Liste des polices de caractères de base de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>Police de caractères additionelle de la liste des bases de données </translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>Police de caractères des données de vue</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>Police de caractères du champ d’état</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>Couleurs de l’éditeur SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> - <translation>Fond actuel de la ligne</translation> + <translation>Arrière plan pour la ligne courante</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation><p>Les chaines SQL sont encadrées avec de caractères simple quote.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation>Avant plan chaine</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation><p>Les paramètres fournis par l’utilisateur sont passés par valeur. Ils ont l’une de ces formes : </p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> - <translation>Premier plan de paramètre de lien</translation> + <translation>Premier plan pour les paramètres de lien</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation>Parenthèses surlignées</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation><p>les valeurs BLOB sont binaire représentés comme nombres hexadécimaux, comme : </p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> - <translation>Premier plan de valeur BLOB</translation> + <translation>Premier plan pour les valeurs BLOB</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> - <translation>Avant plan courant</translation> + <translation>Avant plan par défaut</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> - <translation>Zone des numéros de ligne en arrière plan</translation> + <translation>Arrière plan pour la zone des numéros de ligne</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> - <translation>Mot-clef en avant plan</translation> + <translation>Premier plan pour les mots-cléfs</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> - <translation>Nombre en avant plan</translation> + <translation>Premier plan pour les nombres</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> - <translation>Commentaire en avant plan</translation> + <translation>Premier plan pour les commentaires</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation><p>Les objets valides sont les nom de tables, index, déclencheurs, ou vues qui existent dans la base de données SQLite.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> - <translation>Objets valides en avant plan</translation> + <translation>Premier plan pour les objets valides</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation>Couleurs de vue de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> <message> - <source><p>Any data changes will be outlined with this color, until they're commited to the database.</p></source> - <translation type="vanished"><p>Toutes les modifications de données seront écrits avec cette couleur, à l’enregistrement de la base de données.</p></translation> - </message> - <message> - <source>Uncommited data outline color</source> - <translation type="vanished">Annulation de la couleur des données</translation> - </message> - <message> - <source><p>In case of error while commiting data changes, the problematic cell will be outlined with this color.</p></source> - <translation type="vanished"><p>En cas de l’erreur à l’enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.</p></translation> - </message> - <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> - <translation>Erreur d’enregistrement du surlignage</translation> + <translation>Surlignage pour les erreurs de commit</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> - <translation>Valeur NULL au premier plan</translation> + <translation>Premier plan pour la valeur NULL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> - <translation>Ligne supprimée en arrier plan</translation> + <translation>Arrière-plan pour une ligne supprimée</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> - <translation>Liste de couleurs des bases de données</translation> + <translation>Couleurs pour la liste des bases de données</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation><p>Des labels supplémentaires indique la version SQLITE, le nombre d’objets au nievau inférieur, etc.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> - <translation>Labels additionels en avant plan</translation> + <translation>Premier plan pour les labels additionnels</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation>Couleurs du champ d’état</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> - <translation>Message d’information devant</translation> + <translation>Premier plan pour les messages d’information</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> - <translation>Warning devant</translation> + <translation>Premier plan pour les avertissements</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> - <translation>Message d’erreur devant</translation> + <translation>Premier plan pour les erreurs</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>Description :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> - <translation>Catégories :</translation> + <translation>Catégorie :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>Version :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>Auteur :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>Nom interne :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>Dépendances :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> - <translation>Conflicts :</translation> + <translation>Conflits :</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> - <translation>Détails plugins</translation> + <translation>Détails du plugin</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation>Les plugins sont chargés/déchargés immédiatement avec vérifié/non vérifié, mais les modifications de la liste de plugins à charger au lancement ne sont pas enregistrées avant l’enregistrement de la configuration entière.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (intégré)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>Détails</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation>Pas de plugins dans cette catégorie.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>Ajouter un nouveau type de données</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>Renommer le type de données sélectionné</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> - <translation>Supprimez le type de données sélectionnées</translation> + <translation>Supprimer le type de données sélectionnées</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation>Aide à la configuration des éditeurs de type de données</translation> </message> @@ -1810,137 +1782,153 @@ mais c’est OK pour l’utiliser.</translation> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation>Filtre de données</translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation>Table</translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation>Formulaire</translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation>Actualiser les données de la table</translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>Première page</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>Page précédente</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>Page suivante</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>Dernière page</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation>Appliquer le filtre</translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation>Enregistrer les modifications des cellules sélectionnées</translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation>Annuler les modifications des celulles sélectionnées</translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation>Affichage des résultats en tableau</translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation>Affichage des résultat en formulaire</translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation>Filtrer par texte</translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation>Filtrer par une expression standard</translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation>Filtrer par une expression SQL</translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation>Onglets en haut</translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation>Onglet en bas</translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation>Le total des lignes en cours de comptage. La navigation d’autres pages à la fin du comptage.</translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>Lignes : %1</translation> </message> @@ -2061,10 +2049,6 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Pilote de base de données</translation> </message> <message> - <source>Generate automatically</source> - <translation type="vanished">Générer automatiquement</translation> - </message> - <message> <location filename="../dialogs/dbdialog.ui" line="91"/> <source>Options</source> <translation type="unfinished">Options</translation> @@ -2080,14 +2064,6 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Tester la connexion</translation> </message> <message> - <source>Name</source> - <translation type="vanished">Nom</translation> - </message> - <message> - <source>Type</source> - <translation type="vanished">Type</translation> - </message> - <message> <source>Browse for database file on local computer</source> <translation type="obsolete">Navigation de la base de données en local</translation> </message> @@ -2108,24 +2084,12 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Nom (dans la liste)</translation> </message> <message> - <source>Generate name basing on file path</source> - <translation type="vanished">Génération du nom basé sur le chemin du fichier</translation> - </message> - <message> - <source>Permanent</source> - <translation type="vanished">Permanent</translation> - </message> - <message> <location filename="../dialogs/dbdialog.ui" line="97"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation><p>Autorisez-ceci si vous voulez que la base de données soit stockée dans le fichier de configuration et restauré chaque fois SQLiteStudio est lancé.</p></translation> </message> <message> - <source>Test database connection</source> - <translation type="vanished">Test de connexion</translation> - </message> - <message> <location filename="../dialogs/dbdialog.cpp" line="155"/> <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> @@ -2147,7 +2111,7 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2165,14 +2129,6 @@ Browsing other pages will be possible after the row counting is done.</source> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> - <message> - <source>The name will be auto-generated</source> - <translation type="vanished">Le non sera généré automatiquement</translation> - </message> - <message> - <source>Type the name</source> - <translation type="vanished">Saississez le nom</translation> - </message> </context> <context> <name>DbObjectDialogs</name> @@ -2257,373 +2213,490 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Filtre par nom</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>Coller</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>Tout sélectionner</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>Créer un groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>Supprimer le groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>Renommer le groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>Attacher une base de données</translation> + <translation type="vanished">Attacher une base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>Modifier la base de données</translation> + <translation type="vanished">Modifier la base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>Déatcher la base de données</translation> + <translation type="vanished">Déatcher la base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>Connecter une base de données</translation> + <translation type="vanished">Connecter une base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>Déconnecter la base de données</translation> + <translation type="vanished">Déconnecter la base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>Importer</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>Exporter la base de données</translation> + <translation type="vanished">Exporter la base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>Type de base de données à convertir</translation> + <translation type="vanished">Convertir le format de base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> - <translation>Vaccum</translation> + <translation type="vanished">Vaccum</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>Contrôle d’intégrité</translation> + <translation type="vanished">Contrôler l’intégrité</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>Créer une table</translation> + <translation type="vanished">Créer une table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>Modifier la table</translation> + <translation type="vanished">Modifier la table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>Supprimer la table</translation> + <translation type="vanished">Supprimer la table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>Exporter la table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>Importer dans la table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>Peupler une table</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>Créer une table identique</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>Réinitialise l’auto-incrémentation</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>Créer un index</translation> + <translation type="vanished">Créer un index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>Modifier l’index</translation> + <translation type="vanished">Modifier l’index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>Supprimer l’index</translation> + <translation type="vanished">Supprimer l’index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>Créer un déclencheur</translation> + <translation type="vanished">Créer un déclencheur</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>Modifier le déclencheur</translation> + <translation type="vanished">Modifier le déclencheur</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>Supprimer le déclencheur</translation> + <translation type="vanished">Supprimer le déclencheur</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>Créer une vue</translation> + <translation type="vanished">Créer une vue</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>Modier la vue</translation> + <translation type="vanished">Modier la vue</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>Supprimer la vue</translation> + <translation type="vanished">Supprimer la vue</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>Ajouter une colonne</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>Modifier la colonne</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>Supprimer la colonne</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>Supprimer les objets sélectionnés</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>Vider le filtre</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>Actualiser tous les schémas de la base de données</translation> + <translation type="vanished">Actualiser tous les schémas de base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>Actualiser les schémas sélectionné de la base de données</translation> + <translation type="vanished">Actualiser le schéma de base de données sélectionné</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>Base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>Groupement</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>Créer un groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>Nom du groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation>L’entrée nommée %1 existe déjà dans le groupe %2.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>Supprimer le groupe</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>Êtes-vous certain de supprimer le groupe %1 ? Tous les objets de ce groupe seront déplacés dans le groupe parent.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete database</source> - <translation type="vanished">Suppression de la base de données</translation> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> + <source>Cannot import, because no import plugin is loaded.</source> + <translation>Import impossible, car aucun plugin d’import n’est chargé.</translation> </message> <message> - <source>Are you sure you want to delete database '%1'?</source> - <translation type="vanished">Êtes-vous certain de vouloir supprimer la base de données : « %1 » ?</translation> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> - <source>Cannot import, because no import plugin is loaded.</source> - <translation>Import impossible, car aucun plugin d’import n’est chargé.</translation> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> - <source>Cannot export, because no export plugin is loaded.</source> - <translation>Export impossible, car aucun plugin d’import n’est chargé.</translation> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> </message> <message> - <source>Error while executing VACUUM on the database %1: %2</source> - <translation type="vanished">Erreur pendant l’exécution de VACCUM sur la base de données %1 : %2</translation> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> </message> <message> - <source>VACUUM execution finished successfully.</source> - <translation type="vanished">Exécution de VACCUM terminé avec succès.</translation> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> + <source>Cannot export, because no export plugin is loaded.</source> + <translation>Export impossible, car aucun plugin d’import n’est chargé.</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>Contrôle d’intégrité (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>Remise à zéro de l’auto-incrément</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>Êtes-vous certain de vouloir réinitialiser l’auto-incrémentation de la table « %1 » ?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l’auto-incrémentation de la table « %1 » : %2</translation> </message> <message> - <source>Autoincrement value for table '%1' has been reset successfly.</source> - <translation type="vanished">La valeur de l’auto-incrémentation de la table %1 a été réinitialisé avec succès.</translation> - </message> - <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>Les objets suivant vont être supprimés : %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>Les bases de données suivantes seront enlevées de la liste : %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation>Les objets restants du groupe supprimé seront déplacés où le groupe a eu l’habitude d’être.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%1<br><br>Êtes-vous certain de vouloir continuer ?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>Objets supprimés</translation> </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished">Impossible d’ouvrir en lecture le fichier « %1 » : %2</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DbTreeItemDelegate</name> @@ -2679,11 +2752,6 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati <translation>Codage :</translation> </message> <message> - <source>Error details:</source> - <comment>dbtree tooltip</comment> - <translation type="vanished">Détails de l’erreur :</translation> - </message> - <message> <location filename="../dbtree/dbtreemodel.cpp" line="439"/> <source>Error:</source> <comment>dbtree tooltip</comment> @@ -2714,76 +2782,76 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati <translation>Déclencheurs (%1) :</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation>Déplacer</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation>Données incluses</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation>Index inclus</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation>Déclencheurs inclus</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>Abandonner</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation>Tables référencées</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Vous voulez inclure des tables référencées suivantes aussi : %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation>Conflit de nom</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>L’objet suivant existe déjà dans la base de données cible. Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’opération :</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation>Conversion des déclarations SQL </translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>L’erreur suivante est survenue en convertissant des déclarations de SQL de la version cible SQLite :</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Voulez-vous ignorer ces erreurs et procéder ?</translation> </message> @@ -2839,137 +2907,139 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Requête</translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>Historique</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>Résultats dans un onglet séparé</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>Résultats après la requête</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>Éditeur SQL %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>Résultats</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>Exécuter la requête</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation>Explication de la requête</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>Vider l’historique d’exécution</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>Exporter résultats</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>Créer une vue à partir d’une requête</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>Base de données précédente</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>Base de données suivante</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>Afficher l’onglet suivant</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>Afficher l’onget précédent</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation>Focus sur l’éditeur SQL ci-dessus</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation>Base de données active (%1/%2)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation>Requête terminée en %1 secondes. Nombre de lignes : %2</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation>Requête terminée en %1 seconde(s).</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>Supprimer l’historique d’exécution</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>Êtes vous certain de vouloir supprimer la totalité de l’historique d’exécution SQL ? Aucun retour possible.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Impossible d’exporter, car aucun plugin d’expertation n’est chargés.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation>Aucune base de données den sélectionnée dans l’éditeur SQL. Impossible de créer une vue sur une base de données inconnue.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> - <message> - <source>Editor window "%1" has uncommited data.</source> - <translation type="vanished">Fenêtre d’éditeur "%1" n’a pas enregistrer les données.</translation> - </message> </context> <context> <name>ErrorsConfirmDialog</name> @@ -2990,6 +3060,64 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished">Options</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished">Scripts SQL (*.sql);;Tous les fichiers (*)</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3138,69 +3266,102 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Exporter options de format</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>Sélecctionnez la base de données à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>Sélectionnez la table à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation>Saississez une requête valide à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation>Sélectionnez au moins un objet à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation>Vous devez fournir le nom d’un fichier à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Le chemin fourni est un répertoire existant. Vous ne pouvez pas l’écraser.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation>Le répertoire « %1 » n’existe pas.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Le fichier « %1 » existe et sera écrasé.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation>Tous les fichiers(*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation>Sélectionnez un fichier à exporter</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Erreur interne pendant l’exportation. c’est un bug. SVP veuillez le reporter.</translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished">Erreur</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3220,49 +3381,49 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>Enregistrer ligne</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>Annuler ligne</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>Première ligne</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>Ligne précédente</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>Ligne suivante</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>Dernière ligne</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>Insérer une nouvelle ligne</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>Supprimer la ligne courante</translation> @@ -3321,13 +3482,13 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Code d’initialisation :</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation>Fonction de code d’implémentation :</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation>Etape finale de code d’implémentaion :</translation> </message> @@ -3427,10 +3588,6 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <source>Functions editor window has uncommitted modifications.</source> <translation type="unfinished"></translation> </message> - <message> - <source>Functions editor window has uncommited modifications.</source> - <translation type="vanished">L’éditeur de fonction n’a pas enregistré les modifications.</translation> - </message> </context> <context> <name>ImportDialog</name> @@ -3495,42 +3652,42 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Optrions de source de données </translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Si vous saississez un nom de table inexistant, celle-ci sera créée.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>Saississez un nom de table</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>Sélectionnez un plugin d’importation.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>Vous devez fournir un fichier à importer.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>Le fichier « %1 » n’existe pas.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Le chemin indiqué est un répertoire. Un fichier est requis.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>Sélectionnez le fichier d’importation</translation> </message> @@ -3569,12 +3726,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Colonne</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation>Regroupement</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>Tri</translation> </message> @@ -3754,273 +3911,406 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Barre d’outils de fenêtrage</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation>Configuration widgets</translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation>Syntaxe surlignée des moteurs</translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>Éditeurs de données</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation>Passage en mode débogue. Cliquez %1 ou utilisez l’entrée du menu « l’Aide / Ouvrir la console de débogage ».</translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation>Passage en mode débogue. Les messages de débogage sont imprimés dans la sortie standard.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>Vous devez relancer l’application pour que le langage prenne effet.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>Ouvrir l’éditeur SQL</translation> + <translation type="vanished">Ouvrir l’éditeur SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>Ouvrir l’historique DDL</translation> + <translation type="vanished">Ouvrir l’historique DDL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> <source>Open SQL functions editor</source> - <translation>Éditeur de fonctions SQL</translation> + <translation type="vanished">Éditeur de fonctions SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> <source>Open collations editor</source> - <translation>Ouvrir l’éditeur de collections</translation> + <translation type="vanished">Ouvrir l’éditeur de collections</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>Importer</translation> + <translation type="vanished">Importer</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>Exporter</translation> + <translation type="vanished">Exporter</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>Préférences</translation> + <translation type="vanished">Préférences</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>Organisation des fenêtres en grille</translation> + <translation type="vanished">Organisation des fenêtres en grille</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>Organisation horizontale des fenêtres</translation> + <translation type="vanished">Organisation horizontale des fenêtres</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>Organisation verticale des fenêtres</translation> + <translation type="vanished">Organisation verticale des fenêtres</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>Organisation des fenêtres en cascade</translation> + <translation type="vanished">Organisation des fenêtres en cascade</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>Fenêtre suivante</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>Fenêtre précédante</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation>Cacher le champ d’état</translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>Fermer la fenêtre sélectionnée</translation> + <translation type="vanished">Fermer la fenêtre sélectionnée</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>Fermer toutes les fenêtres sélectionnées</translation> + <translation type="vanished">Fermer toutes les fenêtres sélectionnées</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>Fermer toutes les fenêtres</translation> + <translation type="vanished">Fermer toutes les fenêtres</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>Restaurer la dernière fenêtre fermée</translation> + <translation type="vanished">Restaurer la dernière fenêtre fermée</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>Renommer la fenêtre sélectionnée</translation> + <translation type="vanished">Renommer la fenêtre sélectionnée</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>Ouvrir la console de debogage</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation type="unfinished">Ouvrir la console CSS</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>Rapporter un bogue</translation> + <translation type="vanished">Rapporter un bogue</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>Proposer une fonctionnalité</translation> + <translation type="vanished">Proposer une fonctionnalité</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>À propos de…</translation> + <translation type="vanished">À propos de…</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>Licences</translation> + <translation type="vanished">Licences</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>Page d’accueil web</translation> + <translation type="vanished">Site web de l’application</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>Forum d’aide</translation> + <translation type="vanished">Forum d’aide</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>Manuel utilisateurs en ligne</translation> + <translation type="vanished">Manuel utilisateur en ligne</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>Documentation en ligne de SQLite</translation> + <translation type="vanished">Documentation en ligne de SQLite</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>Historique</translation> + <translation type="vanished">Historique</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>Vérifier les mises à jour</translation> + <translation type="vanished">Vérifier les mises à jour</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>Base de données</translation> + <translation type="vanished">Base de données</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>Structure</translation> + <translation type="vanished">Structure</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>Vue</translation> + <translation type="vanished">Vue</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>Liste des fenêtres</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>Outils</translation> + <translation type="vanished">Outils</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>Aide</translation> + <translation type="vanished">Aide</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>Impossible de positionner le style : %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Exportation impossible, aucun plugin d’exportation n’est chargé.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Importation impossible, aucun plugin d’importation n’est chargé.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>Renommer la fenêtre</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>Saississez un nouveau nom de fenêtre :</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Une nouvelle mise à jour est disponible. <a href="%1"> cliquez ici pour détails</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>Vous utilisez la dernière version. Aucune mise à jour de disponible.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>La base de données passée en paramètre dans la ligne de commande (%1)a été temporaire ajoutée à la liste sous le nom : %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>Impossible d’ajouter la base de données %1 à la liste.</translation> </message> @@ -4028,10 +4318,6 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <context> <name>MdiWindow</name> <message> - <source>Uncommited changes</source> - <translation type="vanished">Modification non enregistrées</translation> - </message> - <message> <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> @@ -4056,23 +4342,28 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Valeur NULL</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation>Configurer l’éditeur pour ce type de données</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation>Plugin d"éditeur de données « %1 » non chargé, ausii il n’ai pas défini pour le type de données « %1 ».</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation>Suppression</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>Lecture seule</translation> @@ -4081,93 +4372,143 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <context> <name>MultiEditorBool</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> <source>Boolean</source> - <translation>booleen</translation> + <translation type="vanished">booleen</translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> + <source>Boolean</source> + <translation type="unfinished">booleen</translation> </message> </context> <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation>Date</translation> + <translation type="vanished">Date</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished">Date</translation> </message> </context> <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation>date & heure</translation> + <translation type="vanished">date & heure</translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished">date & heure</translation> </message> </context> <context> <name>MultiEditorHex</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> <source>Hex</source> - <translation>Hex</translation> + <translation type="vanished">Hex</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> + <source>Hex</source> + <translation type="unfinished">Hex</translation> </message> </context> <context> <name>MultiEditorNumeric</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation>Nombre</translation> + <translation type="vanished">Nombre</translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished">Nombre</translation> </message> </context> <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> <source>Text</source> - <translation>Texte</translation> + <translation type="vanished">Texte</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation>Tab modifie le focus</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>Couper</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>Coller</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>Supprimer</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation>Annuler</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation>Rétablir</translation> </message> </context> <context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished">Texte</translation> + </message> +</context> +<context> <name>MultiEditorTime</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> <source>Time</source> - <translation>Heure</translation> + <translation type="vanished">Heure</translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> + <source>Time</source> + <translation type="unfinished">Heure</translation> </message> </context> <context> @@ -4242,37 +4583,40 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Composant</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Current version</source> - <translation>Version courante</translation> + <translation type="vanished">Version courante</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>Version de mise à jour</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>Contrôle de nouvelles version au lancement</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>Mettre à jour la nouvelle version !</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>La mise à jour sera automatiquement téléchargée et installée. Un redémarrage de l’application sera aussi effectué à la fin.</translation> + <translation type="vanished">La mise à jour sera automatiquement téléchargée et installée. Un redémarrage de l’application sera aussi effectué à la fin.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>Paas maintenant.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>Ne pas installer la mise à jour maintenant et fermer cette fenêtre.</translation> </message> @@ -4324,32 +4668,32 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Peupler</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation type="unfinished">Abandonner</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>Configurer</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation>La configuration du peuplement pour cette colonne est invalide ou incomplète.</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation>Sélectionner la base de données avec la table à peupler</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>Sélectionner la table à peupler</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>Vous devez sélectionner au moins une colonne.</translation> </message> @@ -4424,129 +4768,134 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Nom de collation : %1</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation>Vue de tableau de données</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation>Copie le contenu de cellule(s) dans le presse-papier</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Paste cell(s) contents from clipboard</source> <translation>Colle</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="25"/> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation>Efface le contenu de cellule(s)</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation>Met à NULL les cellules séléctionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation>Enregistre les modifications de cellule(s)</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation>Annule les modifications de cellule(s)</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation>Supprime les données de la ligne sélectionnée</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation>Insére une nouvelle ligne de données</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation>Contenu ouvert de cellule choisie dans un éditeur séparé</translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation>Nombre de pages disponibles : %1</translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation>Nombre de lignes chargées : %1</translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation>Vue des données (tableau et formulaire)</translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation>Actualisation des données</translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation>Basculer sur la vue des données en table</translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation>Basculer sur la vue des données en formulaire</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation>Liste de bases de données</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation>Suppression de l’item sélectionné</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation>Effacer le contenu du filtre</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation>Actualiser le schéma</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation>Actualiser tous les schémas</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation>Ajouter une base de données</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation>Séléctionner tous les éléments</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation>Copie d’item(s) sélectionné(s)</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation>Collé dans le presse-papier</translation> </message> @@ -4621,42 +4970,42 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Supprimer la ligne courante</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation>Fenêtre principale</translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation>Ouvrir l’éditeur SQL</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation>Fenêtre précédente</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation>Fenêtre suivante</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation>Cacher la barre d’état</translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation>Préférences</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation>Ouvrir la console de débogage</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation>Ouvrir la console CSS</translation> </message> @@ -4667,111 +5016,111 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation>Couper le texte sélectionné</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation>Copie du texte sélectionné</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation>Suppression du texte sélectionné</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation>Annuler</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation>Rétablir</translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation>Éditeur SQL saisie de champ</translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation>Sélectionnez le contenu entier de l’éditeur</translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation>Sauver le contenu dans un fichier</translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation>Charger le contenu d’un fichier</translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation>Rechercher un texte</translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation>Occurence suivante</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation>Occurence précédente</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation>Remplacer dans le texte</translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation>Supprimer la ligne courante</translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation>Assistant de code nécessaire</translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation>Format de contenu</translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation>Déplacer le bloc de texte sélectionné à la ligne inférieure</translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation>Déplacer le bloc de texte sélectionné à la ligne supérieure</translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation>Copier le bloc de texte sélectionné à la ligne au-dessus</translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation>Copier le bloc de texte sélectionné à la ligne au-dessous</translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4792,14 +5141,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Fichier base de données</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> <source>Reports history window</source> - <translation>Fenêtre d’historique</translation> + <translation type="vanished">Fenêtre d’historique</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation>Effacer l’entrée sélectionnée</translation> + <translation type="vanished">Effacer l’entrée sélectionnée</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4847,6 +5194,11 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <translation>Déplacement au-dessous du focus des résultats de vue par les touches</translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation>Fenêtre de table</translation> @@ -4965,10 +5317,6 @@ Entrez SVP un nouveau nom, unique, ou cliquez « %1 » pour d’interrompre l’ <context> <name>QuitConfirmDialog</name> <message> - <source>Uncommited changes</source> - <translation type="vanished">modifications non enregistrées</translation> - </message> - <message> <location filename="../dialogs/quitconfirmdialog.ui" line="14"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> @@ -5069,179 +5417,179 @@ recherche suivant</translation> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>Couper</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>Copier</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>Coller</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>Supprimer</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>Tout sélectionner</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation>Annuler</translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation>Rétablir</translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation>Complet</translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>Format SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>Enregistrer le SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>Charger le SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>Ligne suppimée</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation>Descendre le bloc</translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation>Monter le bloc</translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation>Copier bloc au-dessus</translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation>Copier bloc au-dessous</translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>Chercher</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>Chercher suivant</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>Chercher précédent</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>Remplacer</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation>L’achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l’éditeur SQL.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation>Le contenu l’éditeur SQL est important, aussi la détectiond’objets en erreur est temporairement mise hors de service.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>Sauvegarder</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation>Impossible d’ouvrir en écriture le fichier « %1 » : %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation>Scripts SQL (*.sql);;Tous les fichiers (*)</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>Fichier ouvert</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation>Impossible d’ouvrir en lecture le fichier « %1 » : %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>Fin de document atteint. Saississez de nouveau la recherche pour relancer la recherche.</translation> </message> @@ -5273,10 +5621,6 @@ recherche suivant</translation> <translation>Contrainte :</translation> </message> <message> - <source>This cell is not editable, because: %1</source> - <translation type="vanished">Cette cellule n’est pas modifiable : %1</translation> - </message> - <message> <location filename="../datagrid/sqlqueryitem.cpp" line="423"/> <source>Cannot load the data for a cell that refers to the already closed database.</source> <translation>Impossible de charger les données pour une cellule référant à une base de données fermée.</translation> @@ -5285,10 +5629,6 @@ recherche suivant</translation> <context> <name>SqlQueryItemDelegate</name> <message> - <source>Cannot edit this cell. Details: %2</source> - <translation type="vanished">Impossible de modifier cette cellule. Détails : %2</translation> - </message> - <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <source>The row is marked for deletion.</source> <translation>La ligne est marquée pour effacement.</translation> @@ -5297,24 +5637,24 @@ recherche suivant</translation> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished">Impossible de modifier cette cellule. Détails : %1</translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5322,81 +5662,74 @@ recherche suivant</translation> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation>Uniquement une seule requête peut être exécutée à la fois.</translation> </message> <message> - <source>Uncommited data</source> - <translation type="vanished">Données non enregistrées</translation> - </message> - <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Impossible d’enregistrer les données pour la celle qui référe à une base de données déjà fermée.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Impossible de lancer la transaction sur la base de données. Détails : %1</translation> </message> <message> - <source>An error occurred while commiting the transaction: %1</source> - <translation type="vanished">Une erreur est survenuelors de l’enregistrement de la transaction : %1</translation> - </message> - <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Une erreur est survenuelors de l’annulation de la transaction : %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Tentative d’enregistrement d’une une cellule qui n’est pas modifiable ! Ceci est un bogue. Rapportez-le SVP.</translation> </message> <message> - <source>An error occurred while commiting the data: %1</source> - <translation type="vanished">Une erreur est survenuelors de l’enregistrement des données : %1</translation> - </message> - <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Erreur pendant l’exécution de la requête sur la base de données « %1 » : %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation>Erreur lors du chargement des résultats de la requête : %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation>Insérer plusieurs lignes</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation>Nombre de lignes à inserer :</translation> </message> @@ -5404,117 +5737,137 @@ recherche suivant</translation> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>Copier comme…</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>Coller</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>Coller comme…</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>Valeurs NULL positionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>valeurs écrasées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation>Valeur modifiée par l’éditeur</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>Enregistrer</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>Annuler</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation>Enregistrer les cellules sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation>Annuler les modifications des cellules sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation>Définit les colonnes triées par</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation>Enléve le tri personnalisé</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>Insérer une ligne</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>Insérer plusieurs lignes</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>Supprimer les lignes sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>Modifier la valeur</translation> </message> @@ -5522,10 +5875,6 @@ recherche suivant</translation> <context> <name>SqlTableModel</name> <message> - <source>Error while commiting new row: %1</source> - <translation type="vanished">Erreur à l’enregistrement d’une nouvelle ligne : %1</translation> - </message> - <message> <location filename="../datagrid/sqltablemodel.cpp" line="82"/> <source>Error while committing new row: %1</source> <translation type="unfinished"></translation> @@ -5537,6 +5886,119 @@ recherche suivant</translation> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished">Tous les fichiers(*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished">Fichier ouvert</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5644,7 +6106,7 @@ but it's okay to use them anyway.</source> <translation>Saisissez un nom de contrainte.</translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation>Colonne étrangère</translation> @@ -5698,24 +6160,24 @@ but it's okay to use them anyway.</source> <translation>Sur conflit</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation>Collationne</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation>Ordre de tri</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation>Sélectionnez au moins une colonne.</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation>Saisissez le nom de la contrainte.</translation> </message> @@ -6091,14 +6553,6 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <source>Could not restore window, because database %1 could not be resolved.</source> - <translation type="vanished">Impossible de restaurer la fenêtre, car la base de données %1 ne peut ëtre résolue.</translation> - </message> - <message> - <source>Could not restore window, because the table %1 doesn't exist in the database %2.</source> - <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n’existe pas dans la base de données %2..</translation> - </message> - <message> <location filename="../windows/tablewindow.cpp" line="699"/> <location filename="../windows/tablewindow.cpp" line="701"/> <source>New table %1</source> @@ -6126,10 +6580,6 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l’auto-incrémentation de la table « %1 » : %2</translation> </message> <message> - <source>Autoincrement value for table '%1' has been reset successfly.</source> - <translation type="vanished">La valeur de l’auto-incrémentaion de la table %1 a été réinitialisé avec succès.</translation> - </message> - <message> <location filename="../windows/tablewindow.cpp" line="977"/> <source>Empty name</source> <translation>Nom vide</translation> @@ -6179,16 +6629,6 @@ Are you sure you want to create a table with blank name?</source> <translation>Import impossible, car aucun plugin d’import n’est chargé.</translation> </message> <message> - <source>Uncommited changes</source> - <translation type="vanished">Modification non enregistrées</translation> - </message> - <message> - <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled. -Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="vanished">Il ya des modifications de structure non enregistrées. Vous ne pouvez pas naviguer ou modifier des données jusqu’à ce que vous ailliez installer la structure de table. -Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de structure ?</translation> - </message> - <message> <location filename="../windows/tablewindow.cpp" line="1274"/> <source>Go back to structure tab</source> <translation>Retour à l’onglet de structure</translation> @@ -6246,18 +6686,6 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de <comment>table window triggers</comment> <translation>Details</translation> </message> - <message> - <source>Table window "%1" has uncommited structure modifications and data.</source> - <translation type="vanished">La fenêtre de table "%1" n’a pas enregistré les modifications de structure et de données.</translation> - </message> - <message> - <source>Table window "%1" has uncommited data.</source> - <translation type="vanished">La fenêtre de table "%1" n’a pas enregistrer les données.</translation> - </message> - <message> - <source>Table window "%1" has uncommited structure modifications.</source> - <translation type="vanished">La fenêtre de table "%1" n’a pas enregistré les modifications de structure.</translation> - </message> </context> <context> <name>TriggerColumnsDialog</name> @@ -6302,7 +6730,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation><p> La condition SQL sera évaluée avant le code du déclencheur réel. Dans le cas où le retour de condition est faux, le déclencheur ne sera pas utilisé pour cette ligne.</p ></translation> </message> @@ -6347,7 +6775,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de <translation>Déclaration du déclencheur devant être exécutée.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6425,34 +6853,22 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation>Données</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation>Déclencheur</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation>DDL</translation> </message> <message> - <source>Could not restore window, because database %1 could not be resolved.</source> - <translation type="vanished">Impossible de restaurer la fenêtre, car la base de données %1 ne peut ëtre résolue.</translation> - </message> - <message> - <source>Could not restore window, because database %1 could not be open.</source> - <translation type="vanished">Impossible de restaurer la fenêtre, car la base de données %1 ne peut ëtre ouverte.</translation> - </message> - <message> - <source>Could not restore window, because the view %1 doesn't exist in the database %2.</source> - <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n’existe pas dans la base de données %2..</translation> - </message> - <message> <location filename="../windows/viewwindow.cpp" line="108"/> <location filename="../windows/viewwindow.cpp" line="114"/> <source>Could not restore window '%1', because no database or view was stored in session for this window.</source> @@ -6480,246 +6896,219 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de <translation>Nouvelle vue %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation>Actualisation de la vue</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation>Enregistrement des changements dans la vue</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation>Annulation des changements dans la vue</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished">Ajouter une colonne</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished">Modifier une colonne</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished">Supprimer une colonne</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation>Actualisation de la liste des déclencheurs</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation>Création d’un nouveau déclencheur</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation>Modification du déclencheur sélectionné</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation>Suppression du déclencheur sélectionné</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <source>View window "%1" has uncommited structure modifications and data.</source> - <translation type="vanished">La fenêtre de la vue "%1" n’a pas enregistré les modifications de structure et de données.</translation> - </message> - <message> - <source>View window "%1" has uncommited data.</source> - <translation type="vanished">La fenêtre de la vue "%1" n’a pas enregistré les modifications de données.</translation> - </message> - <message> - <source>View window "%1" has uncommited structure modifications.</source> - <translation type="vanished">La fenêtre de la vue "%1" n’a pas enregistré les modifications de structure.</translation> - </message> - <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation>Impossible de charher les données de vue %1. Détails d’ erreur : %2</translation> </message> <message> - <source>Uncommited changes</source> - <translation type="vanished">Modifications non enregistrées</translation> - </message> - <message> - <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled. -Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="vanished">Des modifications de structure n’ont pa été enregistrées. - Vous ne pouvez pas naviguer ou éditer des données jusqu’à ce que vous installliez la structure de vue. -Voulez-vous enregistrer la structure, ou voulez-vous retourner à l’onglet de structure ?</translation> - </message> - <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation>Retour à l’onlet de structure</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation>Enregistrement des modifications et navigation des données.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation>Impossible d’enregistrer les modifications de vue. Message d’erreur : %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation>Nom</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation>À la place de</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation>Condition</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation>Détails</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation>Impossible de lancer correctement la vue %1. Impossible d’ouvrir la fenêtre de vue.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation>Nom absent</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation>Un nom vide pour la vue dans SQLITE est admis, mais on ne le recommande pas. Êtes-vous sûrs que vous voulez créer une vue avec le nom vide ?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation>La déclaration SELECT ne peut être analysé. Veuillez corriger la requête et réessayer. Details : %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation>La vue ne peut être modifiée a cause d’une erreur interne de SQLiteStudio. SVP repportez l’erreur !</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <source>The view code could not be parsed properly for execution. This is a SQLiteStudio’s bug. Please report it.</source> - <translation type="vanished">La vue ne peut être correctement analysée avant exécution. Cest un bug SQLiteStudio. Veuillez le signaler.</translation> - </message> - <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> @@ -6727,7 +7116,7 @@ Would you like to proceed?</source> Veulez-vous continuer ?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation>Fenêtre vue</translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts index aaac2b6..e1651a8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts @@ -15,7 +15,7 @@ </message> <message> <location filename="../dialogs/aboutdialog.ui" line="30"/> - <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> <translation type="unfinished"></translation> </message> <message> @@ -90,258 +90,15 @@ </message> </context> <context> - <name>BugDialog</name> + <name>BindParamsDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> - <source>Bugs and ideas</source> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> - <source>Reporter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> - <source>E-mail address</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> - <source>Short description</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> - <source>Detailed description</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> - <source>Show more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> - <source>SQLiteStudio version</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> - <source>Operating system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> - <source>Loaded plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> - <source>Send</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> - <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> - <source>A bug report sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> - <source>An error occurred while sending a bug report: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> - <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> - <source>An idea proposal sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> - <source>An error occurred while sending an idea proposal: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> - <source>A bug report</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> - <source>Describe problem in few words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> - <source>Describe problem and how to reproduce it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> - <source>A new feature idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> - <source>A title for your idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> - <source>Describe your idea in more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> - <source>Reporting as an unregistered user, using e-mail address.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> - <source>Reporting as a registered user.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> - <source>Log out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> - <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> - <source>Enter vaild e-mail address, or log in.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> - <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> - <source>Long description requires at least 30 characters.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportHistoryWindow</name> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Title</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Reported at</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>URL</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> - <source>Reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> - <source>Clear reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> - <source>Invalid response from server.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportLoginDialog</name> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> - <source>Credentials</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> - <source>Login:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> - <source>Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> - <source>Validation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> - <source>Validate</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> - <source>Validation result message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> - <source>Abort</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> - <source>A login must be at least 2 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> - <source>A password must be at least 5 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> - <source>Valid</source> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> <translation type="unfinished"></translation> </message> </context> @@ -373,12 +130,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation type="unfinished"></translation> </message> @@ -483,11 +240,16 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> - <source>Invalid default value expression: %1</source> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -599,7 +361,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation type="unfinished"></translation> @@ -659,34 +421,44 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -787,12 +559,6 @@ but it's okay to use it.</source> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> - <source>Autoincrement (only for %1 type columns)</source> - <comment>column primary key</comment> - <translation type="unfinished"></translation> - </message> </context> <context> <name>ColumnUniqueAndNotNullPanel</name> @@ -903,7 +669,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> @@ -993,215 +759,215 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation type="unfinished"></translation> </message> @@ -1277,350 +1043,372 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation type="unfinished"></translation> </message> @@ -1772,137 +1560,153 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation type="unfinished"></translation> </message> @@ -2081,7 +1885,7 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2183,352 +1987,397 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> - <source>Add a database</source> + <location filename="../dbtree/dbtree.cpp" line="145"/> + <source>Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> - <source>Edit the database</source> + <location filename="../dbtree/dbtree.cpp" line="153"/> + <source>Export the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> - <source>Remove the database</source> + <location filename="../dbtree/dbtree.cpp" line="154"/> + <source>Import into the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> - <source>Connect to the database</source> + <location filename="../dbtree/dbtree.cpp" line="155"/> + <source>Populate table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> - <source>Disconnect from the database</source> + <location filename="../dbtree/dbtree.cpp" line="156"/> + <source>Create similar table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> - <source>Import</source> + <location filename="../dbtree/dbtree.cpp" line="157"/> + <source>Reset autoincrement sequence</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> - <source>Export the database</source> + <location filename="../dbtree/dbtree.cpp" line="167"/> + <source>Add a column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> - <source>Convert database type</source> + <location filename="../dbtree/dbtree.cpp" line="168"/> + <source>Edit the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> - <source>Vacuum</source> + <location filename="../dbtree/dbtree.cpp" line="169"/> + <source>Delete the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> - <source>Integrity check</source> + <location filename="../dbtree/dbtree.cpp" line="170"/> + <source>Delete selected items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> - <source>Create a table</source> + <location filename="../dbtree/dbtree.cpp" line="171"/> + <source>Clear filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> - <source>Edit the table</source> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Erase table data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> - <source>Delete the table</source> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> + <source>Database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> - <source>Export the table</source> + <location filename="../dbtree/dbtree.cpp" line="370"/> + <source>Grouping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> - <source>Import into the table</source> + <location filename="../dbtree/dbtree.cpp" line="375"/> + <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> - <source>Populate table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Create group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> - <source>Create similar table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <source>Group name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> - <source>Reset autoincrement sequence</source> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Entry with name %1 already exists in group %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> - <source>Create an index</source> + <location filename="../dbtree/dbtree.cpp" line="1107"/> + <source>Delete group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> - <source>Edit the index</source> + <location filename="../dbtree/dbtree.cpp" line="1108"/> + <source>Are you sure you want to delete group %1? +All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> - <source>Delete the index</source> + <location filename="../dbtree/dbtree.cpp" line="1171"/> + <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> - <source>Create a trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1179"/> + <source>Are you sure you want to remove following databases from the list: +%1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> - <source>Edit the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1181"/> + <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> - <source>Delete the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1487"/> + <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> - <source>Create a view</source> + <location filename="../dbtree/dbtree.cpp" line="1546"/> + <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> - <source>Edit the view</source> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> - <source>Delete the view</source> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> + <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> - <source>Add a column</source> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> - <source>Edit the column</source> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> - <source>Delete the column</source> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> - <source>Delete selected items</source> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> - <source>Clear filter</source> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> - <source>Refresh all database schemas</source> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> - <source>Refresh selected database schema</source> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Erase table data</source> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> - <source>Database</source> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> - <source>Grouping</source> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> - <source>Generate query for table</source> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Create group</source> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <source>Group name</source> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Entry with name %1 already exists in group %2.</source> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> - <source>Delete group</source> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> - <source>Are you sure you want to delete group %1? -All objects from this group will be moved to parent group.</source> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> - <source>Are you sure you want to remove database '%1' from the list?</source> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> - <source>Are you sure you want to remove following databases from the list: -%1</source> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> - <source>Remove database</source> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> - <source>Vacuum (%1)</source> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> - <source>Autoincrement value for table '%1' has been reset successfully.</source> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Are you sure you want to delete all data from table(s): %1?</source> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> - <source>Cannot import, because no import plugin is loaded.</source> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DbTreeItemDelegate</name> @@ -2614,74 +2463,74 @@ All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2735,130 +2584,136 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2882,6 +2737,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3030,69 +2943,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3112,49 +3058,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation type="unfinished"></translation> @@ -3213,13 +3159,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation type="unfinished"></translation> </message> @@ -3383,42 +3329,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3457,12 +3403,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation type="unfinished"></translation> </message> @@ -3641,273 +3587,278 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> - <source>Open SQL editor</source> + <location filename="../mainwindow.cpp" line="247"/> + <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> - <source>Open DDL history</source> + <location filename="../mainwindow.cpp" line="248"/> + <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> - <source>Open SQL functions editor</source> + <location filename="../mainwindow.cpp" line="249"/> + <source>Hide status field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> - <source>Open collations editor</source> + <location filename="../mainwindow.cpp" line="257"/> + <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> - <source>Import</source> + <location filename="../mainwindow.cpp" line="258"/> + <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> - <source>Export</source> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> - <source>Open configuration dialog</source> + <location filename="../mainwindow.cpp" line="352"/> + <source>Window list</source> + <comment>menubar view menu</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> - <source>Tile windows</source> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> - <source>Tile windows horizontally</source> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> - <source>Tile windows vertically</source> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> - <source>Cascade windows</source> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> - <source>Next window</source> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> - <source>Previous window</source> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> - <source>Hide status field</source> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> - <source>Close selected window</source> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> - <source>Close all windows but selected</source> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> - <source>Close all windows</source> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> - <source>Restore recently closed window</source> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> - <source>Rename selected window</source> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> - <source>Open Debug Console</source> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> - <source>Open CSS Console</source> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> - <source>Report a bug</source> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> - <source>Propose a new feature</source> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> - <source>About</source> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> - <source>Licenses</source> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> - <source>Open home page</source> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> - <source>Open forum page</source> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> - <source>User Manual</source> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> - <source>SQLite documentation</source> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> - <source>Report history</source> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> - <source>Check for updates</source> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> - <source>Database</source> - <comment>menubar</comment> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> - <source>Structure</source> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> - <source>View</source> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> - <source>Window list</source> - <comment>menubar view menu</comment> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> - <source>Tools</source> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> - <source>Help</source> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3939,64 +3890,69 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorBool</name> + <name>MultiEditorBoolPlugin</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> <source>Boolean</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDate</name> + <name>MultiEditorDatePlugin</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> + <location filename="../multieditor/multieditordate.cpp" line="86"/> <source>Date</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDateTime</name> + <name>MultiEditorDateTimePlugin</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> <source>Date & time</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorHex</name> + <name>MultiEditorHexPlugin</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> <source>Hex</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorNumeric</name> + <name>MultiEditorNumericPlugin</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> <source>Number</source> <comment>numeric multi editor tab name</comment> <translation type="unfinished"></translation> @@ -4005,50 +3961,53 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> - <source>Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorTime</name> + <name>MultiEditorTextPlugin</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> <source>Time</source> <translation type="unfinished"></translation> </message> @@ -4125,37 +4084,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> - <source>Current version</source> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> - <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation type="unfinished"></translation> </message> @@ -4207,32 +4161,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation type="unfinished"></translation> </message> @@ -4307,129 +4261,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> - <source>Paste cell(s) contents from clipboard</source> + <source>Copy cell(s) contents together with header to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="25"/> + <source>Paste cell(s) contents from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation type="unfinished"></translation> </message> @@ -4504,42 +4463,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> @@ -4550,111 +4509,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4675,16 +4634,6 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> - <source>Reports history window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../windows/editorwindow.h" line="26"/> <source>SQL editor window</source> <translation type="unfinished"></translation> @@ -4730,6 +4679,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation type="unfinished"></translation> @@ -4947,179 +4901,179 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation type="unfinished"></translation> </message> @@ -5167,24 +5121,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5192,69 +5146,74 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -5262,117 +5221,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5391,6 +5370,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5498,7 +5590,7 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation type="unfinished"></translation> @@ -5552,24 +5644,24 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -6120,7 +6212,7 @@ Are you sure you want to create a table with blank name?</source> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6165,7 +6257,7 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6243,18 +6335,18 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6286,224 +6378,224 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm Binary files differindex 0adb64a..5740bcd 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts index ad6aaf3..e144d8b 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts @@ -14,9 +14,8 @@ <translation>O programie</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Darmowy, otwartoźródłowy, wieloplatformowy menadżer baz danych SQLite.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor i aktywny opiekun:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Darmowy, otwartoźródłowy, wieloplatformowy menadżer baz danych SQLite.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor i aktywny opiekun:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -59,6 +58,11 @@ <translation>Katalog konfiguracji</translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Darmowy, otwartoźródłowy, wieloplatformowy menadżer baz danych SQLite.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor i aktywny opiekun:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation>Wersja Qt:</translation> @@ -90,261 +94,221 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation>Parametry zapytania</translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation>Proszę podać wartości dla parametrów zapytania</translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Błędy i pomysły</translation> + <translation type="vanished">Błędy i pomysły</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>Zgłaszający</translation> + <translation type="vanished">Zgłaszający</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>Adres e-mail</translation> + <translation type="vanished">Adres e-mail</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>Zaloguj</translation> + <translation type="vanished">Zaloguj</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>Krótki opis</translation> + <translation type="vanished">Krótki opis</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>Opis szczegółowy</translation> + <translation type="vanished">Opis szczegółowy</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>Pokaż więcej szczegółów</translation> + <translation type="vanished">Pokaż więcej szczegółów</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>Wersja SQLiteStudio</translation> + <translation type="vanished">Wersja SQLiteStudio</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>System operacyjny</translation> + <translation type="vanished">System operacyjny</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>Załadowane wtyczki</translation> + <translation type="vanished">Załadowane wtyczki</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>Wyślij</translation> + <translation type="vanished">Wyślij</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation>Możesz zobaczyć wszystkie błędy i pomysły zgłoszone przez ciebie wybierając menu '%1' i dalej '%2'.</translation> + <translation type="vanished">Możesz zobaczyć wszystkie błędy i pomysły zgłoszone przez ciebie wybierając menu '%1' i dalej '%2'.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Błąd został zgłoszony pomyślnie.</translation> + <translation type="vanished">Błąd został zgłoszony pomyślnie.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>Wystąpił błąd podczas zgłaszania błędu: %1 + <translation type="vanished">Wystąpił błąd podczas zgłaszania błędu: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>Możesz spróbować powtórzyć wysyłkę. Zawartość będzie przywrócona, kiedy otworzysz okno zgłaszania po błędzie takim jak ten.</translation> + <translation type="vanished">Możesz spróbować powtórzyć wysyłkę. Zawartość będzie przywrócona, kiedy otworzysz okno zgłaszania po błędzie takim jak ten.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>Pomysł został zgłoszony pomyślnie.</translation> + <translation type="vanished">Pomysł został zgłoszony pomyślnie.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>Wystąpił błąd podczas zgłaszania pomysłu: %1 + <translation type="vanished">Wystąpił błąd podczas zgłaszania pomysłu: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Zgłoś błąd</translation> + <translation type="vanished">Zgłoś błąd</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>Opisz problem w kilku słowach</translation> + <translation type="vanished">Opisz problem w kilku słowach</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>Opisz problem, oraz jak go powtórzyć</translation> + <translation type="vanished">Opisz problem, oraz jak go powtórzyć</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>Zgłoś pomysł</translation> + <translation type="vanished">Zgłoś pomysł</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>Tytuł twojego pomysłu</translation> + <translation type="vanished">Tytuł twojego pomysłu</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>Opisz twój pomysł szerzej</translation> + <translation type="vanished">Opisz twój pomysł szerzej</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>Zgłaszanie jako niezarejestrowany użytkownik, używając adresu e-mail.</translation> + <translation type="vanished">Zgłaszanie jako niezarejestrowany użytkownik, używając adresu e-mail.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>Zgłaszanie jako zarejestrowany użytkownik.</translation> + <translation type="vanished">Zgłaszanie jako zarejestrowany użytkownik.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>Wyloguj</translation> + <translation type="vanished">Wyloguj</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>Podanie prawdziwego adresu e-mail pozwoli na skontaktowanie się z tobą w związku z twoim zgłoszeniem. Aby dowiedzieć się więcej, kliknij przycisk 'pomoc' po prawej stronie.</translation> + <translation type="vanished">Podanie prawdziwego adresu e-mail pozwoli na skontaktowanie się z tobą w związku z twoim zgłoszeniem. Aby dowiedzieć się więcej, kliknij przycisk 'pomoc' po prawej stronie.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>Wpisz poprawny adres e-mail, lub zaloguj się.</translation> + <translation type="vanished">Wpisz poprawny adres e-mail, lub zaloguj się.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>Krótki opis wymaga przynajmniej 10 znaków, ale nie więcej niż 100. Dłuższy opis może być wpisany w polu poniżej.</translation> + <translation type="vanished">Krótki opis wymaga przynajmniej 10 znaków, ale nie więcej niż 100. Dłuższy opis może być wpisany w polu poniżej.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>Długi opis wymaga przynajmniej 30 znaków.</translation> + <translation type="vanished">Długi opis wymaga przynajmniej 30 znaków.</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>Tytuł</translation> + <translation type="vanished">Tytuł</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>Zgłoszony dnia</translation> + <translation type="vanished">Zgłoszony dnia</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>Historia zgłoszeń</translation> + <translation type="vanished">Historia zgłoszeń</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>Wyczyść historię zgłoszeń</translation> + <translation type="vanished">Wyczyść historię zgłoszeń</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>Usuń wybraną pozycję</translation> + <translation type="vanished">Usuń wybraną pozycję</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>Niepoprawna odpowiedź z serwera.</translation> + <translation type="vanished">Niepoprawna odpowiedź z serwera.</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>Zaloguj</translation> + <translation type="vanished">Zaloguj</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation>Dane do logowania</translation> + <translation type="vanished">Dane do logowania</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>Login:</translation> + <translation type="vanished">Login:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>Hasło:</translation> + <translation type="vanished">Hasło:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation>Walidacja</translation> + <translation type="vanished">Walidacja</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation>Sprawdź</translation> + <translation type="vanished">Sprawdź</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>Treść wyniku walidacji</translation> + <translation type="vanished">Treść wyniku walidacji</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>Przerwij</translation> + <translation type="vanished">Przerwij</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>Login musi mieć przynajmniej 2 znaki.</translation> + <translation type="vanished">Login musi mieć przynajmniej 2 znaki.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>Hasło musi mieć przynajmniej 5 znaków.</translation> + <translation type="vanished">Hasło musi mieć przynajmniej 5 znaków.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>Poprawne</translation> + <translation type="vanished">Poprawne</translation> </message> </context> <context> @@ -355,12 +319,12 @@ <translation>Filtruj zestawienia</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation>Nazwa zestawienia:</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation>Język implementacji:</translation> </message> @@ -489,11 +453,20 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation>Niepoprawne wyrażenie wartości domyślnej: %1. Jeśli chcesz użyć zwykłego tekstu jako wartość, pamiętaj o zamknięciu go w znakach apostrofu.</translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation>Niepoprawne wyrażenie wartości domyślnej. Jeśli chcesz użyć zwykłego tekstu jako wartość, pamiętaj o zamknięciu go w znakach apostrofu.</translation> + </message> + <message> <source>Invalid default value expression: %1</source> - <translation>Niepoprawna wartość wyrażenia domyślnego: %1</translation> + <translation type="vanished">Niepoprawna wartość wyrażenia domyślnego: %1</translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation>Wprowadź nazwę ograniczenia.</translation> </message> @@ -605,7 +578,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation>Usuń ograniczenie</translation> @@ -665,35 +638,45 @@ <translation>Dodaj ograniczenie wartości domyślnej</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>Czy na pewno chcesz usunąć ograniczenie '%1'?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation>Popraw konfigurację ograniczenia.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation>To ograniczenie nie jest oficjalnie wspireane przez SQLite 2, ale można go używać.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Skala nie jest dozwolona dla kolumn INTEGER PRIMARY KEY.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation>Precyzja nie może być zdefiniowana bez skali.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation>Nie można użyć innego typu niż INTEGER, jeśli opcja AUTOINCREMENT jest wybrana w PRIMARY KEY.</translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation>Typ INTEGER został wymuszony w związku z wybraną opcją AUTOINCREMENT w PRIMARY KEY.</translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Precyzja nie jest dozwolona dla kolumn INTEGER PRIMARY KEY.</translation> </message> @@ -795,10 +778,9 @@ ale można go używać.</translation> <translation>Wprowadź nazwę ograniczenia.</translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation>Autoinkrementacja (tylko dla kolumn o typie %1)</translation> + <translation type="vanished">Autoinkrementacja (tylko dla kolumn o typie %1)</translation> </message> </context> <context> @@ -910,7 +892,7 @@ ale można go używać.</translation> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>Konfiguracja</translation> </message> @@ -975,68 +957,68 @@ ale można go używać.</translation> <translation>Przeglądanie i edycja danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>Liczba wierszy danych na stronie:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation><p>Kiedy dane są wczytane do widoku siatki, szerokość kolumn jest automatycznie dostosowywana. Ta wartość ogranicza początkową szerokość tego dostosowywania, ale użytkownik nadal może rozszerzać kolumnę ręcznie poza ten limit.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation>Ogranicz początkową szerokość kolumn danych (w pikselach):</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation>Wstawianie nowego wiersza w widoku siatki danych.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation>Przed aktualnie wybranym wierszem</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation>Po aktualnie wybranym wierszu.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation>Na końcu widoku siatki danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>Type danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>Dostępne edytory:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation>Edytory wybrane dla tego typu danych:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>Edycja schematu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>Liczba zmian DDL trzymanych w historii.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>Rozmiar historii DDL:</translation> </message> @@ -1045,83 +1027,83 @@ ale można go używać.</translation> <translation type="vanished">Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian schematu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>Zapytania SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>Liczba zapytań trzymana w historii.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>Rozmiar historii:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>Jeśli w oknie edytora SQL jest więcej niż jedno zapytanie, to (jeśli ta opcja jest włączona) tylko jedno zapytanie będzie wykonana - to, które znajduje się pod kursorem pisania. W przeciwnym wypadku wszystkie zapytania będą wykonywane. Zawsze możesz ograniczyć zapytania do wywołania przez zaznaczenie tych zapytań, które chcesz wywołać.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>Wykonuj tylko zapytania będące pod kursorem</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>Aktualizacje</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>Sprawdzaj aktualizacje automatycznie przy starcie</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>Sesje</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>Przywróć ostatnią sesję (aktywne okna MDI) po starcie</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation>Filtruj skróty po nazwie, lub kombinacji klawiszy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation>Akcja</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>Kombinacja klawiszy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation>Zmiana języka wymaga restartu aplikacji, aby zadziałać.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation>Układ kompaktowy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation><p>Układ kompaktowy zmniejsza wszystkie marginesy i odstępy na interfejsie do minimum, robiąc więcej miejsca na wyświetlanie danych. Powoduje to, że interfejs jest nieco mniej estetyczny, ale pozwala to na prezentację większej ilości danych naraz.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation>Użyj układu kompaktowego</translation> </message> @@ -1197,7 +1179,7 @@ ale można go używać.</translation> <translation>Wyświetlaj tabele i indeksy systemowe na liście</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation>Okna tabel</translation> </message> @@ -1206,12 +1188,12 @@ ale można go używać.</translation> <translation type="obsolete">Gdy włączone, Okna Tabel będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation>Otwieraj Okna Tabeli z zakładką danych na początek</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation>Okna Widoków</translation> </message> @@ -1220,42 +1202,42 @@ ale można go używać.</translation> <translation type="obsolete">Gdy włączone, Okna Widoków będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation>Otwieraj Okna Widoku z zakładką danych na początek</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation>Strefy dokowania głównego okna</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation>Lewa i prawa strefa zajmują rogi</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation>Górna i dolna strefa zajmują rogi</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation>Ukryj wtyczki wbudowane</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>Aktualny styl:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>Podgląd</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>Włączone</translation> </message> @@ -1264,13 +1246,13 @@ ale można go używać.</translation> <translation type="obsolete">Kolumna</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>Wyłączone</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>Język</translation> </message> @@ -1300,212 +1282,234 @@ ale można go używać.</translation> <translation>Próbuj całkowicie pomijać dialog podczas upuszczania pliku bazy na listę</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation>Zachowaj wartość NULL gdy wstawiania jest pusta wartość</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation><p>Gdy to jest włączone i użytkownik zatrzyma kursor myszy nad komórką w widoku siatki danych (wyniki zapytania, dane tabeli, dane widoku), to pojawi się podpowiedź ze szczegółami odnośnie komórki - zawiera ona szczegóły , jak typ danych kolumny, ograniczenia, ROWID i inne.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation><p>Maksymalna liczba konfiguracji w oknie dialogowym zaludniania tabeli, która ma być trzymana w konfiguracji. Wartość 100 powinna być wystarczająca.</p></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation>Liczba zapamiętanych konfiguracji zaludniania tabeli</translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation>Pokazuj podpowiedź ze szczegółami o kolumnie i wierszu w widoku siatki danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation><p>Kiedy edytowana jest komórka, która miała wartość NULL, a nowa wartość wprowadzona jest pusta, to ta opcja decyduje o tym, czy wartość powinna pozostać NULL (gdy ta opcja jest włączona), czy powinna być nadpisana pustym łańcuchem znaków (gdy ta opcja wyłączona).</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation><html><head/><body><p>Włącz to, aby wymusić wartość DEFAULT podczas zatwierdzania wartości NULL dla kolumn, które mają zdefiniowaną wartość DEFAULT, nawet jeśli kolumna dopuszcza wartości NULL.</p><p>Wyłącz tą opcję aby używać wartości DEFAULT tylko i wyłącznie, gdy wartość NULL jest zatwierdzana dla kolumny z ograniczeniem NOT NULL.</p></body></html></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation>Używaj wartości DEFAULT (jeśli zdefiniowana), gdy zatwierdzana jest wartość NULL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation><p>Gdy włączone, Okna Tabeli będą się otwierać na zakładce danych, zamiast na zakładce struktury.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation><p>Gdy włączone, to zakładka "Dane" będzie umieszczona jako pierwsza w każdym Oknie Tabeli, zamiast jako druga.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation>Ustaw zakładkę danych jako pierwszą w Oknie Tabeli</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation><p>Gdy włączone, Okna Widoku będą się otwierać na zakładce danych, zamiast na zakładce struktury.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation><p>Gdy włączone, to zakładka "Dane" będzie umieszczona jako pierwsza w każdym Oknie Widoku, zamiast jako druga.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation>Ustaw zakładkę danych jako pierwszą w Oknie Widoku</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation>Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian struktury</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation><p>Maksymalna liczba parametrów zapytania (:param, @param, $param, ?) trzymanych w historii. Kiedy ponownie użyjesz parametru o tej samej nazwie/pozycji, SQLiteStudio wstępnie uzupełni go używając ostatniej zapamiętanej wartości (nadal będzie można ją zmienić). Wartość 100 powinna być wystarczająca.</p></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation>Liczba zapamiętanych parametrów zapytania</translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation>Pole Statusu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation><p>Kiedy użytkownik ręcznie zamyka panel Statusu, ta opcja zapewnia, że zostanie ono otwarte ponownie, gdy jest wyświetlona nowa wiadomość. Jeśli jest ona wyłączona, to panel Statusu może być otwarte tylko ręcznie z menu "Widok".</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation>Zawsze otwieraj panel Statusu, gdy wyświetlona jest nowa wiadomość</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>Aktywna wtyczka formatera</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>Czcionka edytora SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>Czcionka listy baz danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>Czcionka dodatkowych etykiety listy baz danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>Czcionka widoku danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>Czcionka pola statusu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>Kolory edytora SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation>Tło bieżącej linii</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation><p>Łańcuchy znaków SQL są zamknięte pomiędzy znakami apostrofu.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation>Czcionka łańcucha znaków</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation><b>Parametry wiążące to wyrażenia zastępcze dla wartości, które mają być dopiero dostarczone przez użytkownika. Mają one jedną z form: </p><ul><li>:nazwa_parametru</li><li>$nazwa_parametru</li><li>@nazwa_parametru</li><li>?</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation>Czcionka parametru wiążącego</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation>Tło podświetlonych nawiasów</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation><p>Wartości BLOB są wartościami binarnymi, reprezentowanymi jako liczby heksadecymalne, jak np:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation>Standardowa czcionka</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation>Tło obszaru numerów linii</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation>Czcionka słowa kluczowego</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation>Czcionka liczby</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation>Czcionka komentarza</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation><p>Poprawne obiekty to nazwy tabel, indekstów, wyzwalaczy i widoków, które istnieją w basie SQLite.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation>Czcionka poprawnych obiektów</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation>Kolory widoku danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation><p>Jakiekolwiek zmiany danych będą otoczone ramką w tym kolorze, dopóki nie zostaną zatwierdzone do bazy.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation>Kolor obramowania niezatwierdzonych danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation><p>W razie błędu podczas zatwierdzania zmian w danych, komórki sprawiające problem będą obramowane tym kolorem.</p></translation> </message> @@ -1522,140 +1526,140 @@ ale można go używać.</translation> <translation type="vanished"><p>W przypadku błędu podczas zatwierdzania zmian danych, komórka będąca przyczyną problemu zostanie obrysowana tym kolorem.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation>Kolor obrysu błędu zatwierdzania</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation>Kolor czcionki wartości NULL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation>Tło wiersza usuniętego</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation>Kolory listy baz danych</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation><p>Dodatkowe etykiety to te, które mówią o wersji SQLite, liczbie obiektów w głębszych częściach drzewa, itp.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation>Czcionka dodatkowych etykiet</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation>Kolory pola statusu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation>Czcionka wiadomości informującej</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation>Czcionka wiadomości ostrzegającej</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation>Czcionka wiadomości błędu</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>Opis:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation>Kategoria:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>Wersja:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>Autor:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>Nazwa wewnętrzna:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>Zależności:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation>Konflikty:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation>Szczegóły wtyczki</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation>Wtyczki są ładowane/wyładowywane natychmiast po zaznaczeniu/odznaczeniu, ale zmodyfikowana lista wtyczek, które należy załadować przy starcie nie jest zapisana, dopóki nie zatwierdzisz całego okna configuracji.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (wbudowany)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>Szczegóły</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation>Brak wtyczek w tej kategorii.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>Dodaj nowy typ danych</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>Zmień nazwę wybranego typu danych</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation>Usuń wybrany typ danych</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation>Pomoc w konfiguracji edytorów typów danych</translation> </message> @@ -1807,138 +1811,154 @@ ale można go używać.</translation> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation>Filtruj dane</translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation>Widok siatki</translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation>Widok formularza</translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation>Odśwież dane tabeli</translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>Pierwsza strona</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>Poprzednia strona</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>Następna strona</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>Ostatnia strona</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation>Filtruj</translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation>Wciśnij Enter lub naciśnij przycisk "Zastosuj filtr", aby zastosować nową wartość.</translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation>Pokaż filtr dla każdej kolumny</translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation>Zastosuj filtr</translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation>Zatwierdź zmiany dla wybranych komórek</translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation>Wycofaj zmiany dla wybranych komórek</translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation>Pokaż widok siatki dla wyników</translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation>Pokaż widok formularza dla wyników</translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation>Filtruj po tekście</translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation>Filtruj używając Wyrażeń Regularnych</translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation>Filtruj używając wyrażenia SQL</translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation>Karty na górze</translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation>Karty na dole</translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation>Wstawiaj nowe wiersze nad aktualnie wybranym wierszem</translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation>Wstawiaj nowe wiersze pod aktualnie wybranym wierszem</translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation>Wstawiaj nowe wiersze na końcu widoku siatki danych</translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation>Całkowita liczba wierszy jest liczona. Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostanie zakończone.</translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>Wiersz: %1</translation> </message> @@ -2145,10 +2165,14 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation><p>Automatyczne generowanie nazwy zostało wyłączone, ponieważ nazwa była edytowana ręcznie. Aby przywrócić automatyczne generowanie, proszę wyczyścić pole nazwy.</p></translation> </message> <message> + <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <translation type="vanished"><p>Automatyczne generowanie nazwy zostało wyłączone, ponieważ nazwa była edytowana ręcznie. Aby przywrócić automatyczne generowanie, proszę wyczyścić pole nazwy.</p></translation> + </message> + <message> <location filename="../dialogs/dbdialog.cpp" line="493"/> <source>Enter a database file path.</source> <translation>Wprowadź ścieżkę do pliku bazy danych.</translation> @@ -2260,298 +2284,435 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani <translation>Filtruj po nazwie</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>Wklej</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>Zaznacz wszystko</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>Utwórz grupę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>Usuń grupę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>Zmień nazwę grupy</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>Dodaj bazę danych</translation> + <translation type="vanished">Dodaj bazę danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>Edytuj bazę danych</translation> + <translation type="vanished">Edytuj bazę danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>Usuń bazę danych</translation> + <translation type="vanished">Usuń bazę danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>Połącz z bazą danych</translation> + <translation type="vanished">Połącz z bazą danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>Rozłącz się z bazą danych</translation> + <translation type="vanished">Rozłącz się z bazą danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>Importuj</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>Eksportuj bazę danych</translation> + <translation type="vanished">Eksportuj bazę danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>Konwertuj typ bazy danych</translation> + <translation type="vanished">Konwertuj typ bazy danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> - <translation>Odkurz</translation> + <translation type="vanished">Odkurz</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>Sprawdź spójność</translation> + <translation type="vanished">Sprawdź spójność</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>Utwórz tabelę</translation> + <translation type="vanished">Utwórz tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>Edytuj tabelę</translation> + <translation type="vanished">Edytuj tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation>Wykonywanie z pliku przerwane. Jakiekolwiek wykonane zapytania zostały wycofane.</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation>Dod&aj bazę danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation>&Edytuj bazę danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation>U&suń bazę danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation>&Połącz z bazą danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> + <translation>&Rozłącz się z bazą danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation>&Eksportuj bazę danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation>Kon&wertuj typ bazy danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation>Odk&urz</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation>Sprawdź spó&jność</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation>Utwórz &tabelę</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation>Edytuj t&abelę</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation>Usuń ta&belę</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation>Utwórz &indeks</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation>Edytuj i&ndeks</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation>Usuń in&deks</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation>Utwórz wyz&walacz</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation>Edytuj wyzw&alacz</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation>Usuń wyzwa&lacz</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation>Utwórz &widok</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation>Edytuj w&idok</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation>Usuń wi&dok</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation>&Odśwież schematy wszystkich baz danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation>Odśwież schemat wy&branej bazy danych</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation>Otwórz katalog pliku</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation>Wykonaj SQL z pliku</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation>Generuj zapytanie dla tabeli</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation>Pozycja o nazwie %1 istnieje już w grupie %2.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation>Czy napewno chcesz wycofać bazę '%1' z listy?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation>Czy na pewno chcesz wycofać następujące bazy z listy: %1</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation>Wycofaj bazę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation>Odkurz (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation>Wartość automatycznej inkrementacji dla tabeli '%1' została zresetowana.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> <translation>Czy na pewno chcesz usunąć wszystkie dane z tabel(i): %1?</translation> </message> <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation>Nie można wykonać SQLa, ponieważ aplikacja nie mogła rozpocząć transakcji: %1</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation>Nie udało się otworzyć pliku '%1' do odczytu: %2</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation>Nie można wykonać SQLa, ponieważ aplikacja nie mogła zatwierdzić transakcji: %1</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation>Zakończono wykonywanie %1 zapytań w %2 sekund(y). %3 nie zostały wykonane w zwiążku z błędami.</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation>Zakończono wykonywanie %1 zapytań w %2 sekund(y).</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation>Nie można wykonać SQL w związku z błędem.</translation> + </message> + <message> <source>Drop the table</source> <translation type="obsolete">Porzuć tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>Eksportuj tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>Importuj do tabeli</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>Zaludnij tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>Utwórz podobną tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>Utwórz indeks</translation> + <translation type="vanished">Utwórz indeks</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>Edytuj indeks</translation> + <translation type="vanished">Edytuj indeks</translation> </message> <message> <source>Drop the index</source> <translation type="obsolete">Porzuć indeks</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>Utwórz wyzwalacz</translation> + <translation type="vanished">Utwórz wyzwalacz</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>Edytuj wyzwalacz</translation> + <translation type="vanished">Edytuj wyzwalacz</translation> </message> <message> <source>Drop the trigger</source> <translation type="obsolete">Porzuć wyzwalacz</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>Utwórz widok</translation> + <translation type="vanished">Utwórz widok</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>Edytuj widok</translation> + <translation type="vanished">Edytuj widok</translation> </message> <message> <source>Drop the view</source> <translation type="obsolete">Porzuć widok</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>Dodaj kolumnę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>Edytuj kolumnę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>Usuń kolumnę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>Usuń wybrane elementy</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>Wyczyść filtr</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>Odśwież schematy wszystkich baz danych</translation> + <translation type="vanished">Odśwież schematy wszystkich baz danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>Odśwież schemat wybranej bazy danych</translation> + <translation type="vanished">Odśwież schemat wybranej bazy danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>Usuń tabelę</translation> + <translation type="vanished">Usuń tabelę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>Wyzeruj sekwencję autoinkrementacji</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>Usuń indeks</translation> + <translation type="vanished">Usuń indeks</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>Usuń wyzwalacz</translation> + <translation type="vanished">Usuń wyzwalacz</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>Usuń widok</translation> + <translation type="vanished">Usuń widok</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation>Wymaż dane tabeli</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>Baza danych</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>Grupowanie</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>Utwórz grupę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>Nazwa grupy</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>Usuń grupę</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>Czy na pewno chcesz usunąć grupę %1? @@ -2566,14 +2727,14 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans <translation type="obsolete">Czy na pewno chcesz usunąć bazę danych '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation> </message> @@ -2586,22 +2747,22 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans <translation type="obsolete">Wykonanie VACUUM przebiegło pomyślnie.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>Sprawdzanie spójności (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>Wyzeruj autoinkrementację</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>Czy na pewno chcesz wyzerować wartość autoinkrementacji dla tabeli '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>Wystąpił błąd podczas próby wyzerowania wartości autoinkrementacji dla tabeli '%1': %2</translation> </message> @@ -2614,37 +2775,37 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans <translation type="vanished">Czy na pewno chcesz usunąć wszystkie dane z tabeli '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation>Wystąpił błąd podczas próby usunięcia danych z tabeli '%1': %2</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation>Wszystkie dane z tabeli '%1' zostały usunięte.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>Następujące obiekty zostaną usunięte: %1</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>Następujące bazy danych zostaną usunięte z listy: %1</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation>Pozostałe obiekty z usuniętej grupy będą przeniesione w miejsce, gdzie dotychczas była ta grupa.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%1<br><br>Czy na pewno chcesz kontynuować?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>Usuń obiekty</translation> </message> @@ -2738,76 +2899,76 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans <translation>Wyzwalacze (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation>Przenieś</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation>Również dane</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation>Również indeksy</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation>Również wyzwalacze</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>Przerwij</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation>Nie udało się automatycznie dodać upuszczonego pliku bazy '%1'. Niezbędna ręczna ingerencja.</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation>Tabele powiązane</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Czy chcesz zawrzeć również powiązane tabele: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation>Konflikt nazwy</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>Następująy obiekt istnieje już w docelowej bazie danych. Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przerwać operację.</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation>Konwersja zapytań SQL</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>Następujące błędy wystąpiły podczas konwersji zapytań SQL do docelowej wersji SQLite:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Czy chcesz zignorować te błędy i kontynuować?</translation> </message> @@ -2863,110 +3024,116 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Zapytanie</translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>Historia</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>Wyniki w osobnej karcie</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>Wyniki pod zapytaniem</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>Edytor SQL %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>Wyniki</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>Wykonaj zapytanie</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation>Wytłumacz zapytanie</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>Wymaż historię zapytań</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>Wyeksportuj wyniki</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>Utwórz widok z zapytania</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>Poprzednia baza danych</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>Następna baza danych</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>Pokaż następną kartę</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>Pokaż poprzednią kartę</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation>Aktywuj wyniki poniżej</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation>Aktywuj edytor SQL powyżej</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation>Usuń wybrane wpisy z historii SQL</translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation>Aktywna baza danych (%1/%2)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation>Zapytanie ukończone w %1 sekund(y). Liczba przetworzonych wierszy: %2</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation>Zapytanie ukończone w %1 sekund(y).</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation>Okno edytora "%1" ma niezatwierdzone dane.</translation> </message> @@ -2975,22 +3142,22 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation type="obsolete">Zapytanie ukończone w %2 sekund(y).</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>Wymaż historię zapytań</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>Czy na pewno chcesz wymazać całą historię zapytań SQL? Tego nie można odwrócić.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation>Nie wybrano bazdy danych w edytorze SQL. Nie można utworzyć widoku dla nieznanej bazy.</translation> </message> @@ -3018,6 +3185,64 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation>Wykonaj SQL z pliku</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation>Plik wejściowy</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation>Ścieżka do pliku</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation>Przeglądaj pliki</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation>Opcje</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation>Kodowanie pliku</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation>Pomiń zapytania z błędami</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation>Skrypty SQL (*.sql);;Wszystkie pliki (*)</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation>Wykonaj plik SQL</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation>Proszę podać plik do wykonania</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation>Podany plik nie istnieje, lub nie można go odczytać.</translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3166,69 +3391,102 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Opcje formatu eksportowania</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>Wybierz bazę do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>Wybierz tabelę do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation>Wprowadź poprawne zapytanie do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation>Wybierz przynajmniej jeden obiekt do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation>Musisz podać nazwę pliku do którego należy wyeksportować.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Ścieżka którą podałeś jest istniejącym katalogiem. Nie można go nadpisać.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation>Katalog '%1' nie istnieje.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Plik '%1' istnieje i zostanie nadpisany.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation>Wszystkie pliki (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation>Wybierz plik do eksportu</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Wystąpił wewnętrzny błąd podczas eksportu. To jest błąd programu. Proszę to zgłosić.</translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation>Błędy wykonywania</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation>Następujące błędy wystąpiły podczas wykonywania zapytań SQL z pliku:</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation>SQL</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation>Błąd</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation>Wyniki zapytań, które zostały wykonane, zostały zatwierdzone.</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation>Wyniki zapytań, które zostały wykonane zostały wycofane.</translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3248,49 +3506,49 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>Zatwierdź wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>Wycofaj wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>Pierwszy wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>Poprzedni wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>Następny wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>Ostatni wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>Wstaw nowy wiersz</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>Usuń bieżący wiersz</translation> @@ -3349,13 +3607,13 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Kod inicjalizacji:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation>Kod implementacji funkcji:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation>Kod implementacji ostatniego kroku:</translation> </message> @@ -3495,7 +3753,7 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <message> <location filename="../dialogs/importdialog.ui" line="141"/> <source>Options</source> - <translation>OOpcje</translation> + <translation>Opcje</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="182"/> @@ -3523,42 +3781,42 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Opcje źródła danych</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Jeśli wpiszesz nazwę tabeli, która nie istnieje, to zostanie ona stworzona.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>Wprowadź nazwę tabeli</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>Wybierz wtyczkę importu</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>Musisz podać plik z którego należy zaimportować.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>Plik '%1' nie istnieje.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Ścieżka którą podałeś jest katalogiem. Wymagany jest zwykły plik.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>Wybierz plik do importu</translation> </message> @@ -3597,12 +3855,12 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Kolumna</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation>Zestawienie</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>Sortowanie</translation> </message> @@ -3782,273 +4040,406 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Pasek narzędzi widoku</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation>Kontrolki konfiguracji</translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation>Silniki podświetlania składni</translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>Edytory danych</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation>Uruchomiono tryb debugowania. Wciśnij %1 lub wybierz menu 'Pomoc / Otwórz konsolę debugowania' aby otworzyć konsolę debugowania.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation>Uruchomiono tryb debugowania. Wiadomości debugujące są wyświetlane na standardowym wyjściu.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>Należy zrestartować aplikację, aby nastąpiła zmiana języka.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>Otwórz edytor SQL</translation> + <translation type="vanished">Otwórz edytor SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>Otwórz historię DDL</translation> + <translation type="vanished">Otwórz historię DDL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> <source>Open SQL functions editor</source> - <translation>Otwórz edytor funkcji SQL</translation> + <translation type="vanished">Otwórz edytor funkcji SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> <source>Open collations editor</source> - <translation>Otwórz edytor zestawień</translation> + <translation type="vanished">Otwórz edytor zestawień</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>Importuj</translation> + <translation type="vanished">Importuj</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>Eksportuj</translation> + <translation type="vanished">Eksportuj</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>Otwórz okno konfiguracji</translation> + <translation type="vanished">Otwórz okno konfiguracji</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>Ustaw okna w płytki</translation> + <translation type="vanished">Ustaw okna w płytki</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>Ustaw okno poziomo</translation> + <translation type="vanished">Ustaw okno poziomo</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>Ustaw okna pionowo</translation> + <translation type="vanished">Ustaw okna pionowo</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>Ustaw okna caskadowo</translation> + <translation type="vanished">Ustaw okna kaskadowo</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>Następne okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>Poprzednie okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation>Ukryj pole statusu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>Zamknij wybrane okno</translation> + <translation type="vanished">Zamknij wybrane okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>Zamknij wszystkie okna, oprócz wybranego</translation> + <translation type="vanished">Zamknij wszystkie okna, oprócz wybranego</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>Zamknij wszystkie okna</translation> + <translation type="vanished">Zamknij wszystkie okna</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>Przywróć ostatnio zamknięte okno</translation> + <translation type="vanished">Przywróć ostatnio zamknięte okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>Zmień nazwę wybranego okna</translation> + <translation type="vanished">Zmień nazwę wybranego okna</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>Otwórz Konsolę Debugowania</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation>Otwórz konsolę CSS</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>Zgłoś błąd</translation> + <translation type="vanished">Zgłoś błąd</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>Zgłoś pomysł</translation> + <translation type="vanished">Zgłoś pomysł</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>O programie</translation> + <translation type="vanished">O programie</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>Licencje</translation> + <translation type="vanished">Licencje</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>Otwórz stronę domową</translation> + <translation type="vanished">Otwórz stronę domową</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>Otwórz stronę forum</translation> + <translation type="vanished">Otwórz stronę forum</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>Podręcznik Użytkownika</translation> + <translation type="vanished">Podręcznik Użytkownika</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>Dokumentacja SQLite</translation> + <translation type="vanished">Dokumentacja SQLite</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>Historia zgłoszeń</translation> + <translation type="vanished">Historia zgłoszeń</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>Sprawdź aktualizacje</translation> + <translation type="vanished">Sprawdź aktualizacje</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>Baza danych</translation> + <translation type="vanished">Baza danych</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>Struktura</translation> + <translation type="vanished">Struktura</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>Widok</translation> + <translation type="vanished">Widok</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>Lista okien</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>Narzędzia</translation> + <translation type="vanished">Narzędzia</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>Pomoc</translation> + <translation type="vanished">Pomoc</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation>Otwórz &edytor SQL</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation>Otwórz &historię DDL</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation>Otwórz edytor &funkcji SQL</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation>Otwórz edytor &zestawień</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation>O&twórzy menadżera rozszerzeń</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation>&Importuj</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation>E&ksportuj</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation>Otwórz okno konfi&guracji</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation>Ustaw okna w pły&tki</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation>Ustaw okno po&ziomo</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation>Ustaw okna pio&nowo</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation>Ustaw okna &kaskadowo</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation>Zamknij &wybrane okno</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation>Zamknij wszystkie okna, &oprócz wybranego</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation>Z&amknij wszystkie okna</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation>Przywróć o&statnio zamknięte okno</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation>Zmień nazwę wyb&ranego okna</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation>Zgłoś &błąd</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation>Zgłoś &pomysł</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation>O progra&mie</translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation>&Licencje</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation>Otwórz stronę &domową</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation>Otwórz stronę &forum</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation>&Podręcznik Użytkownika</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation>&Dokumentacja SQLite</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation>Błęd&y i pomysły</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation>Sprawdź akt&ualizacje</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation>Bazy &danych</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation>&Struktura</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation>&Widoki</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation>&Narzędzia</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation>&Pomoc</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>Nie udało się ustawić stylu: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>Zmień nazwę okna</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>Wprowadź nową nazwę dla okna:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Nowe aktualizacje są dostępne: <a href="%1">Kliknij aby poznać szczegóły</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>Uruchomiona jest najnowsza wersja. Nie ma dostępnych aktualizacji.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation>Baza danych podana w parametrach linii poleceń (%1) była już na liście pod nazwą: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>Baza danych podana w linii poleceń (%1) jest tymczasowo dodana do listy pod nazwą: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>Nie udało się dodać bazy danych %1 do listy.</translation> </message> @@ -4084,23 +4475,28 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Wartość null</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation>Skonfiguruj edytory dla tego typu danych</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation>Otwórz kolejną zakładkę</translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation>Wtyczka edytora danych '%1' nie jest załadowana, podczas gdy jest ona zdefiniowana do edycji typu danych '%1'.</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation>Usunięto</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>Tylko do odczytu</translation> @@ -4109,7 +4505,14 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MultiEditorBool</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> + <source>Boolean</source> + <translation type="vanished">Logiczna</translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> <source>Boolean</source> <translation>Logiczna</translation> </message> @@ -4117,7 +4520,14 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> + <source>Date</source> + <translation type="vanished">Data</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> <source>Date</source> <translation>Data</translation> </message> @@ -4125,7 +4535,14 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> + <source>Date & time</source> + <translation type="vanished">Data i czas</translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> <source>Date & time</source> <translation>Data i czas</translation> </message> @@ -4133,7 +4550,14 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MultiEditorHex</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> + <source>Hex</source> + <translation type="vanished">Heks</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> <source>Hex</source> <translation>Heks</translation> </message> @@ -4145,7 +4569,15 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation type="obsolete">Liczba</translation> </message> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="vanished">Liczba</translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> <source>Number</source> <comment>numeric multi editor tab name</comment> <translation>Liczba</translation> @@ -4154,50 +4586,64 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> <source>Text</source> - <translation>Tekst</translation> + <translation type="vanished">Tekst</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation>Tabulator zmienia aktywność</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>Wytnij</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>Wklej</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>Usuń</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation>Cofnij</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation>Przywróć</translation> </message> </context> <context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation>Tekst</translation> + </message> +</context> +<context> <name>MultiEditorTime</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> + <source>Time</source> + <translation type="vanished">Czas</translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> <source>Time</source> <translation>Czas</translation> </message> @@ -4274,37 +4720,40 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Komponent</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation>Aplikacja zostanie zamknięta i uruchomiony zostanie instalator aktualizacji, który ściągnie i zainstaluje wszystkie aktualizacje.</translation> + </message> + <message> <source>Current version</source> - <translation>Obecna wersja</translation> + <translation type="vanished">Obecna wersja</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>Wersja aktualizacji</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>Sprawdzaj aktualizacje na starcie</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>Aktualizuj do nowej wersji!</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>Aktualizacja będzie pobrana i zainstalowana automatycznie. Spowoduje to również na końcu restart aplikacji.</translation> + <translation type="vanished">Aktualizacja będzie pobrana i zainstalowana automatycznie. Spowoduje to również na końcu restart aplikacji.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>Nie teraz.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>Nie instaluj aktualizacji i zamknij to okno.</translation> </message> @@ -4356,32 +4805,32 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Zaludnij</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation>Przerwij</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>Konfiguruj</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation>Konfiguracja zaludniania dla tej kolumny jest niepoprawna lub niekompletna.</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation>Wybierz bazę danych z tabelą do zaludnienia</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>Wybierz tabelę do zaludnienia</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>Musisz zaznaczyć przynajmniej jedną kolumnę.</translation> </message> @@ -4456,129 +4905,134 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>nazwa zestawienia: %1</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation>Widok siatki danych</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation>Skopiuj zawartość komórek do schowka.</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation>Skopiuj zawartość komórek z z nagłówkiem do schowka</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Paste cell(s) contents from clipboard</source> <translation>Wklej zawartość komórkek ze schowka.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="25"/> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation>Ustaw pustą wartość dla wybranych komórek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation>Ustaw wartość NULL dla wybranych komórek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation>Zatwierdź zmiany dla zawartości komórek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation>Wycofaj zmiany dla zawartości komórek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation>Usuń wybrane wiersze danych</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation>Wstaw nowy wiersz danych</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation>Otwórz zawartość wybranej komórki w osobnym edytorze</translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation>Liczba dostępnych stron: %1</translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation>Liczba załadowanych wierszy: %1</translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation>Widok danych (zarówno siatki i formularza)</translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation>Odśwież dane</translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation>Przełącz do widoku siatki danych</translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation>Przełącz do widoku formularza danych</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation>Lista baz</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation>Usuń zaznaczony element</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation>Wyczyść zawartość filtra</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation>Odśwież schemat</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation>Odśwież wszystkie schematy</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation>Dodaj bazę danych</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation>Zaznacz wszystkie elementy</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation>Kopiuj zaznaczone elementy</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation>Wklej ze schowka</translation> </message> @@ -4653,42 +5107,42 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Usuń bieżący wiersz</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation>Okno główne</translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation>Otwórz edytor SQL</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation>Poprzednie okno</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation>Następne okno</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation>Ukryj pole statusu</translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation>Otwórz okno konfiguracji</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation>Otwórz Konsolę Debugowania</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation>Otwórz konsolę CSS</translation> </message> @@ -4699,111 +5153,111 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation>Wytnij wybrany tekst</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation>Skopiuj wybrany tekst</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation>Usuń wybrany tekst</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation>Cofnij</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation>Przywróć</translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation>Pole wprowadzania edytora SQL</translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation>Zaznacz całą zawartość edytora</translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation>Zapisz zawartość do pliku</translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation>Wczytaj zawartość z pliku</translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation>Znajdź w tekście</translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation>Znajdź następny</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation>Znajdź poprzedni</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation>Zmień w tekście</translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation>Usuń bieżącą linię</translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation>Wywołaj asystenta kodu</translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation>Formatuj zawartość</translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation>Przenieś wybrany blok tekstu o jedną linię w dół</translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation>Przenieś wybrany blok tekstu o jedną linię w górę</translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation>Skopiuj wybrany blok tekstu i wklej go poniżej</translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation>Skopiuj wybrany blok tekstu i wklej go powyżej</translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation>Przełącz komentarz</translation> </message> @@ -4824,14 +5278,12 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Plik bazy danych</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> <source>Reports history window</source> - <translation>Okno history zgłoszeń</translation> + <translation type="vanished">Okno history zgłoszeń</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation>Usuń wybraną pozycję</translation> + <translation type="vanished">Usuń wybraną pozycję</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4879,6 +5331,11 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Przenieś aktywność klawiatury do edytora SQL powyżej</translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation>Usuń wybrane wpisy z historii SQL</translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation>Okno tabeli</translation> @@ -5103,179 +5560,179 @@ znajdź następny</translation> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>Wytnij</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>Kopiuj</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>Wklej</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>Usuń</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>Zaznacz wszystko</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation>Cofnij</translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation>Przywróć</translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation>Dopełnij</translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>Formatuj SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>Zapisz SQL do pliku</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation>Wybierz plik do zapisu SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>Wczytaj SQL z pliku</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>Usuń linię</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation>Przesuń blok w dół</translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation>Przesuń blok w górę</translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation>Skopiuj blok w dół</translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation>Skopiuj blok w górę</translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>Znajdź</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>Znajdź następny</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>Znajdź poprzedni</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>Zastąp</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation>Przełącz komentarz</translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation>Zapisano zawartość SQL do pliku: %1</translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation>Dopełnianie składni może być użyte tylko wtedy, gdy poprawna baza danych jest ustawiona w edytorze SQL.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation>Zawartość edytora SQL jest ogromna, więc sprawdzanie błędów i podświetlanie istniejących obiektów zostało tymczasowo wyłączone.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>Zapisz do pliku</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation>Nie udało się otworzyć pliku '%1' do zapisu: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation>Skrypty SQL (*.sql);;Wszystkie pliki (*)</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>Otwórz plik</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation>Nie udało się otworzyć pliku '%1' do odczytu: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>Osiągnięto koniec dokumentu. Wciśnij szukanie ponownie, aby zrestartować szukanie.</translation> </message> @@ -5331,24 +5788,24 @@ znajdź następny</translation> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation>Nie można edytować tej komórki. Szczegóły: %1</translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation>Struktura tej tabeli zmieniła się od ostatniego ładowania danych. Przeładuj dane, aby kontynuować.</translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation>Edytowanie ogromnych ilości danych w podręcznym edytorze nie jest dobrym pomysłem. Może być on powolny i nieporęczny. Lepiej edytować takie duże ilości danych w Widoku Formularza, lub w osobnym oknie edytora (dostępnym w menu prawego kliknięcia myszy).</translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation>Klucz obcy dla kolumny %2 ma więcej niż %1 możliwych wartości. To zbyt wiele, by wyświetlić w liście rozwijanej. Musisz edytować wartość ręcznie.</translation> </message> @@ -5356,8 +5813,8 @@ znajdź następny</translation> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation> </message> @@ -5370,12 +5827,12 @@ znajdź następny</translation> <translation type="vanished">Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Nie można zatwierdzić danych dla komórki, która odnosi się do zamkniętej już bazy danych.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Nie udało się rozpocząć transakcji na bazie danych. Szczegóły: %1</translation> </message> @@ -5384,12 +5841,12 @@ znajdź następny</translation> <translation type="vanished">Wystąpił błąd podczas zatwierdzania transakcji: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Wystąpił błąd podczas wycofywania transakcji: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Próbowano zatwierdzić komórkę, której nie można edytować (a mimo to została zmodyfikowana i czeka na zatwierdzenie)! To jest błąd. Proszę to zgłosić.</translation> </message> @@ -5398,8 +5855,8 @@ znajdź następny</translation> <translation type="vanished">Wystąpił błąd podczas zatwierdzania danych: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Błąd podczas wykonywania zapytania SQL na bazie '%1': %2</translation> </message> @@ -5408,37 +5865,42 @@ znajdź następny</translation> <translation type="obsolete">Błąd podczas wykonywania zapytania SQL: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation>Niezatwierdzone dane</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation>Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation>Wystąpił błąd podczas zatwierdzania transakcji: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation>Wystąpił błąd podczas zatwierdzania danych: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation>Liczba wierszy na stronę została zmniejszona do %1, w związku z liczbą kolumn (%2) w widoku danych.</translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation>Błąd podczas wczytywania wyników zapytania: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation>Wstaw wiele wierszy</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation>Liczba wierszy do wstawienia:</translation> </message> @@ -5446,117 +5908,137 @@ znajdź następny</translation> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation>Idź do powiązanego wiersza w...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>Kopiuj jako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>Wklej</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>Wklej jako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>Ustaw wartości NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>Wymaż wartości</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation>Edytuj wartość w edytorze</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>Zatwierdź</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation>Kopiuj z nagłówkami</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>Wycofaj</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation>Zatwierdź zaznaczone komórki</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation>Wycofaj zaznaczone komórki</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation>Zdefiniuj kolumny po których sortować</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation>Wycofaj własne sortowanie</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>Wstaw wiersz</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>Wstaw wiele wierszy</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>Usuń zaznaczony wiersz</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation>Pokaż wartość w przeglądarce</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation>Generuj zapytanie dla wybranych komórek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation>Nie wybrano elementów do których należy wkleić zawartość schowka.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation>Idź do powiązanego wiersza w tabeli '%1'</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation>tabela '%1'</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation>Powiązany wiersz (%1)</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation>Przyciąć wklejany tekst?</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation>Wklejany tekst zawiera spacje na początku lub końcu. Czy przyciąć go automatycznie?</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>Edytuj wartość</translation> </message> @@ -5579,6 +6061,119 @@ znajdź następny</translation> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation>Filtruj rozszerzenia</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation>Pozostaw puste, aby użyć domyślnej funkcji</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation>Plik rozszerzenia</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation>Funkcja inicjalizująca</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation>Bazy danych</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation>Zarejestruj we wszystkich bazach danych</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation>Zarejestruj w następujących bazach danych:</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation>Okno menadżera rozszerzeń ma niezatwierdzone modyfikacje.</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation>Menadżer rozszerzeń</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation>Zatwierdź wszystkie zmiany w rozszerzeniach</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation>Wycofaj wszystkie zmiany w rozszerzeniach</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation>Dodaj nowe rozszerzenie</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation>Usuń wybrane rozszerzenie</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation>Podręcznik edytowania rozszerzeń</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation>Plik o podanej ścieżce nie istnieje lub nie można go odczytać.</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation>Nie można załadować rozszerzenia: %1</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation>Niepoprawna nazwa funkcji inicjalizującej. Nazwa funkcji może zawierać jedynie znaki alfanumeryczne i znak podkreślenia.</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation>Biblioteki linkowania dynamicznego (*.dll);;Wszystkie pliki (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation>Obiekty wspóldzielone (*.so);;Wszystkie pliki (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation>Biblioteki dynamiczne (*.dylib);;Wszystkie pliki (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation>Wszystkie pliki (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation>Otwórz plik</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5687,7 +6282,7 @@ ale można ich używać.</translation> <translation>Wprowadź nazwę ograniczenia.</translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation>Kolumna obca</translation> @@ -5741,24 +6336,24 @@ ale można ich używać.</translation> <translation>W razie konfliktu</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation>Zestawienie</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation>Kierunek sortowania</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation>Zaznacz przynajmniej jedną kolumnę.</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation>Wprowadź nazwę ograniczenia.</translation> </message> @@ -6357,7 +6952,7 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation><p>Warunek SQL, który będzie wykonany przed właściwym kodem wyzwalacza. W przypadku gdy warunek zwróci fałsz, wyzwalacz nie zostanie uruchomiony dla tego wiersza.</p></translation> </message> @@ -6402,7 +6997,7 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation>Zapytania wyzwalacz do wykonania.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6481,18 +7076,18 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation>Nazwy kolumn wyjściowych</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation>Dane</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation>Wyzwalacze</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6536,121 +7131,121 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation>Nowy widok %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation>Odśwież widok</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation>Zatwierdź zmiany w widoku</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation>Wycofaj zmiany w widoku</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation>Jawne nazwy kolumn</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation>Generuj automatycznie nazwy kolumn wyjściowych bazując na kolumnach wynikowych widoku.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation>Dodaj kolumnę</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation>Edytuj kolumnę</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation>Usuń kolumnę</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation>Przesuń kolumnę w górę</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation>Przesuń kolumnę w dół</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation>Odśwież listę wyzwalaczy</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation>Utwórz nowy wyzwalacz</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation>Edytuj wybrany wyzwalacz</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation>Usuń wybrany wyzwalacz</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation>Okno widoku "%1" ma niezatwierdzone modyfikacje struktury i danych.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation>Okno widoku "%1" ma niezatwierdzone dane.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation>Okno widoku "%1" ma niezatwierdzone modyfikacje struktury.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation>Niezatwierdzone zmiany</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura widoku nie zostanie ustalona. Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation>Pomyślnie zatwierdzono zmiany dla widoku '%1'.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation>Pomyślnie zatwierdzono zmiany dla tabeli '%1' (nazwanej wcześniej '%2').</translation> </message> @@ -6667,7 +7262,7 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation type="vanished">Okno widoku "%1" ma niezatwierdzone modyfikacje struktury.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation>Nie udało się załadować danych dla widoku %1. Szczegóły błędu: %2</translation> </message> @@ -6682,12 +7277,12 @@ Do you want to commit the structure, or do you want to go back to the structure Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation>Wróć do karty struktury</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation>Zatwierdź modyfikacje i przeglądaj dane.</translation> </message> @@ -6700,86 +7295,86 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation type="vanished">Pomyślnie zatwierdzono zmiany dla widoku '%1' (nazwanego wcześniej '%2').</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation>Nie udało się zatwierdzić widoku. Treść błędu: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation>Nadpisz kolumny</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation>Aktualnie zdefiniowane kolumny zostaną nadpisane. Czy chcesz kontynuować?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation>Nie udało się ustalić kolumn zwracanych z widoku. Zapytanie jest prawdopodobnie niekompletne lub zawiera błędy.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation>Nazwa</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation>Zamiast</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation>Warunek</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation>Szczegóły</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation>Nie udało się przetworzyć poprawnie widoku %1. Nie można otworzyć okna widoku.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation>Pusta nazwa</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation>Pusta nazwa dla widoku jest dozwolona w SQLite, ale nie jest zalecana. Czy na pewno chcesz utworzyć widok o pustej nazwie?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation>Zapytanie SELECT nie mogło być poprawnie przeanalizowane. Proszę poprawić zapytanie i spróbować ponownie. Szczegóły: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation>Widok nie mógł być zmodyfikowany w związku z wewnętrznym błędem SQLiteStudio. Proszę to zgłosić!</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation>Kod widok nie mógł być poprawnie przeanalizowany. To jest błąd SQLiteStudio Proszę to zgłosić!</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> @@ -6787,7 +7382,7 @@ Would you like to proceed?</source> Czy chcesz kontynuować?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation>Modyfikacja widoku</translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts index 4d51bcb..0d15aa6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts @@ -14,11 +14,6 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> - <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> <source>Licenses</source> <translation type="unfinished"></translation> @@ -59,6 +54,11 @@ <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation type="unfinished"></translation> @@ -90,258 +90,15 @@ </message> </context> <context> - <name>BugDialog</name> - <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> - <source>Bugs and ideas</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> - <source>Reporter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> - <source>E-mail address</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> - <source>Short description</source> - <translation type="unfinished"></translation> - </message> + <name>BindParamsDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> - <source>Detailed description</source> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> - <source>Show more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> - <source>SQLiteStudio version</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> - <source>Operating system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> - <source>Loaded plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> - <source>Send</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> - <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> - <source>A bug report sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> - <source>An error occurred while sending a bug report: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> - <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> - <source>An idea proposal sent successfully.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> - <source>An error occurred while sending an idea proposal: %1 -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> - <source>A bug report</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> - <source>Describe problem in few words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> - <source>Describe problem and how to reproduce it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> - <source>A new feature idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> - <source>A title for your idea</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> - <source>Describe your idea in more details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> - <source>Reporting as an unregistered user, using e-mail address.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> - <source>Reporting as a registered user.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> - <source>Log out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> - <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> - <source>Enter vaild e-mail address, or log in.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> - <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> - <source>Long description requires at least 30 characters.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportHistoryWindow</name> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Title</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>Reported at</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> - <source>URL</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> - <source>Reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> - <source>Clear reports history</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> - <source>Invalid response from server.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BugReportLoginDialog</name> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> - <source>Log in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> - <source>Credentials</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> - <source>Login:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> - <source>Password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> - <source>Validation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> - <source>Validate</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> - <source>Validation result message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> - <source>Abort</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> - <source>A login must be at least 2 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> - <source>A password must be at least 5 characters long.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> - <source>Valid</source> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> <translation type="unfinished"></translation> </message> </context> @@ -353,12 +110,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation type="unfinished"></translation> </message> @@ -483,11 +240,16 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> - <source>Invalid default value expression: %1</source> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -599,7 +361,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation type="unfinished"></translation> @@ -659,34 +421,44 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -787,12 +559,6 @@ but it's okay to use it.</source> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> - <source>Autoincrement (only for %1 type columns)</source> - <comment>column primary key</comment> - <translation type="unfinished"></translation> - </message> </context> <context> <name>ColumnUniqueAndNotNullPanel</name> @@ -903,7 +669,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation type="unfinished"></translation> </message> @@ -993,215 +759,215 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation type="unfinished"></translation> </message> @@ -1277,350 +1043,372 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation type="unfinished"></translation> </message> @@ -1772,137 +1560,153 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation type="unfinished"></translation> </message> @@ -2081,7 +1885,7 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2183,352 +1987,397 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> - <source>Add a database</source> + <location filename="../dbtree/dbtree.cpp" line="145"/> + <source>Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> - <source>Edit the database</source> + <location filename="../dbtree/dbtree.cpp" line="153"/> + <source>Export the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> - <source>Remove the database</source> + <location filename="../dbtree/dbtree.cpp" line="154"/> + <source>Import into the table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> - <source>Connect to the database</source> + <location filename="../dbtree/dbtree.cpp" line="155"/> + <source>Populate table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> - <source>Disconnect from the database</source> + <location filename="../dbtree/dbtree.cpp" line="156"/> + <source>Create similar table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> - <source>Import</source> + <location filename="../dbtree/dbtree.cpp" line="157"/> + <source>Reset autoincrement sequence</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> - <source>Export the database</source> + <location filename="../dbtree/dbtree.cpp" line="167"/> + <source>Add a column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> - <source>Convert database type</source> + <location filename="../dbtree/dbtree.cpp" line="168"/> + <source>Edit the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> - <source>Vacuum</source> + <location filename="../dbtree/dbtree.cpp" line="169"/> + <source>Delete the column</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> - <source>Integrity check</source> + <location filename="../dbtree/dbtree.cpp" line="170"/> + <source>Delete selected items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> - <source>Create a table</source> + <location filename="../dbtree/dbtree.cpp" line="171"/> + <source>Clear filter</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> - <source>Edit the table</source> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Erase table data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> - <source>Delete the table</source> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> + <source>Database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> - <source>Export the table</source> + <location filename="../dbtree/dbtree.cpp" line="370"/> + <source>Grouping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> - <source>Import into the table</source> + <location filename="../dbtree/dbtree.cpp" line="375"/> + <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> - <source>Populate table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Create group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> - <source>Create similar table</source> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <source>Group name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> - <source>Reset autoincrement sequence</source> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Entry with name %1 already exists in group %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> - <source>Create an index</source> + <location filename="../dbtree/dbtree.cpp" line="1107"/> + <source>Delete group</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> - <source>Edit the index</source> + <location filename="../dbtree/dbtree.cpp" line="1108"/> + <source>Are you sure you want to delete group %1? +All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> - <source>Delete the index</source> + <location filename="../dbtree/dbtree.cpp" line="1171"/> + <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> - <source>Create a trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1179"/> + <source>Are you sure you want to remove following databases from the list: +%1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> - <source>Edit the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1181"/> + <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> - <source>Delete the trigger</source> + <location filename="../dbtree/dbtree.cpp" line="1487"/> + <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> - <source>Create a view</source> + <location filename="../dbtree/dbtree.cpp" line="1546"/> + <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> - <source>Edit the view</source> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> - <source>Delete the view</source> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> + <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> - <source>Add a column</source> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> - <source>Edit the column</source> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> - <source>Delete the column</source> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> - <source>Delete selected items</source> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> - <source>Clear filter</source> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> - <source>Refresh all database schemas</source> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> - <source>Refresh selected database schema</source> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Erase table data</source> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> - <source>Database</source> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> - <source>Grouping</source> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> - <source>Generate query for table</source> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Create group</source> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <source>Group name</source> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> - <source>Entry with name %1 already exists in group %2.</source> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> - <source>Delete group</source> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> - <source>Are you sure you want to delete group %1? -All objects from this group will be moved to parent group.</source> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> - <source>Are you sure you want to remove database '%1' from the list?</source> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> - <source>Are you sure you want to remove following databases from the list: -%1</source> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> - <source>Remove database</source> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> - <source>Vacuum (%1)</source> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> - <source>Autoincrement value for table '%1' has been reset successfully.</source> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> - <source>Are you sure you want to delete all data from table(s): %1?</source> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> - <source>Cannot import, because no import plugin is loaded.</source> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DbTreeItemDelegate</name> @@ -2614,74 +2463,74 @@ All objects from this group will be moved to parent group.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2735,130 +2584,136 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2882,6 +2737,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3030,69 +2943,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3112,49 +3058,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation type="unfinished"></translation> @@ -3213,13 +3159,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation type="unfinished"></translation> </message> @@ -3383,42 +3329,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3457,12 +3403,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation type="unfinished"></translation> </message> @@ -3641,273 +3587,278 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> - <source>Open SQL editor</source> + <location filename="../mainwindow.cpp" line="247"/> + <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> - <source>Open DDL history</source> + <location filename="../mainwindow.cpp" line="248"/> + <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> - <source>Open SQL functions editor</source> + <location filename="../mainwindow.cpp" line="249"/> + <source>Hide status field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> - <source>Open collations editor</source> + <location filename="../mainwindow.cpp" line="257"/> + <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> - <source>Import</source> + <location filename="../mainwindow.cpp" line="258"/> + <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> - <source>Export</source> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> - <source>Open configuration dialog</source> + <location filename="../mainwindow.cpp" line="352"/> + <source>Window list</source> + <comment>menubar view menu</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> - <source>Tile windows</source> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> - <source>Tile windows horizontally</source> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> - <source>Tile windows vertically</source> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> - <source>Cascade windows</source> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> - <source>Next window</source> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> - <source>Previous window</source> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> - <source>Hide status field</source> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> - <source>Close selected window</source> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> - <source>Close all windows but selected</source> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> - <source>Close all windows</source> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> - <source>Restore recently closed window</source> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> - <source>Rename selected window</source> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> - <source>Open Debug Console</source> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> - <source>Open CSS Console</source> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> - <source>Report a bug</source> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> - <source>Propose a new feature</source> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> - <source>About</source> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> - <source>Licenses</source> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> - <source>Open home page</source> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> - <source>Open forum page</source> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> - <source>User Manual</source> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> - <source>SQLite documentation</source> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> - <source>Report history</source> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> - <source>Check for updates</source> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> - <source>Database</source> - <comment>menubar</comment> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> - <source>Structure</source> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> - <source>View</source> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> - <source>Window list</source> - <comment>menubar view menu</comment> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> - <source>Tools</source> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> <comment>menubar</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> - <source>Help</source> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3939,64 +3890,69 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorBool</name> + <name>MultiEditorBoolPlugin</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> <source>Boolean</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDate</name> + <name>MultiEditorDatePlugin</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> + <location filename="../multieditor/multieditordate.cpp" line="86"/> <source>Date</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorDateTime</name> + <name>MultiEditorDateTimePlugin</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> <source>Date & time</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorHex</name> + <name>MultiEditorHexPlugin</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> <source>Hex</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorNumeric</name> + <name>MultiEditorNumericPlugin</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> <source>Number</source> <comment>numeric multi editor tab name</comment> <translation type="unfinished"></translation> @@ -4005,50 +3961,53 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> - <source>Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorTime</name> + <name>MultiEditorTextPlugin</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> <source>Time</source> <translation type="unfinished"></translation> </message> @@ -4125,37 +4084,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> - <source>Current version</source> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> - <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation type="unfinished"></translation> </message> @@ -4207,32 +4161,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation type="unfinished"></translation> </message> @@ -4307,129 +4261,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> - <source>Paste cell(s) contents from clipboard</source> + <source>Copy cell(s) contents together with header to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="25"/> + <source>Paste cell(s) contents from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation type="unfinished"></translation> </message> @@ -4504,42 +4463,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation type="unfinished"></translation> </message> @@ -4550,111 +4509,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4675,16 +4634,6 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> - <source>Reports history window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> - <source>Delete selected entry</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../windows/editorwindow.h" line="26"/> <source>SQL editor window</source> <translation type="unfinished"></translation> @@ -4730,6 +4679,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation type="unfinished"></translation> @@ -4947,179 +4901,179 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation type="unfinished"></translation> </message> @@ -5167,24 +5121,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5192,69 +5146,74 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -5262,117 +5221,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5391,6 +5370,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5498,7 +5590,7 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation type="unfinished"></translation> @@ -5552,24 +5644,24 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -6120,7 +6212,7 @@ Are you sure you want to create a table with blank name?</source> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6165,7 +6257,7 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6243,18 +6335,18 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation type="unfinished"></translation> </message> @@ -6286,224 +6378,224 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.qm Binary files differnew file mode 100644 index 0000000..2856eb9 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.ts new file mode 100644 index 0000000..5df742d --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ro_RO.ts @@ -0,0 +1,6612 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ro_RO"> +<context> + <name>AboutDialog</name> + <message> + <location filename="../dialogs/aboutdialog.ui" line="14"/> + <source>About SQLiteStudio and licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="24"/> + <source>About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="41"/> + <source>Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="55"/> + <source>Environment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="61"/> + <source>Icon directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="81"/> + <source>Form directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="101"/> + <source>Plugin directories</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="111"/> + <source>Configuration directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="121"/> + <source>Application directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="148"/> + <source>Qt version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.ui" line="172"/> + <source>SQLite 3 version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.cpp" line="39"/> + <source>Portable distribution.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.cpp" line="42"/> + <source>MacOS X application boundle distribution.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.cpp" line="45"/> + <source>Operating system managed distribution.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.cpp" line="89"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/aboutdialog.cpp" line="102"/> + <source><h3>Table of contents:</h3><ol>%2</ol></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CollationsEditor</name> + <message> + <location filename="../windows/collationseditor.ui" line="75"/> + <source>Filter collations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="132"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="138"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="145"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="166"/> + <source>Implementation code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="198"/> + <source>Collation name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.ui" line="208"/> + <source>Implementation language:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="52"/> + <source>Collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="57"/> + <source>Commit all collation changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="58"/> + <source>Rollback all collation changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="60"/> + <source>Create new collation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="61"/> + <source>Delete selected collation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="63"/> + <source>Editing collations manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="283"/> + <source>Enter a non-empty, unique name of the collation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="291"/> + <source>Pick the implementation language.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="294"/> + <source>Enter a non-empty implementation code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/collationseditor.cpp" line="388"/> + <source>Collations editor window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColorButton</name> + <message> + <location filename="../common/colorbutton.cpp" line="29"/> + <source>Pick a color</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnCollatePanel</name> + <message> + <location filename="../constraints/columncollatepanel.ui" line="41"/> + <source>Collation name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columncollatepanel.ui" line="73"/> + <source>Named constraint:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columncollatepanel.cpp" line="80"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columncollatepanel.cpp" line="81"/> + <source>Enter a collation name.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnDefaultPanel</name> + <message> + <location filename="../constraints/columndefaultpanel.ui" line="20"/> + <source>Default value:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.ui" line="35"/> + <source>Named constraint:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="39"/> + <source>Enter a default value expression.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnDialog</name> + <message> + <location filename="../dialogs/columndialog.ui" line="14"/> + <source>Column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="23"/> + <source>Name and type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> + <source>Data type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="69"/> + <source>Column name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="79"/> + <source>Size:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="102"/> + <source>Constraints</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="115"/> + <source>Unique</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> + <source>Configure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="129"/> + <source>Foreign Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="143"/> + <source>Collate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="150"/> + <source>Not NULL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="157"/> + <source>Check condition</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="164"/> + <source>Primary Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="171"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="270"/> + <source>Advanced mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="86"/> + <source>Add constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="87"/> + <source>Edit constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="88"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> + <source>Delete constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="89"/> + <source>Move constraint up</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="90"/> + <source>Move constraint down</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="92"/> + <source>Add a primary key</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="93"/> + <source>Add a foreign key</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="94"/> + <source>Add an unique constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="95"/> + <source>Add a check constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="96"/> + <source>Add a not null constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="97"/> + <source>Add a collate constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="98"/> + <source>Add a default constraint</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="233"/> + <source>Are you sure you want to delete constraint '%1'?</source> + <comment>column dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="295"/> + <source>Correct the constraint's configuration.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="298"/> + <source>This constraint is not officially supported by SQLite 2, +but it's okay to use it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="387"/> + <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="388"/> + <source>Precision cannot be defined without the scale.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> + <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnDialogConstraintsModel</name> + <message> + <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="328"/> + <source>Type</source> + <comment>column dialog constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="330"/> + <source>Name</source> + <comment>column dialog constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/> + <source>Details</source> + <comment>column dialog constraints</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnForeignKeyPanel</name> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="29"/> + <source>Foreign table:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="45"/> + <source>Foreign column:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="58"/> + <source>Reactions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="97"/> + <source>Deferred foreign key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="115"/> + <source>Named constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.ui" line="122"/> + <source>Constraint name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.cpp" line="40"/> + <source>Pick the foreign table.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.cpp" line="41"/> + <source>Pick the foreign column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnforeignkeypanel.cpp" line="42"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnPrimaryKeyPanel</name> + <message> + <location filename="../constraints/columnprimarykeypanel.ui" line="26"/> + <source>Autoincrement</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnprimarykeypanel.ui" line="48"/> + <source>Sort order:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnprimarykeypanel.ui" line="83"/> + <source>Named constraint:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnprimarykeypanel.ui" line="111"/> + <source>On conflict:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnprimarykeypanel.cpp" line="87"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ColumnUniqueAndNotNullPanel</name> + <message> + <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="41"/> + <source>Named constraint:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/> + <source>On conflict:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CompleterWindow</name> + <message> + <location filename="../completer/completerwindow.cpp" line="159"/> + <source>Column: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="161"/> + <source>Table: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="163"/> + <source>Index: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="165"/> + <source>Trigger: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="167"/> + <source>View: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="169"/> + <source>Database: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="181"/> + <source>Keyword: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="183"/> + <source>Function: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="185"/> + <source>Operator: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="187"/> + <source>String</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="189"/> + <source>Number</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="191"/> + <source>Binary data</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="193"/> + <source>Collation: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../completer/completerwindow.cpp" line="195"/> + <source>Pragma function: %1</source> + <comment>completer statusbar</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ConfigDialog</name> + <message> + <location filename="../dialogs/configdialog.ui" line="14"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> + <source>Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="63"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="94"/> + <source>General</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="106"/> + <source>Keyboard shortcuts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="118"/> + <source>Look & feel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="129"/> + <source>Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="141"/> + <source>Fonts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="153"/> + <source>Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="166"/> + <location filename="../dialogs/configdialog.ui" line="239"/> + <source>Database list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="178"/> + <source>Data browsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="189"/> + <source>Data editors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="202"/> + <source>Plugins</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="213"/> + <source>Code formatters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="245"/> + <source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="248"/> + <source>Sort table columns alphabetically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="258"/> + <source>Expand tables node when connected to a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="268"/> + <source><p>Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.<p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="271"/> + <source>Display additional labels on the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="286"/> + <source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="289"/> + <source>Display labels for regular tables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="299"/> + <source>Virtual tables will be marked with a 'virtual' label.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="302"/> + <source>Display labels for virtual tables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="315"/> + <source>Expand views node when connected to a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="325"/> + <source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="328"/> + <source>Sort objects (tables, indexes, triggers and views) alphabetically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="338"/> + <source>Display system tables and indexes on the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="351"/> + <source>Database dialog window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="357"/> + <source><p>When adding new database it is marked to be "permanent" (stored in configuration) by default. Checking this option makes every new database to NOT be "permanent" by default.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="360"/> + <source>Do not mark database to be "permanent" by default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="370"/> + <source><p>When this option is enabled, then files dropped from file manager onto database list will be automatically added to the list, bypassing standard database dialog. If for various reasons automatic process fails, then standard dialog will be presented to the user.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="373"/> + <source>Try to bypass dialog completly when dropping database file onto the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="418"/> + <source>Data browsing and editing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> + <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="488"/> + <source>Limit initial data column width to (in pixels):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="502"/> + <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="505"/> + <source>Show column and row details tooltip in data view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="495"/> + <source>Number of data rows per page:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="515"/> + <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="518"/> + <source>Keep NULL value when entering empty value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="528"/> + <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="531"/> + <source>Use DEFAULT value (if defined), when committing NULL value</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="544"/> + <source>Inserting new row in data grid</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="550"/> + <source>Before currently selected row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="566"/> + <source>After currently selected row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="579"/> + <source>At the end of data view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="595"/> + <source>Table windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="601"/> + <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="604"/> + <source>Open Table Windows with the data tab for start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="614"/> + <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="617"/> + <source>Place data tab as first tab in a Table Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="630"/> + <source>View windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="636"/> + <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="639"/> + <source>Open View Windows with the data tab for start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="649"/> + <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="652"/> + <source>Place data tab as first tab in a View Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="696"/> + <source>Data types</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="734"/> + <source>Available editors:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="750"/> + <source>Editors selected for this data type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="786"/> + <source>Schema editing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="798"/> + <source>Number of DDL changes kept in history.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="811"/> + <source>DDL history size:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="818"/> + <source>Don't show DDL preview dialog when committing schema changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="831"/> + <source>SQL queries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> + <source>Number of queries kept in the history.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="859"/> + <source>History size:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="879"/> + <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="882"/> + <source>Execute only the query under the cursor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="905"/> + <source>Updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="911"/> + <source>Automatically check for updates at startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="924"/> + <source>Session</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="930"/> + <source>Restore last session (active MDI windows) after startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="943"/> + <source>Status Field</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="949"/> + <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="952"/> + <source>Always open Status panel when new message is printed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="994"/> + <source>Filter shortcuts by name or key combination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1035"/> + <source>Action</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1040"/> + <source>Key combination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> + <source>Language</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1090"/> + <source>Changing language requires application restart to take effect.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1107"/> + <source>Compact layout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1113"/> + <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1116"/> + <source>Use compact layout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> + <source>Main window dock areas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1138"/> + <source>Left and right areas occupy corners</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1158"/> + <source>Top and bottom areas occupy corners</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1280"/> + <source>Hide built-in plugins</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1309"/> + <source>Current style:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1326"/> + <source>Preview</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1336"/> + <source>Enabled</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1509"/> + <source>Disabled</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1558"/> + <source>Active formatter plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1596"/> + <source>SQL editor font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1612"/> + <source>Database list font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1628"/> + <source>Database list additional label font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1644"/> + <source>Data view font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1660"/> + <source>Status field font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1718"/> + <source>SQL editor colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1724"/> + <source>Current line background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1731"/> + <source><p>SQL strings are enclosed with single quote characters.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1734"/> + <source>String foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1837"/> + <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1840"/> + <source>Bind parameter foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1863"/> + <source>Highlighted parenthesis background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1870"/> + <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1873"/> + <source>BLOB value foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1880"/> + <source>Regular foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1887"/> + <source>Line numbers area background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1910"/> + <source>Keyword foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1917"/> + <source>Number foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1924"/> + <source>Comment foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1963"/> + <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1966"/> + <source>Valid objects foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1992"/> + <source>Data view colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1998"/> + <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2001"/> + <source>Uncommitted data outline color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2024"/> + <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2027"/> + <source>Commit error outline color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2050"/> + <source>NULL value foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2073"/> + <source>Deleted row background</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2099"/> + <source>Database list colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2105"/> + <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2108"/> + <source>Additional labels foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2134"/> + <source>Status field colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2140"/> + <source>Information message foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2163"/> + <source>Warning message foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="2186"/> + <source>Error message foreground</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="792"/> + <source>Description:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="793"/> + <source>Category:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="794"/> + <source>Version:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="795"/> + <source>Author:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="797"/> + <source>Internal name:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="798"/> + <source>Dependencies:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="799"/> + <source>Conflicts:</source> + <comment>plugin details</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="803"/> + <source>Plugin details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1215"/> + <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1279"/> + <source>%1 (built-in)</source> + <comment>plugins manager in configuration dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1292"/> + <source>Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1304"/> + <source>No plugins in this category.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1406"/> + <source>Add new data type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1410"/> + <source>Rename selected data type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1414"/> + <source>Delete selected data type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.cpp" line="1418"/> + <source>Help for configuring data type editors</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ConstraintCheckPanel</name> + <message> + <location filename="../constraints/constraintcheckpanel.ui" line="20"/> + <source>The condition</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/constraintcheckpanel.ui" line="35"/> + <source>Named constraint:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/constraintcheckpanel.ui" line="51"/> + <source>On conflict</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/constraintcheckpanel.cpp" line="46"/> + <source>Enter a valid condition.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/constraintcheckpanel.cpp" line="47"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ConstraintDialog</name> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="62"/> + <source>New constraint</source> + <comment>constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="63"/> + <source>Create</source> + <comment>constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="66"/> + <source>Edit constraint</source> + <comment>dialog window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="67"/> + <source>Apply</source> + <comment>constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="170"/> + <source>Primary key</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="174"/> + <source>Foreign key</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="178"/> + <source>Unique</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="182"/> + <source>Not NULL</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="186"/> + <source>Check</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="190"/> + <source>Collate</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/constraintdialog.cpp" line="194"/> + <source>Default</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ConstraintTabModel</name> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="68"/> + <source>Table</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="109"/> + <source>Column (%1)</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="153"/> + <source>Scope</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="155"/> + <source>Type</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="157"/> + <source>Details</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/constrainttabmodel.cpp" line="159"/> + <source>Name</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CssDebugDialog</name> + <message> + <location filename="../dialogs/cssdebugdialog.ui" line="14"/> + <source>SQLiteStudio CSS console</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DataView</name> + <message> + <location filename="../dataview.cpp" line="105"/> + <source>Filter data</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="114"/> + <source>Grid view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="115"/> + <source>Form view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="206"/> + <source>Refresh table data</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="223"/> + <source>First page</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="224"/> + <source>Previous page</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="226"/> + <source>Next page</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="227"/> + <source>Last page</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> + <source>Apply filter</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="236"/> + <source>Commit changes for selected cells</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="237"/> + <source>Rollback changes for selected cells</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="238"/> + <source>Show grid view of results</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="239"/> + <source>Show form view of results</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="978"/> + <source>Filter by text</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="979"/> + <source>Filter by the Regular Expression</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="980"/> + <source>Filter by SQL expression</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="324"/> + <source>Tabs on top</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="325"/> + <source>Tabs at bottom</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="350"/> + <source>Place new rows above selected row</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="351"/> + <source>Place new rows below selected row</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="352"/> + <source>Place new rows at the end of the data view</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="656"/> + <source>Total number of rows is being counted. +Browsing other pages will be possible after the row counting is done.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="667"/> + <source>Row: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbConverterDialog</name> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="14"/> + <source>Convert database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="20"/> + <source>Source database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="29"/> + <source>Source database version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="46"/> + <source>Target database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="52"/> + <source>Target version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="59"/> + <source>This is the file that will be created as a result of the conversion.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="66"/> + <source>Target file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="73"/> + <source>Name of the new database:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.ui" line="90"/> + <source>This is the name that the converted database will be added to SQLiteStudio with.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="123"/> + <source>Select source database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="129"/> + <source>Enter valid and writable file path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="131"/> + <source>Entered file exists and will be overwritten.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="135"/> + <source>Enter a not empty, unique name (as in the list of databases on the left).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="140"/> + <source>No valid target dialect available. Conversion not possible.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="142"/> + <source>Select valid target dialect.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="194"/> + <source>Database %1 has been successfully converted and now is available under new name: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="206"/> + <source>SQL statements conversion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="214"/> + <source>Following error occurred while converting SQL statements to the target SQLite version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbconverterdialog.cpp" line="215"/> + <source>Would you like to ignore those errors and proceed?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbDialog</name> + <message> + <location filename="../dialogs/dbdialog.ui" line="20"/> + <source>Database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> + <source>Database driver</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="154"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="91"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="97"/> + <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> + <extracomment>aasfd</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="100"/> + <source>Permanent (keep it in configuration)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="144"/> + <source>Test connection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="155"/> + <source>Browse for existing database file on local computer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="288"/> + <source>Browse</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="467"/> + <source>Enter an unique database name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="477"/> + <source>This name is already in use. Please enter unique name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="484"/> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="493"/> + <source>Enter a database file path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="502"/> + <source>This database is already on the list under name: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="524"/> + <source>Select a database type.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbObjectDialogs</name> + <message> + <location filename="../dbobjectdialogs.cpp" line="174"/> + <source>Delete table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="175"/> + <source>Are you sure you want to delete table %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="179"/> + <source>Delete index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="180"/> + <source>Are you sure you want to delete index %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="184"/> + <source>Delete trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="185"/> + <source>Are you sure you want to delete trigger %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="189"/> + <source>Delete view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="190"/> + <source>Are you sure you want to delete view %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="218"/> + <location filename="../dbobjectdialogs.cpp" line="315"/> + <source>Error while dropping %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="282"/> + <source>Delete objects</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="283"/> + <source>Are you sure you want to delete following objects: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="290"/> + <source>Cannot start transaction. Details: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbobjectdialogs.cpp" line="327"/> + <source>Cannot commit transaction. Details: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbTree</name> + <message> + <location filename="../dbtree/dbtree.ui" line="23"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.ui" line="73"/> + <source>Filter by name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="134"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="135"/> + <source>Paste</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="136"/> + <source>Select all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="137"/> + <source>Create a group</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="138"/> + <source>Delete the group</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="139"/> + <source>Rename the group</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="145"/> + <source>Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="153"/> + <source>Export the table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="154"/> + <source>Import into the table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="155"/> + <source>Populate table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="156"/> + <source>Create similar table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="157"/> + <source>Reset autoincrement sequence</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="167"/> + <source>Add a column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="168"/> + <source>Edit the column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="169"/> + <source>Delete the column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="170"/> + <source>Delete selected items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="171"/> + <source>Clear filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="144"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Erase table data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> + <source>Database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="370"/> + <source>Grouping</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="375"/> + <source>Generate query for table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Create group</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <source>Group name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1089"/> + <source>Entry with name %1 already exists in group %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1107"/> + <source>Delete group</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1108"/> + <source>Are you sure you want to delete group %1? +All objects from this group will be moved to parent group.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1171"/> + <source>Are you sure you want to remove database '%1' from the list?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1179"/> + <source>Are you sure you want to remove following databases from the list: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1181"/> + <source>Remove database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> + <source>Cannot import, because no import plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> + <source>Cannot export, because no export plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1487"/> + <source>Vacuum (%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1501"/> + <source>Integrity check (%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1537"/> + <source>Reset autoincrement</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1537"/> + <source>Are you sure you want to reset autoincrement value for table '%1'?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1544"/> + <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1546"/> + <source>Autoincrement value for table '%1' has been reset successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1566"/> + <source>Are you sure you want to delete all data from table(s): %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1579"/> + <source>An error occurred while trying to delete data from table '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1583"/> + <source>All data has been deleted for table '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1697"/> + <source>Following objects will be deleted: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1700"/> + <source>Following databases will be removed from list: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1703"/> + <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1705"/> + <source>%1<br><br>Are you sure you want to continue?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1707"/> + <source>Delete objects</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbTreeItemDelegate</name> + <message> + <location filename="../dbtree/dbtreeitemdelegate.cpp" line="92"/> + <source>error</source> + <comment>dbtree labels</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemdelegate.cpp" line="109"/> + <source>(system table)</source> + <comment>database tree label</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemdelegate.cpp" line="127"/> + <source>(virtual)</source> + <comment>virtual table label</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemdelegate.cpp" line="139"/> + <source>(system index)</source> + <comment>database tree label</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DbTreeModel</name> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="423"/> + <source>Database: %1</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="428"/> + <source>Version:</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="431"/> + <source>File size:</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="434"/> + <source>Encoding:</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="439"/> + <source>Error:</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="449"/> + <source>Table : %1</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="472"/> + <source>Columns (%1):</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="475"/> + <source>Indexes (%1):</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="478"/> + <source>Triggers (%1):</source> + <comment>dbtree tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <source>Move</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <source>Include data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> + <source>Include indexes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> + <source>Include triggers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> + <source>Abort</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> + <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> + <source>Referenced tables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> + <source>Do you want to include following referenced tables as well: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> + <source>Name conflict</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> + <source>Following object already exists in the target database. +Please enter new, unique name, or press '%1' to abort the operation:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> + <source>SQL statements conversion</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> + <source>Following error occurred while converting SQL statements to the target SQLite version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> + <source>Would you like to ignore those errors and proceed?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DdlHistoryWindow</name> + <message> + <location filename="../windows/ddlhistorywindow.ui" line="35"/> + <source>Filter by database:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/ddlhistorywindow.cpp" line="73"/> + <source>-- Queries executed on database %1 (%2) +-- Date and time of execution: %3 +%4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/ddlhistorywindow.cpp" line="124"/> + <source>DDL history</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DdlPreviewDialog</name> + <message> + <location filename="../dialogs/ddlpreviewdialog.ui" line="14"/> + <source>Queries to be executed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/ddlpreviewdialog.ui" line="42"/> + <source>Don't show again</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DebugConsole</name> + <message> + <location filename="../debugconsole.ui" line="14"/> + <source>SQLiteStudio Debug Console</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>EditorWindow</name> + <message> + <location filename="../windows/editorwindow.ui" line="42"/> + <source>Query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.ui" line="115"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="142"/> + <source>Results in the separate tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="143"/> + <source>Results below the query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> + <source>SQL editor %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="336"/> + <source>Results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="369"/> + <source>Execute query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="370"/> + <source>Explain query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="373"/> + <source>Clear execution history</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="375"/> + <source>Export results</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="377"/> + <source>Create view from query</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="390"/> + <source>Previous database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="391"/> + <source>Next database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="394"/> + <source>Show next tab</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="395"/> + <source>Show previous tab</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="396"/> + <source>Focus results below</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="397"/> + <source>Focus SQL editor above</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> + <source>Active database (%1/%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="574"/> + <source>Query finished in %1 second(s). Rows affected: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="578"/> + <source>Query finished in %1 second(s).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="692"/> + <source>Clear execution history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="692"/> + <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="717"/> + <source>Cannot export, because no export plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="738"/> + <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="768"/> + <source>Editor window "%1" has uncommitted data.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ErrorsConfirmDialog</name> + <message> + <location filename="../dialogs/errorsconfirmdialog.ui" line="14"/> + <source>Errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/errorsconfirmdialog.ui" line="20"/> + <source>Following errors occured:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/errorsconfirmdialog.ui" line="34"/> + <source>Would you like to proceed?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ExportDialog</name> + <message> + <location filename="../dialogs/exportdialog.ui" line="14"/> + <source>Export</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="21"/> + <source>What do you want to export?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="36"/> + <source>A database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="46"/> + <source>A single table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="53"/> + <source>Query results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="65"/> + <source>Table to export</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="100"/> + <source>Database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="107"/> + <source>Table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="124"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="130"/> + <source>When this option is unchecked, then only table DDL (CREATE TABLE statement) is exported.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="133"/> + <source>Export table data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="143"/> + <source>Export table indexes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="153"/> + <source>Export table triggers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="175"/> + <source>Note, that exporting table indexes and triggers may be unsupported by some output formats.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="189"/> + <source>Select database objects to export</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="202"/> + <source>Export data from tables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="212"/> + <source>Select all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="219"/> + <source>Deselect all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="229"/> + <location filename="../dialogs/exportdialog.ui" line="249"/> + <source>Database:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="237"/> + <source>Query to export results for</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="256"/> + <source>Query to be executed for results:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="264"/> + <source>Export format and options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="318"/> + <source>Export format</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="330"/> + <source>Output</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="336"/> + <source>Exported file path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="343"/> + <source>Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="357"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="382"/> + <source>Exported text encoding:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.ui" line="398"/> + <source>Export format options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="60"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> + <source>Select database to export.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="159"/> + <source>Select table to export.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="184"/> + <source>Enter valid query to export.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="207"/> + <source>Select at least one object to export.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="230"/> + <source>You must provide a file name to export to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="237"/> + <source>Path you provided is an existing directory. You cannot overwrite it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="243"/> + <source>The directory '%1' does not exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="249"/> + <source>The file '%1' exists and will be overwritten.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="429"/> + <source>All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="432"/> + <source>Pick file to export to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/exportdialog.cpp" line="771"/> + <source>Internal error during export. This is a bug. Please report it.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FontEdit</name> + <message> + <location filename="../common/fontedit.cpp" line="61"/> + <source>Choose font</source> + <comment>font configuration</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Form</name> + <message> + <location filename="../forms/sqlformatterplugin.ui" line="20"/> + <source>Active SQL formatter plugin</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FormView</name> + <message> + <location filename="../formview.cpp" line="247"/> + <source>Commit row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="248"/> + <source>Rollback row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="249"/> + <source>First row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="250"/> + <source>Previous row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="251"/> + <source>Next row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="252"/> + <source>Last row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="253"/> + <source>Insert new row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.cpp" line="254"/> + <source>Delete current row</source> + <comment>form view</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FunctionsEditor</name> + <message> + <location filename="../windows/functionseditor.ui" line="81"/> + <source>Filter funtions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="157"/> + <source>Input arguments</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="163"/> + <source>Undefined</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="205"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="211"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="218"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="253"/> + <source>Type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="260"/> + <source>Function name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="273"/> + <source>Implementation language:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="293"/> + <source>Initialization code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="313"/> + <location filename="../windows/functionseditor.cpp" line="426"/> + <source>Function implementation code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.ui" line="333"/> + <source>Final step implementation code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="54"/> + <source>SQL function editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="59"/> + <source>Commit all function changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="60"/> + <source>Rollback all function changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="62"/> + <source>Create new function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="63"/> + <source>Delete selected function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="65"/> + <source>Custom SQL functions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="68"/> + <source>Add function argument</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="69"/> + <source>Rename function argument</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="70"/> + <source>Delete function argument</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="72"/> + <source>Move function argument up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="73"/> + <source>Move function argument down</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="111"/> + <source>Scalar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="112"/> + <source>Aggregate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="410"/> + <source>Enter a non-empty, unique name of the function.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="422"/> + <source>Pick the implementation language.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="426"/> + <source>Per step code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="432"/> + <source>Enter a non-empty implementation code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="505"/> + <source>argument</source> + <comment>new function argument name in function editor window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/functionseditor.cpp" line="631"/> + <source>Functions editor window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ImportDialog</name> + <message> + <location filename="../dialogs/importdialog.ui" line="14"/> + <source>Import data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="21"/> + <source>Table to import to</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="36"/> + <source>Table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="43"/> + <source>Database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="84"/> + <source>Data source to import from</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="129"/> + <source>Data source type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="141"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="175"/> + <source>Text encoding:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="182"/> + <source>Input file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> + <source>Data source options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="114"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="145"/> + <source>If you type table name that doesn't exist, it will be created.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="145"/> + <source>Enter the table name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="163"/> + <source>Select import plugin.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="172"/> + <source>You must provide a file to import from.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="179"/> + <source>The file '%1' does not exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="185"/> + <source>Path you provided is a directory. A regular file is required.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.cpp" line="364"/> + <source>Pick file to import from</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>IndexDialog</name> + <message> + <location filename="../dialogs/indexdialog.ui" line="20"/> + <location filename="../dialogs/indexdialog.ui" line="30"/> + <source>Index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="70"/> + <source>Column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="80"/> + <source>Collation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="75"/> + <source>Sort</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="88"/> + <source>On table:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="98"/> + <source>Delete selected indexed expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="108"/> + <source>Moves selected index column up in the order, making it more significant in the index.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="118"/> + <source>Moves selected index column down in the order, making it less significant in the index.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="128"/> + <source>Partial index condition</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="135"/> + <source>Unique index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="142"/> + <source>Index name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="149"/> + <source>Edit selected indexed expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="169"/> + <source>Add indexed expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.ui" line="180"/> + <source>DDL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="66"/> + <source>Tried to open index dialog for closed or inexisting database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="149"/> + <source>Could not process index %1 correctly. Unable to open an index dialog.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="206"/> + <source>Unique index cannot have indexed expressions. Either remove expressions from list below, or uncheck this option.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="207"/> + <source>Pick the table for the index.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="208"/> + <source>Select at least one column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="209"/> + <source>Enter a valid condition.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="276"/> + <source>default</source> + <comment>index dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="281"/> + <source>Sort order</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="752"/> + <location filename="../dialogs/indexdialog.cpp" line="765"/> + <source>Error</source> + <comment>index dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="753"/> + <source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexdialog.cpp" line="765"/> + <source>An error occurred while executing SQL statements: +%1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>IndexExprColumnDialog</name> + <message> + <location filename="../dialogs/indexexprcolumndialog.ui" line="14"/> + <source>Indexed expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.ui" line="20"/> + <source>Expression to index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="60"/> + <source>This expression is already indexed by the index.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="66"/> + <source>Column should be indexed directly, not by expression. Either extend this expression to contain something more than just column name, or abort and select this column in index dialog directly.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="76"/> + <source>Column '%1' does not belong to the table covered by this index. Indexed expressions can refer only to columns from the indexed table.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="84"/> + <source>It's forbidden to use 'SELECT' statements in indexed expressions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="105"/> + <source>Enter an indexed expression.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/indexexprcolumndialog.cpp" line="119"/> + <source>Invalid expression.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>LanguageDialog</name> + <message> + <location filename="../dialogs/languagedialog.ui" line="14"/> + <source>Language</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/languagedialog.ui" line="20"/> + <source>Please choose language:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <location filename="../mainwindow.ui" line="81"/> + <source>Database toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.ui" line="92"/> + <source>Structure toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.ui" line="103"/> + <source>Tools</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.ui" line="120"/> + <source>Window list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.ui" line="134"/> + <source>View toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="109"/> + <source>Configuration widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="110"/> + <source>Syntax highlighting engines</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="111"/> + <source>Data editors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="123"/> + <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="125"/> + <source>Running in debug mode. Debug messages are printed to the standard output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="190"/> + <source>You need to restart application to make the language change take effect.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="247"/> + <source>Next window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="248"/> + <source>Previous window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="249"/> + <source>Hide status field</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="257"/> + <source>Open Debug Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="258"/> + <source>Open CSS Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="352"/> + <source>Window list</source> + <comment>menubar view menu</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> + <source>Could not set style: %1</source> + <comment>main window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="652"/> + <source>Cannot export, because no export plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="668"/> + <source>Cannot import, because no import plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="701"/> + <source>Rename window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="701"/> + <source>Enter new name for the window:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="784"/> + <source>New updates are available. <a href="%1">Click here for details</a>.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="792"/> + <source>You're running the most recent version. No updates are available.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="905"/> + <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="912"/> + <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="917"/> + <source>Could not add database %1 to list.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MdiWindow</name> + <message> + <location filename="../mdiwindow.cpp" line="199"/> + <source>Uncommitted changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mdiwindow.cpp" line="204"/> + <source>Close anyway</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mdiwindow.cpp" line="206"/> + <source>Don't close</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditor</name> + <message> + <location filename="../multieditor/multieditor.cpp" line="62"/> + <source>Null value</source> + <comment>multieditor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="81"/> + <source>Configure editors for this data type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> + <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="426"/> + <source>Deleted</source> + <comment>multieditor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="428"/> + <source>Read only</source> + <comment>multieditor</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> + <source>Boolean</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> + <source>Hex</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorText</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="102"/> + <source>Tab changes focus</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="103"/> + <source>Cut</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="104"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="105"/> + <source>Paste</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="106"/> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="107"/> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.cpp" line="108"/> + <source>Redo</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>NewConstraintDialog</name> + <message> + <location filename="../dialogs/newconstraintdialog.ui" line="20"/> + <source>New constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="87"/> + <location filename="../dialogs/newconstraintdialog.cpp" line="97"/> + <source>Primary Key</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="89"/> + <location filename="../dialogs/newconstraintdialog.cpp" line="99"/> + <source>Foreign Key</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="91"/> + <location filename="../dialogs/newconstraintdialog.cpp" line="101"/> + <source>Unique</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="92"/> + <location filename="../dialogs/newconstraintdialog.cpp" line="102"/> + <source>Check</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="103"/> + <source>Not NULL</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="105"/> + <source>Collate</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newconstraintdialog.cpp" line="107"/> + <source>Default</source> + <comment>new constraint dialog</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>NewVersionDialog</name> + <message> + <location filename="../dialogs/newversiondialog.ui" line="14"/> + <source>SQLiteStudio updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="26"/> + <source>New updates are available!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="70"/> + <source>Component</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="75"/> + <source>Update version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="86"/> + <source>Check for updates on startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="96"/> + <source>Update to new version!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="116"/> + <source>Not now.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/newversiondialog.ui" line="129"/> + <source>Don't install the update and close this window.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PopulateConfigDialog</name> + <message> + <location filename="../dialogs/populateconfigdialog.ui" line="14"/> + <source>Populating configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populateconfigdialog.cpp" line="54"/> + <source>Configuring <b>%1</b> for column <b>%2</b></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PopulateDialog</name> + <message> + <location filename="../dialogs/populatedialog.ui" line="14"/> + <source>Populate table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.ui" line="26"/> + <source>Database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.ui" line="44"/> + <source>Table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.ui" line="72"/> + <source>Columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.ui" line="102"/> + <source>Number of rows to populate:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="42"/> + <source>Populate</source> + <comment>populate dialog button</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="57"/> + <source>Abort</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="192"/> + <source>Configure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="299"/> + <source>Populating configuration for this column is invalid or incomplete.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="330"/> + <source>Select database with table to populate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="331"/> + <source>Select table to populate</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/populatedialog.cpp" line="332"/> + <source>You have to select at least one column.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> + <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> + <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> + <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> + <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> + <source>Cannot edit results of query other than %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> + <source>Cannot edit columns that are result of aggregated %1 statements.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> + <source>Cannot edit columns that are result of %1 statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> + <source>Cannot edit columns that are result of common table expression statement (%1).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> + <source>on conflict: %1</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> + <source>references table %1, column %2</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> + <source>condition: %1</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> + <source>collation name: %1</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="21"/> + <source>Data grid view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="22"/> + <source>Copy cell(s) contents to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> + <source>Paste cell(s) contents from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="27"/> + <source>Set empty value to selected cell(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="28"/> + <source>Set NULL value to selected cell(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="29"/> + <source>Commit changes to cell(s) contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="30"/> + <source>Rollback changes to cell(s) contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="31"/> + <source>Delete selected data row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="32"/> + <source>Insert new data row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="33"/> + <source>Open contents of selected cell in a separate editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="633"/> + <source>Total pages available: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="643"/> + <source>Total rows loaded: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.h" line="21"/> + <source>Data view (both grid and form)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.h" line="22"/> + <source>Refresh data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.h" line="23"/> + <source>Switch to grid view of the data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.h" line="24"/> + <source>Switch to form view of the data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="28"/> + <source>Database list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="29"/> + <source>Delete selected item</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="30"/> + <source>Clear filter contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="31"/> + <source>Refresh schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="32"/> + <source>Refresh all schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="33"/> + <source>Add database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="34"/> + <source>Select all items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="35"/> + <source>Copy selected item(s)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.h" line="36"/> + <location filename="../multieditor/multieditortext.h" line="15"/> + <location filename="../sqleditor.h" line="31"/> + <source>Paste from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemfactory.cpp" line="47"/> + <source>Tables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemfactory.cpp" line="52"/> + <source>Indexes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemfactory.cpp" line="57"/> + <source>Triggers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemfactory.cpp" line="62"/> + <source>Views</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtreeitemfactory.cpp" line="67"/> + <source>Columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="16"/> + <source>Data form view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="17"/> + <source>Commit changes for current row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="18"/> + <source>Rollback changes for current row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="19"/> + <source>Go to first row on current page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="20"/> + <source>Go to next row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="21"/> + <source>Go to previous row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="22"/> + <source>Go to last row on current page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="23"/> + <source>Insert new row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../formview.h" line="24"/> + <source>Delete current row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="44"/> + <source>Main window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="45"/> + <source>Open SQL editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="46"/> + <source>Previous window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="47"/> + <source>Next window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="48"/> + <source>Hide status area</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="49"/> + <source>Open configuration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="50"/> + <source>Open Debug Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.h" line="51"/> + <source>Open CSS Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="12"/> + <source>Cell text value editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="13"/> + <location filename="../sqleditor.h" line="29"/> + <source>Cut selected text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="14"/> + <location filename="../sqleditor.h" line="30"/> + <source>Copy selected text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="16"/> + <location filename="../sqleditor.h" line="32"/> + <source>Delete selected text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="17"/> + <location filename="../sqleditor.h" line="34"/> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditortext.h" line="18"/> + <location filename="../sqleditor.h" line="35"/> + <source>Redo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="28"/> + <source>SQL editor input field</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="33"/> + <source>Select whole editor contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="36"/> + <source>Save contents into a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="37"/> + <source>Load contents from a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="38"/> + <source>Find in text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="39"/> + <source>Find next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="40"/> + <source>Find previous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="41"/> + <source>Replace in text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="42"/> + <source>Delete current line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="43"/> + <source>Request code assistant</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="44"/> + <source>Format contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="45"/> + <source>Move selected block of text one line down</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="46"/> + <source>Move selected block of text one line up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="47"/> + <source>Copy selected block of text and paste it a line below</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="48"/> + <source>Copy selected block of text and paste it a line above</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.h" line="49"/> + <source>Toggle comment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../uiutils.cpp" line="32"/> + <source>All SQLite databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../uiutils.cpp" line="35"/> + <source>All files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> + <source>Database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="26"/> + <source>SQL editor window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="27"/> + <source>Execute query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="28"/> + <source>Execute "%1" query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="29"/> + <source>Switch current working database to previous on the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="30"/> + <source>Switch current working database to next on the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="31"/> + <source>Go to next editor tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="32"/> + <source>Go to previous editor tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="33"/> + <source>Move keyboard input focus to the results view below</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="34"/> + <source>Move keyboard input focus to the SQL editor above</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="31"/> + <source>Table window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="32"/> + <source>Refresh table structure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="33"/> + <source>Add new column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="34"/> + <source>Edit selected column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="35"/> + <source>Delete selected column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="36"/> + <source>Export table data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="37"/> + <source>Import data to the table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="38"/> + <source>Add new table constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="39"/> + <source>Edit selected table constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="40"/> + <source>Delete selected table constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="41"/> + <source>Refresh table index list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="42"/> + <source>Add new index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="43"/> + <source>Edit selected index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="44"/> + <source>Delete selected index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="45"/> + <source>Refresh table trigger list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="46"/> + <location filename="../windows/viewwindow.h" line="25"/> + <source>Add new trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="47"/> + <location filename="../windows/viewwindow.h" line="26"/> + <source>Edit selected trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="48"/> + <location filename="../windows/viewwindow.h" line="27"/> + <source>Delete selected trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="49"/> + <location filename="../windows/viewwindow.h" line="28"/> + <source>Go to next tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.h" line="50"/> + <location filename="../windows/viewwindow.h" line="29"/> + <source>Go to previous tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.h" line="23"/> + <source>A view window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.h" line="24"/> + <source>Refresh view trigger list</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QuitConfirmDialog</name> + <message> + <location filename="../dialogs/quitconfirmdialog.ui" line="14"/> + <source>Uncommitted changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/quitconfirmdialog.ui" line="20"/> + <source>Are you sure you want to quit the application? + +Following items are pending:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SearchTextDialog</name> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="14"/> + <source>Find or replace</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="23"/> + <source>Find:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="36"/> + <source>Case sensitive</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="43"/> + <source>Search backwards</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="50"/> + <source>Regular expression matching</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="60"/> + <source>Replace && +find next</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="78"/> + <source>Replace with:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="91"/> + <source>Replace all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/searchtextdialog.ui" line="98"/> + <source>Find</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SortDialog</name> + <message> + <location filename="../dialogs/sortdialog.ui" line="14"/> + <source>Sort by columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/sortdialog.ui" line="45"/> + <location filename="../dialogs/sortdialog.cpp" line="48"/> + <source>Column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/sortdialog.ui" line="50"/> + <location filename="../dialogs/sortdialog.cpp" line="48"/> + <source>Order</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/sortdialog.cpp" line="178"/> + <source>Sort by: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/sortdialog.cpp" line="242"/> + <source>Move column up</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/sortdialog.cpp" line="243"/> + <source>Move column down</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlEditor</name> + <message> + <location filename="../sqleditor.cpp" line="123"/> + <source>Cut</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="124"/> + <source>Copy</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="125"/> + <source>Paste</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="126"/> + <source>Delete</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="127"/> + <source>Select all</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="128"/> + <source>Undo</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="129"/> + <source>Redo</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="130"/> + <source>Complete</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="131"/> + <source>Format SQL</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="132"/> + <source>Save SQL to file</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="133"/> + <source>Select file to save SQL</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="134"/> + <source>Load SQL from file</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="135"/> + <source>Delete line</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="136"/> + <source>Move block down</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="137"/> + <source>Move block up</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="138"/> + <source>Copy block down</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="139"/> + <source>Copy up down</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="140"/> + <source>Find</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="141"/> + <source>Find next</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="142"/> + <source>Find previous</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="143"/> + <source>Replace</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="144"/> + <source>Toggle comment</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="249"/> + <source>Could not open file '%1' for writing: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="259"/> + <source>Saved SQL contents to file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="453"/> + <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1053"/> + <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1085"/> + <source>Save to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1097"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1098"/> + <source>Open file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1108"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqleditor.cpp" line="1313"/> + <source>Reached the end of document. Hit the find again to restart the search.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlQueryItem</name> + <message> + <location filename="../datagrid/sqlqueryitem.cpp" line="252"/> + <source>Column:</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitem.cpp" line="253"/> + <source>Data type:</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitem.cpp" line="256"/> + <source>Table:</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitem.cpp" line="286"/> + <source>Constraints:</source> + <comment>data view tooltip</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitem.cpp" line="423"/> + <source>Cannot load the data for a cell that refers to the already closed database.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlQueryItemDelegate</name> + <message> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> + <source>Cannot edit this cell. Details: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> + <source>The row is marked for deletion.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> + <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> + <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> + <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlQueryModel</name> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> + <source>Only one query can be executed simultaneously.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> + <source>Uncommitted data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> + <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> + <source>Cannot commit the data for a cell that refers to the already closed database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> + <source>Could not begin transaction on the database. Details: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> + <source>An error occurred while committing the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> + <source>An error occurred while rolling back the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> + <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> + <source>An error occurred while committing the data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> + <source>Error while executing SQL query on database '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> + <source>Error while loading query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> + <source>Insert multiple rows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> + <source>Number of rows to insert:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlQueryView</name> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> + <source>Go to referenced row in...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> + <source>Copy as...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> + <source>Paste</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> + <source>Paste as...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <source>Set NULL values</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <source>Erase values</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Edit value in editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <source>Commit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <source>Rollback</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> + <source>Commit selected cells</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> + <source>Rollback selected cells</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> + <source>Define columns to sort by</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> + <source>Remove custom sorting</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> + <source>Insert row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> + <source>Insert multiple rows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> + <source>Delete selected row</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> + <source>Generate query for selected cells</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> + <source>Go to referenced row in table '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> + <source>table '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> + <source>Referenced row (%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> + <source>Edit value</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqlTableModel</name> + <message> + <location filename="../datagrid/sqltablemodel.cpp" line="82"/> + <source>Error while committing new row: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqltablemodel.cpp" line="140"/> + <source>Error while deleting row from table %1: %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>StatusField</name> + <message> + <location filename="../statusfield.ui" line="14"/> + <source>Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../statusfield.cpp" line="164"/> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../statusfield.cpp" line="171"/> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TableConstraintsModel</name> + <message> + <location filename="../windows/tableconstraintsmodel.cpp" line="75"/> + <source>Type</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tableconstraintsmodel.cpp" line="77"/> + <source>Details</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tableconstraintsmodel.cpp" line="79"/> + <source>Name</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TableForeignKeyPanel</name> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="29"/> + <source>Foreign table:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="48"/> + <source>SQLite 2 does not support foreign keys officially, +but it's okay to use them anyway.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="62"/> + <source>Columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="77"/> + <source>Local column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="90"/> + <source>Foreign column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="126"/> + <source>Reactions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="165"/> + <source>Deferred foreign key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="183"/> + <source>Named constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.ui" line="190"/> + <source>Constraint name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.cpp" line="53"/> + <source>Pick the foreign column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.cpp" line="65"/> + <source>Pick the foreign table.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.cpp" line="66"/> + <source>Select at least one foreign column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.cpp" line="67"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> + <source>Foreign column</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TablePrimaryKeyAndUniquePanel</name> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="32"/> + <source>Columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="59"/> + <source>Column</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="84"/> + <source>Collation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="109"/> + <source>Sort</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="142"/> + <source>Valid only for a single column with INTEGER data type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="145"/> + <source>Autoincrement</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="167"/> + <source>Named constraint</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="174"/> + <source>Constraint name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.ui" line="199"/> + <source>On conflict</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> + <source>Collate</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> + <source>Sort order</source> + <comment>table constraints</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <source>Select at least one column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> + <source>Enter a name of the constraint.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TableStructureModel</name> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="301"/> + <source>Name</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="303"/> + <source>Data type</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="305"/> + <source>Primary +Key</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="307"/> + <source>Foreign +Key</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="309"/> + <source>Unique</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="311"/> + <source>Check</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="313"/> + <source>Not +NULL</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="315"/> + <source>Collate</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablestructuremodel.cpp" line="317"/> + <source>Default value</source> + <comment>table structure columns</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TableWindow</name> + <message> + <location filename="../windows/tablewindow.ui" line="36"/> + <source>Structure</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="60"/> + <source>Table name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="190"/> + <location filename="../windows/tablewindow.cpp" line="1574"/> + <source>Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="207"/> + <source>Constraints</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="221"/> + <source>Indexes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="250"/> + <source>Triggers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.ui" line="282"/> + <source>DDL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="202"/> + <source>Export table</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="203"/> + <source>Import data to table</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="204"/> + <source>Populate table</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="218"/> + <source>Refresh structure</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="220"/> + <source>Commit structure changes</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="221"/> + <source>Rollback structure changes</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="222"/> + <source>Add column</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="223"/> + <source>Edit column</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="224"/> + <location filename="../windows/tablewindow.cpp" line="311"/> + <source>Delete column</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="225"/> + <source>Move column up</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="226"/> + <source>Move column down</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="232"/> + <source>Create similar table</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="233"/> + <source>Reset autoincrement value</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="236"/> + <source>Add table constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="237"/> + <source>Edit table constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="238"/> + <source>Delete table constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="239"/> + <source>Move table constraint up</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="240"/> + <source>Move table constraint down</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="242"/> + <source>Add table primary key</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="243"/> + <source>Add table foreign key</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="244"/> + <source>Add table unique constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="245"/> + <source>Add table check constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="263"/> + <source>Refresh index list</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="265"/> + <source>Create index</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="266"/> + <source>Edit index</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="267"/> + <source>Delete index</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="273"/> + <source>Refresh trigger list</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="275"/> + <source>Create trigger</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="276"/> + <source>Edit trigger</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="277"/> + <source>Delete trigger</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="310"/> + <source>Are you sure you want to delete column '%1'?</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="338"/> + <source>Following problems will take place while modifying the table. +Would you like to proceed?</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="340"/> + <source>Table modification</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="478"/> + <source>Could not load data for table %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="597"/> + <source>Could not process the %1 table correctly. Unable to open a table window.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="652"/> + <source>Could not restore window %1, because no database or table was stored in session for this window.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="658"/> + <source>Could not restore window '%1', because no database or table was stored in session for this window.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="665"/> + <source>Could not restore window '%1', because database %2 could not be resolved.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="674"/> + <source>Could not restore window '%1'', because the table %2 doesn't exist in the database %3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="699"/> + <location filename="../windows/tablewindow.cpp" line="701"/> + <source>New table %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="828"/> + <source>Committed changes for table '%1' successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="832"/> + <source>Committed changes for table '%1' (named before '%2') successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="866"/> + <source>Could not commit table structure. Error message: %1</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="888"/> + <source>Reset autoincrement</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="888"/> + <source>Are you sure you want to reset autoincrement value for table '%1'?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="895"/> + <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="897"/> + <source>Autoincrement value for table '%1' has been reset successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="977"/> + <source>Empty name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="977"/> + <source>A blank name for the table is allowed in SQLite, but it is not recommended. +Are you sure you want to create a table with blank name?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="986"/> + <source>Cannot create a table without at least one column.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1012"/> + <source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1019"/> + <source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1169"/> + <source>Are you sure you want to delete table constraint '%1'?</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1170"/> + <source>Delete constraint</source> + <comment>table window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1224"/> + <source>Cannot export, because no export plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1237"/> + <source>Cannot import, because no import plugin is loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1270"/> + <source>Uncommitted changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1271"/> + <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled. +Do you want to commit the structure, or do you want to go back to the structure tab?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1274"/> + <source>Go back to structure tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1274"/> + <source>Commit modifications and browse data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1455"/> + <source>Name</source> + <comment>table window indexes</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1456"/> + <source>Unique</source> + <comment>table window indexes</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1457"/> + <source>Columns</source> + <comment>table window indexes</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1458"/> + <source>Partial index condition</source> + <comment>table window indexes</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1512"/> + <source>Name</source> + <comment>table window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1513"/> + <source>Event</source> + <comment>table window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1514"/> + <source>Condition</source> + <comment>table window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1515"/> + <source>Details</source> + <comment>table window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1616"/> + <source>Table window "%1" has uncommitted structure modifications and data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1618"/> + <source>Table window "%1" has uncommitted data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/tablewindow.cpp" line="1620"/> + <source>Table window "%1" has uncommitted structure modifications.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TriggerColumnsDialog</name> + <message> + <location filename="../dialogs/triggercolumnsdialog.ui" line="14"/> + <source>Trigger columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggercolumnsdialog.ui" line="47"/> + <source>Triggering columns:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/> + <source>Select all</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/> + <source>Deselect all</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TriggerDialog</name> + <message> + <location filename="../dialogs/triggerdialog.ui" line="14"/> + <location filename="../dialogs/triggerdialog.ui" line="24"/> + <source>Trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="30"/> + <source>On table:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="40"/> + <source>Action:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="56"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> + <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="59"/> + <source>Pre-condition:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="66"/> + <source>The scope is still not fully supported by the SQLite database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="73"/> + <source>Trigger name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="80"/> + <source>When:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="87"/> + <source>List of columns for UPDATE OF action.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="97"/> + <source>Scope:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="104"/> + <source>Code:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="111"/> + <source>Trigger statements to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.ui" line="138"/> + <source>DDL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> + <source>On view:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> + <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> + <source>Enter a valid condition.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> + <source>Enter a valid trigger code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="428"/> + <source>Error</source> + <comment>trigger dialog</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/triggerdialog.cpp" line="428"/> + <source>An error occurred while executing SQL statements: +%1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>VersionConvertSummaryDialog</name> + <message> + <location filename="../dialogs/versionconvertsummarydialog.ui" line="14"/> + <source>Database version convert</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/versionconvertsummarydialog.ui" line="20"/> + <source>Following changes to the SQL statements will be made:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/versionconvertsummarydialog.cpp" line="10"/> + <source>Before</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/versionconvertsummarydialog.cpp" line="11"/> + <source>After</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ViewWindow</name> + <message> + <location filename="../windows/viewwindow.ui" line="36"/> + <source>Query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.ui" line="60"/> + <source>View name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.ui" line="113"/> + <source>Output column names</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> + <source>Data</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.ui" line="170"/> + <source>Triggers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.ui" line="202"/> + <source>DDL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="108"/> + <location filename="../windows/viewwindow.cpp" line="114"/> + <source>Could not restore window '%1', because no database or view was stored in session for this window.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="121"/> + <source>Could not restore window '%1', because database %2 could not be resolved.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="127"/> + <source>Could not restore window '%1', because database %2 could not be open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="136"/> + <source>Could not restore window '%1', because the view %2 doesn't exist in the database %3.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="162"/> + <location filename="../windows/viewwindow.cpp" line="164"/> + <source>New view %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="320"/> + <source>Refresh the view</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="322"/> + <source>Commit the view changes</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="323"/> + <source>Rollback the view changes</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="327"/> + <source>Explicit column names</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="333"/> + <source>Generate output column names automatically basing on result columns of the view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="334"/> + <source>Add column</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="335"/> + <source>Edit column</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="336"/> + <source>Delete column</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="337"/> + <source>Move column up</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="338"/> + <source>Move column down</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="343"/> + <source>Refresh trigger list</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="345"/> + <source>Create new trigger</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="346"/> + <source>Edit selected trigger</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="347"/> + <source>Delete selected trigger</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="368"/> + <source>View window "%1" has uncommitted structure modifications and data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="370"/> + <source>View window "%1" has uncommitted data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="372"/> + <source>View window "%1" has uncommitted structure modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="569"/> + <source>Could not load data for view %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="581"/> + <source>Uncommitted changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="582"/> + <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. +Do you want to commit the structure, or do you want to go back to the structure tab?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="585"/> + <source>Go back to structure tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="585"/> + <source>Commit modifications and browse data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="637"/> + <source>Committed changes for view '%1' successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="639"/> + <source>Committed changes for view '%1' (named before '%2') successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="650"/> + <source>Could not commit view changes. Error message: %1</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="792"/> + <source>Override columns</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="792"/> + <source>Currently defined columns will be overriden. Do you want to continue?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="815"/> + <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="876"/> + <source>Name</source> + <comment>view window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="877"/> + <source>Instead of</source> + <comment>view window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="878"/> + <source>Condition</source> + <comment>view window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="879"/> + <source>Details</source> + <comment>table window triggers</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="919"/> + <source>Could not process the %1 view correctly. Unable to open a view window.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="966"/> + <source>Empty name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="966"/> + <source>A blank name for the view is allowed in SQLite, but it is not recommended. +Are you sure you want to create a view with blank name?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="978"/> + <source>The SELECT statement could not be parsed. Please correct the query and retry. +Details: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="986"/> + <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="1012"/> + <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="1025"/> + <source>Following problems will take place while modifying the view. +Would you like to proceed?</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/viewwindow.cpp" line="1027"/> + <source>View modification</source> + <comment>view window</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>WidgetCover</name> + <message> + <location filename="../common/widgetcover.cpp" line="234"/> + <source>Interrupt</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm Binary files differindex 7a4d27a..4a142a7 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts index 4b135af..ebd49cf 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts @@ -14,9 +14,8 @@ <translation>О программе</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Бесплатный кроссплатформенный менеджер баз данных SQLite с открытым исходным кодом.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Автор и активный разработчик:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Бесплатный кроссплатформенный менеджер баз данных SQLite с открытым исходным кодом.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Автор и активный разработчик:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -59,6 +58,11 @@ <translation>Каталог конфигурации</translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation>Версия Qt:</translation> @@ -90,261 +94,221 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Ошибки и предложения</translation> + <translation type="vanished">Ошибки и предложения</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>Отправитель</translation> + <translation type="vanished">Отправитель</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>Адрес e-mail</translation> + <translation type="vanished">Адрес e-mail</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>Вход</translation> + <translation type="vanished">Вход</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>Краткое описание</translation> + <translation type="vanished">Краткое описание</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>Подробное описание</translation> + <translation type="vanished">Подробное описание</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>Показать дополнительную информацию</translation> + <translation type="vanished">Показать дополнительную информацию</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>Версия SQLiteStudio</translation> + <translation type="vanished">Версия SQLiteStudio</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>Операционная система</translation> + <translation type="vanished">Операционная система</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>Загруженные модули</translation> + <translation type="vanished">Загруженные модули</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>Отправить</translation> + <translation type="vanished">Отправить</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation>Вы можете просмотреть все отправленные вами отчёты об ошибках и предложения, выбрав в меню '%1' пункт '%2'.</translation> + <translation type="vanished">Вы можете просмотреть все отправленные вами отчёты об ошибках и предложения, выбрав в меню '%1' пункт '%2'.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Отчёт об ошибке успешно отправлен.</translation> + <translation type="vanished">Отчёт об ошибке успешно отправлен.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>При отправке отчёта об ошибке возникла проблема: %1 + <translation type="vanished">При отправке отчёта об ошибке возникла проблема: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>Вы можете повторить отправку. После такой ошибки содержимое полей окна отправки отчёта будет восстановлено при повторном открытии.</translation> + <translation type="vanished">Вы можете повторить отправку. После такой ошибки содержимое полей окна отправки отчёта будет восстановлено при повторном открытии.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>Предложение по улучшению было успешно отправлено.</translation> + <translation type="vanished">Предложение по улучшению было успешно отправлено.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>При отправке предложения по улучшению возникла проблема: %1 + <translation type="vanished">При отправке предложения по улучшению возникла проблема: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Отчёт об ошибке</translation> + <translation type="vanished">Отчёт об ошибке</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>Опишите проблему в нескольких словах</translation> + <translation type="vanished">Опишите проблему в нескольких словах</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>Опишите проблему и шаги для её воспроизведения</translation> + <translation type="vanished">Опишите проблему и шаги для её воспроизведения</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>Предложение по улучшению функционала</translation> + <translation type="vanished">Предложение по улучшению функционала</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>Название для вашего предложения</translation> + <translation type="vanished">Название для вашего предложения</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>Опишите ваше предложение более подробно</translation> + <translation type="vanished">Опишите ваше предложение более подробно</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>Отправка от незарегистрированного пользователя, используя адрес e-mail</translation> + <translation type="vanished">Отправка от незарегистрированного пользователя, используя адрес e-mail</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>Отправка от зарегистрированного пользователя</translation> + <translation type="vanished">Отправка от зарегистрированного пользователя</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>Выход</translation> + <translation type="vanished">Выход</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>Указание действительного адреса e-mail поможет связаться с вами касательно вашего отчёта. Для подробной информации нажмите кнопку Помощь справа.</translation> + <translation type="vanished">Указание действительного адреса e-mail поможет связаться с вами касательно вашего отчёта. Для подробной информации нажмите кнопку Помощь справа.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>Введите действительный адрес e-mail либо выполните вход.</translation> + <translation type="vanished">Введите действительный адрес e-mail либо выполните вход.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>Краткое описание должно содержать от 10 до 100 символов. Более подробное описание можно ввести в поле ниже.</translation> + <translation type="vanished">Краткое описание должно содержать от 10 до 100 символов. Более подробное описание можно ввести в поле ниже.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>Детальное описание должно содержать как минимум 30 символов.</translation> + <translation type="vanished">Детальное описание должно содержать как минимум 30 символов.</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>Заголовок</translation> + <translation type="vanished">Заголовок</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>Дата отправки</translation> + <translation type="vanished">Дата отправки</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>История отчётов</translation> + <translation type="vanished">История отчётов</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>Очистить историю отчётов</translation> + <translation type="vanished">Очистить историю отчётов</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>Удалить выбранную запись</translation> + <translation type="vanished">Удалить выбранную запись</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>Некорректный ответ сервера.</translation> + <translation type="vanished">Некорректный ответ сервера.</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>Вход</translation> + <translation type="vanished">Вход</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation>Данные для входа</translation> + <translation type="vanished">Данные для входа</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>Имя пользователя:</translation> + <translation type="vanished">Имя пользователя:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>Пароль:</translation> + <translation type="vanished">Пароль:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation>Проверка</translation> + <translation type="vanished">Проверка</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation>Проверить</translation> + <translation type="vanished">Проверить</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>Статус проверки</translation> + <translation type="vanished">Статус проверки</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>Прервать</translation> + <translation type="vanished">Прервать</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>Имя пользователя должно состоять как минимум из двух символов.</translation> + <translation type="vanished">Имя пользователя должно состоять как минимум из двух символов.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>Пароль должен состоять как минимум из пяти символов.</translation> + <translation type="vanished">Пароль должен состоять как минимум из пяти символов.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>Верно</translation> + <translation type="vanished">Верно</translation> </message> </context> <context> @@ -355,12 +319,12 @@ <translation>Отфильтровать сравнения</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation>Имя сравнения:</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation>Язык реализации:</translation> </message> @@ -432,7 +396,7 @@ <message> <location filename="../windows/collationseditor.cpp" line="388"/> <source>Collations editor window has uncommitted modifications.</source> - <translation type="unfinished"></translation> + <translation>В редакторе сравнений имеются неподтверждённые изменения.</translation> </message> <message> <source>Collations editor window has uncommited modifications.</source> @@ -489,11 +453,20 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Invalid default value expression: %1</source> - <translation>Некорректное выражение для значения по умолчанию: %1</translation> + <translation type="vanished">Некорректное выражение для значения по умолчанию: %1</translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation>Введите имя ограничения.</translation> </message> @@ -605,7 +578,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation></translation> @@ -665,34 +638,44 @@ <translation>Добавить ограничение на значение по умочанию</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>Вы действительно хотите удалить ограничение '%1'?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation>Исправьте конфигурацию ограничения.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation>Это ограничение официально не поддерживается SQLite 2, но его использование допустимо.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Указание размера данных недопустимо для столбцов с типом INTEGER PRIMARY KEY.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation>Точность не может быть задана без указания размера данных.</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation>Указание точности недопустимо для столбцов с типом INTEGER PRIMARY KEY.</translation> </message> @@ -794,10 +777,9 @@ but it's okay to use it.</source> <translation>Введите имя ограничения.</translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation>Автоинкремент (только для столбцов типа %1)</translation> + <translation type="vanished">Автоинкремент (только для столбцов типа %1)</translation> </message> </context> <context> @@ -909,7 +891,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>Конфигурация</translation> </message> @@ -999,18 +981,18 @@ but it's okay to use it.</source> <translation>Просмотр и редактирование данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>Количество строк данных на странице:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation><p>При загрузке даных в табличный вид ширина столбцов автоматически подстраивается. Этот параметр ограничивает начальную ширину для подстройки, при этом пользователь может вручную изменить ширину столбца сверх данного лимита.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation>Ограничить начальную ширину столбца данных (в пикселях):</translation> </message> @@ -1019,7 +1001,7 @@ but it's okay to use it.</source> <translation type="vanished"><html><head/><body><p>&lt;p&gt;Если редактируется ячейка, содержащая NULL, и вводится пустая строка в качестве значения, то эта опция определяет, останется ли в качестве значения ячейки NULL (если опция активирована), или значение будет заменено на пустую строку (если эта опция деактивирована).&lt;/p&gt;</p></body></html></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation>Сохранять значение NULL при вводе пустой тсроки</translation> </message> @@ -1028,22 +1010,22 @@ but it's okay to use it.</source> <translation type="vanished">General.KeepNullWhenEmptyValue</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation><p>Если данная опция активирована и пользователь наводит указатель мыши на ячейку в любом режиме просмотра данных (результаты запроса, данные таблицы, данные представления), то будет отображена всплывающая подсказка с информацией о ячейке, в том числе информация о типе данных столбца, ограничениях, значение ROWID и прочее.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation>Показывать всплывающую подсказку с информацией о столбце и строке при просмотре данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation>Вставка новой строки в таблице данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation>Перед текущей выделенной строкой</translation> </message> @@ -1052,72 +1034,72 @@ but it's okay to use it.</source> <translation type="obsolete">General.InsertRowPlacement</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation>После текущей выделенной строки</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation>В конец области просмотра данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation><p>Если опция активирована, окна таблиц будут открываться на вкладке данных вместо вкладки со структурой.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation><p>Если опция активирована, вкладка "Данные" в окнах таблиц будет первой, а не второй по порядку.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation>Помещать вкладку данных в окнах таблиц первой</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation><p>Если опция активирована, окна представлений будут открываться на вкладке данных вместо вкладки со структурой.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation><p>Если опция активирована, вкладка "Данные" в окнах представлений будет первой, а не второй по порядку.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation>Помещать вкладку данных в окнах представлений первой</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>Типы данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>Доступные редакторы:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation>Выбранные редакторы для этого типа данных:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>Редактирование схемы</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>Количество сохраняемых в истории изменений DDL.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>Размер истории DDL:</translation> </message> @@ -1126,104 +1108,104 @@ but it's okay to use it.</source> <translation type="vanished">Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>SQL запросы</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>Количество сохраняемых в истории запросов.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>Размер истории:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>Если в окне редактора SQL введено более одного запроса, то (если данная опция активирована) будет выполнен лишь один запрос - тот, который находится под текстовым курсором. В противном случае будут исполнены все запросы. Вы можете ограничить выполняемые запросы, выделив их перед вызовом выполнения.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>Выполнять только запрос под курсором</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>Обновления</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>Автоматически проверять обновления при запуске</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>Сессия</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>Восстановить предыдущую сессию (активные MDI окна) после запуска</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation>Окно статуса</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation><p>Если пользователь вручную закрыл окно статуса, включение данной опции гарантирует, что при появлении новых сообщений окно статуса будет автоматически открыто. Если опция отключена, окно статуса может быть заново открыто только пользователем вручную через меню "Вид".</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation>Всегда открывать окно статуса при появлении нового сообщения</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation>Фильтруйте горячие клавиши по имени или комбинации клавиш</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation>Действие</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>Комбинация клавиш</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>Язык</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation>Для смены языка потребуется перезапустить приложение.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation>Компактный режим</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation><p>В компактном режиме все поля и отступы в интерфейсе минимизированы для отображения большего количества данных. Интерфейс станет чуть менее эстетичным, однако это позволит уместить больше данных на экране.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation>Включить компактный режим</translation> </message> @@ -1303,22 +1285,33 @@ but it's okay to use it.</source> <translation>Отображать в списке системные таблицы и индексы</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> - <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> - <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="515"/> + <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> + <translation><p>Если редактируется ячейка, содержащая NULL, и вводится пустая строка в качестве значения, то эта опция определяет, останется ли в качестве значения ячейки NULL (если опция активирована), или значение будет заменено на пустую строку (если эта опция деактивирована).</p></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="528"/> + <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> + <translation><html><head/><body><p>Активируйте эту опцию, чтобы всегда подставлять значение DEFAULT (значение по умолчанию) при записи NULL в столбец, у которого определено значение DEFAULT, даже если столбец может содержать NULL.</p><p>Отключите эту опцию для подстановки значения DEFAULT только в случае записи NULL в столбец с ограничением NOT NULL.</p></body></html></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> - <translation type="unfinished"></translation> + <translation>Использовать значение DEFAULT (если оно определено) при записи NULL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation>Окна таблиц</translation> </message> @@ -1327,12 +1320,12 @@ but it's okay to use it.</source> <translation type="obsolete">Если опция активирована, окно таблицы будет открыто на вкладке данных вместо вкладки структуры.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation>Открывать окна таблиц на вкладке данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation>Окна представлений</translation> </message> @@ -1341,184 +1334,195 @@ but it's okay to use it.</source> <translation type="obsolete">Если опция активирована, окно представления будет открыто на вкладке данных вместо вкладки структуры.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation>Открывать окна представлений на вкладке данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> + <translation>Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation>Области прикрепления вокруг главного окна</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation>Углы занимают правая и левая области</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation>Углы занимают верхняя и нижняя области</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation>Скрыть встроенные модули</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>Текущий стиль:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>Предпросмотр</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>Активно</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>Неактивно</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>Активный модуль форматирования</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>Шрифт редактора SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>Шрифт списка баз данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>Шрифт дополнительных меток в списке баз данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>Шрифт просмотра данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>Шрифт окна статуса</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>Цвета редактора SQL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation>Фон текущей строки</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation><p>Строки SQL обрамляются в одинарные кавычки.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation>Цвет строки</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation><p>Подстановочные параметры предназначены для значений, которые будут в дальнейшем указаны пользователем. Они определяются одним из следующих способов:</p><ul><li>:имя_параметра</li><li>$имя_параметра</li><li>@имя_параметра</li><li>?</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation>Цвет подстановочных параметров</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation>Фон подсвечиваемых скобок</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation><p>Данные типа BLOB — это бинарные данные, представляемые в виде шестнадцатеричных чисел, например:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation>Цвет данных типа BLOB</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation>Стандартный цвет</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation>Фон области нумерации строк</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation>Цвет ключевого слова</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation>Цвет числа</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation>Цвет комментария</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation><p>Распознаваемыми объектами являются имена талиц, индексов, триггеров и представлений, существующих в базе данных SQLite.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation>Цвет распознанных объектов</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation>Цвета в окне просмотра данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> - <translation type="unfinished"></translation> + <translation><p>Все изменения данных будут обрамлены этим цветом, пока не будут записаны в базу данных.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> - <translation type="unfinished"></translation> + <translation>Цвет обрамления неподтверждённых изменений</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> - <translation type="unfinished"></translation> + <translation><p>В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.</p></translation> </message> <message> <source><p>Any data changes will be outlined with this color, until they're commited to the database.</p></source> @@ -1533,140 +1537,140 @@ but it's okay to use it.</source> <translation type="vanished"><p>В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation>Цвет обрамления ошибочных ячеек</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation>Цвет значений NULL</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation>Фон удалённых строк</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation>Цвета списка баз данных</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation><p>Дополнительные метки содержат информацию о версии SQLite, о количестве объектов в глубине дерева и т.д.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation>Цвет дополнительных меток</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation>Цвета в окне Статуса</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation>Цвет информационного сообщения</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation>Цвет предупреждения</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation>Цвет ошибки</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>Описание:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation>Категория:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>Версия:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>Автор:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>Внутреннее имя:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>Зависимости:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation>Конфликты:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation>Сведения о модуле</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation>Модули загружаются и выгружаются сразу после активации/деактивации, однако изменения в списке загружаемых при старте модулей не будут сохранены пока вы не примените изменения в окне конфигурации.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (встроенный)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>Сведения</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation>В этой категории модулей нет.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>Добавить новый тип данных</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>Переименовать выбранный тип данных</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation>Удалить выбранный тип данных</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation>Справка по настройке редакторов типов данных</translation> </message> @@ -1818,138 +1822,154 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation>Отфильтровать данные</translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation>Табличный вид</translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation>Форма</translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation>Обновить данные таблицы</translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>Первая страница</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>Предыдущая страница</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>Следующая страница</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>Последняя страница</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation>Применить фильтр</translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation>Подтвердить изменения для выбранных ячеек</translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation>Откатить изменения для выбранных ячеек</translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation>Показать результаты в виде таблицы</translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation>Показать результаты в виде формы</translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation>Текстовый фильтр</translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation>Фильтр по регулярному выражению</translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation>Фильтр по выражению SQL</translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation>Вкладки сверху</translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation>Вкладки снизу</translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation>Поместить новые строки перед выделенной строкой</translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation>Поместить новые строки после выделенной строки</translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation>Поместить новые строки в конец области просмотра данных</translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation>Идёт подсчёт общего числа строк. Переключение на другие страницы станет возможным после окончания подсчёта.</translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>Строка: %1</translation> </message> @@ -2156,8 +2176,12 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> - <translation><p>Автоматическая генерация имени отключена, так как имя было задано вручную. Для автоматической генерации необходимо удалить содержимое из поля имени.</p></translation> + <translation type="vanished"><p>Автоматическая генерация имени отключена, так как имя было задано вручную. Для автоматической генерации необходимо удалить содержимое из поля имени.</p></translation> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="493"/> @@ -2271,283 +2295,420 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Фильтр по имени</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>Выделить всё</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>Создать группу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>Удалить группу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>Переименовать группу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>Добавить базу данных</translation> + <translation type="vanished">Добавить базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>Редактировать базу данных</translation> + <translation type="vanished">Редактировать базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>Удалить базу данных</translation> + <translation type="vanished">Удалить базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>Подключиться к базе данных</translation> + <translation type="vanished">Подключиться к базе данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>Отключиться от базы данных</translation> + <translation type="vanished">Отключиться от базы данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>Импорт</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>Экспортировать базу данных</translation> + <translation type="vanished">Экспортировать базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>Сконвертировать тип базы данных</translation> + <translation type="vanished">Сконвертировать тип базы данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> - <translation>Выполнить VACUUM</translation> + <translation type="vanished">Выполнить VACUUM</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>Проверить целостность</translation> + <translation type="vanished">Проверить целостность</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>Создать таблицу</translation> + <translation type="vanished">Создать таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>Редактировать таблицу</translation> + <translation type="vanished">Редактировать таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>Удалить таблицу</translation> + <translation type="vanished">Удалить таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>Экспортировать таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>Импортировать данные в таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>Заполнить таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>Создать подобную таблицу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>Сбросить счётчик автоинкремента</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>Создать индекс</translation> + <translation type="vanished">Создать индекс</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>Редактировать индекс</translation> + <translation type="vanished">Редактировать индекс</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>Удалить индекс</translation> + <translation type="vanished">Удалить индекс</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>Создать триггер</translation> + <translation type="vanished">Создать триггер</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>Редактировать триггер</translation> + <translation type="vanished">Редактировать триггер</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>Удалить триггер</translation> + <translation type="vanished">Удалить триггер</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>Создать представление</translation> + <translation type="vanished">Создать представление</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>Редактировать представление</translation> + <translation type="vanished">Редактировать представление</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>Удалить представление</translation> + <translation type="vanished">Удалить представление</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>Добавить столбец</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>Редактировать столбец</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>Удалить столбец</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>Удалить выбранные элементы</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>Сбросить фильтр</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>Обновить структуры всех баз данных</translation> + <translation type="vanished">Обновить структуры всех баз данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>Обновить структуру выбранной базы данных</translation> + <translation type="vanished">Обновить структуру выбранной базы данных</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation>Удалить данные из таблицы</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>База данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>Группировка</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation>Сгенерировать запрос для этой таблицы</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>Создать группу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>Имя группы</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation>Элемент с именем %1 уже входит в группу %2.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>Удалить группу</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>Вы действительно хотите удалить группу %1? Все объекты из данной группы будут перемещены в родительскую группу.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation>Вы действительно хотите удалить базу данных '%1' из списка?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation>Вы действительно хотите удалить следующие базы данных из списка: %1</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation>Удалить базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation>Операция VACUUM (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> - <translation type="unfinished"></translation> + <translation>Сброс счётчика автоинкремента у таблицы '%1' успешно выполнен.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> + <translation>Вы действительно хотите удалить все данные из таблицы (таблиц): '%1'?</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished">Невозможно открыть файл '%1' для чтения: %2</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> <translation type="unfinished"></translation> </message> <message> @@ -2559,14 +2720,14 @@ All objects from this group will be moved to parent group.</source> <translation type="obsolete">Вы действительно хотите удалить базу данных '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation> </message> @@ -2579,22 +2740,22 @@ All objects from this group will be moved to parent group.</source> <translation type="obsolete">Выполнение команды VACUUM успешно завершено.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>Проверка целостности (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>Сброс счётчика автоинкремента</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>Вы действительно хотите сбросить счётчик автоинкремента у таблицы '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>При попытке сброса счётчика автоинкремента у таблицы '%1' произошла ошибка: %2</translation> </message> @@ -2607,37 +2768,37 @@ All objects from this group will be moved to parent group.</source> <translation type="vanished">Вы действительно хотите удалить все данные из таблицы '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation>При попытке удаления данных из таблицы '%1' произошла ошибка: %2</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation>Из таблицы '%1' были удалены все данные.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>Будут удалены следующие объекты: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>Из списка будут удалены следующие базы данных: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation>Оставшиеся после удаления группы объекты будут перемещены туда, где ранее располагалась группа.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%11<br><br>Вы действительно хотите продолжить?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>Удалить объекты</translation> </message> @@ -2731,76 +2892,76 @@ All objects from this group will be moved to parent group.</source> <translation>Триггеры (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation>Переместить</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation>Включая данные</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation>Включая индексы</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation>Включая триггеры</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>Прервать</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation>Невозможно автоматически добавить перетянутый файл базы данных '%1'. Необходима ручная настройка.</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation>Связанные таблицы</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Вы хотите также включить следующие связанные таблицы: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation>Конфликт имён</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>Данный объект уже существует в целевой базе данных. Пожалуйста введите новое уникальное имя или нажмите %1 для прерывания операции:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation>Конвертация конструкций SQL</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>При конвертации конструкций SQL в новую версию SQLite произошла ошибка:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Вы хотите проигнорировать эти ошибки и продолжить?</translation> </message> @@ -2856,132 +3017,138 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Запрос</translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>История</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>Результаты в отдельной вкладке</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>Результаты под запросом</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>Редактор SQL %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>Результаты</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>Выполнить запрос</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation>План запроса</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>Очистить историю запросов</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>Экспортировать результаты</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>Создать представление из запроса</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>Предыдущая база данных</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>Следующая база данных</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>Открыть следующую вкладку</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>Открыть предыдущую вкладку</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation>Фокус на результатах внизу</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation>Фокус на редакторе SQL сверху</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation>Текущая база данных (%1/%2)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation>Запрос выполнен за %1 секунд. Затронуто строк: %2</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation>Запрос выполнен за %1 секунд.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>Очистка истории запросов</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>Вы действительно хотите удалить всю историю выполнения SQL запросов? Операцию невозможно отменить.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation>В редакторе SQL не выбрана база данных. Невозможно создать представление в неизвестной базе данных.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> - <translation type="unfinished"></translation> + <translation>В окне редактора "%1" имеются неподтверждённые данные.</translation> </message> <message> <source>Editor window "%1" has uncommited data.</source> @@ -3007,6 +3174,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished">Опции</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished">Скрипты SQL (*.sql);;Все файлы (*)</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3155,69 +3380,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Опции формата экспорта</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>Выберите базу данных для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>Выберите таблицу для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation>Введи корректный запрос для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation>Выберите хотя бы один объект для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation>Необходимо указать имя файла, в который будет произведён экспорт.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Указанный путь является существующим каталогом. Его невозможно перезаписать.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation>Каталог '%1' не существует.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Файл '%1' существует и будет перезаписан.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation>Все файлы (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation>Выберите файл для экспорта</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Внутренняя ошибка во время экспорта. Пожалуйста, вышлите отчёт об этой ошибке.</translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished">Ошибка</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3237,49 +3495,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>Подтвердить строку</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>Откатить строку</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>Первая строка</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>Предыдущая строка</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>Следующая строка</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>Последняя строка</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>Вставить новую строку</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>Удалить текущую строку</translation> @@ -3338,13 +3596,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Код инициализации:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation>Код реализации функции:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation>Код реализации последнего шага:</translation> </message> @@ -3442,7 +3700,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.cpp" line="631"/> <source>Functions editor window has uncommitted modifications.</source> - <translation type="unfinished"></translation> + <translation>В окне редактора функций имеются неподтверждённые изменения.</translation> </message> <message> <source>Functions editor window has uncommited modifications.</source> @@ -3512,42 +3770,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Опции источника данных</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Если вы введёте несуществующее имя таблицы, она будет создана.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>Введите имя таблицы</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>Выберите модуль импорта.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>Необходимо указать файл, из которого осуществляется импорт.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>Файл '%1' не существует.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Указанный путь является каталогом. Необходимо указать файл.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>Выберите файл для импорта</translation> </message> @@ -3586,12 +3844,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Столбец</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation>Сравнение</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>Сортировка</translation> </message> @@ -3771,273 +4029,406 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Панель отображения</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation>Виджеты конфигурации</translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation>Движки синтаксической подсветки</translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>Редакторы данных</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation>Отладочный режим. Нажмите %1 или воспользуйтесь пунктом меню 'Справка / Открыть отладочную консоль' для открытия отладочной консоли.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation>Отладочный режим. Отладочные сообщения выводятся в стандартный выходной поток.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>Для смены языка необходимо перезапустить приложение.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>Открыть редактор SQL</translation> + <translation type="vanished">Открыть редактор SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>Открыть историю DDL</translation> + <translation type="vanished">Открыть историю DDL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> <source>Open SQL functions editor</source> - <translation>Открыть редактор функций SQL</translation> + <translation type="vanished">Открыть редактор функций SQL</translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> <source>Open collations editor</source> - <translation>Открыть редактор сравнений</translation> + <translation type="vanished">Открыть редактор сравнений</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>Импорт</translation> + <translation type="vanished">Импорт</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>Экспорт</translation> + <translation type="vanished">Экспорт</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>Открыть диалог конфигурации</translation> + <translation type="vanished">Открыть диалог конфигурации</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>Расположить окна плиткой</translation> + <translation type="vanished">Расположить окна плиткой</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>Расположить окна по горизонтали</translation> + <translation type="vanished">Расположить окна по горизонтали</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>Расположить окна по вертикали</translation> + <translation type="vanished">Расположить окна по вертикали</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>Расположить окна каскадом</translation> + <translation type="vanished">Расположить окна каскадом</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>Следующее окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>Предыдущее окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation>Скрыть окно статуса</translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>Закрыть выбранное окно</translation> + <translation type="vanished">Закрыть выбранное окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>Закрыть все окна, кроме выбранного</translation> + <translation type="vanished">Закрыть все окна, кроме выбранного</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>Закрыть все окна</translation> + <translation type="vanished">Закрыть все окна</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>Восстановить недавно закрытые окна</translation> + <translation type="vanished">Восстановить недавно закрытые окна</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>Переименовать выбранное окно</translation> + <translation type="vanished">Переименовать выбранное окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>Открыть отладочную консоль</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation>Открыть консоль CSS</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>Сообщить об ошибке</translation> + <translation type="vanished">Сообщить об ошибке</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>Предложить новый функционал</translation> + <translation type="vanished">Предложить новый функционал</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>О программе</translation> + <translation type="vanished">О программе</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>Лицензии</translation> + <translation type="vanished">Лицензии</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>Открыть домашнюю страницу</translation> + <translation type="vanished">Открыть домашнюю страницу</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>Открыть страницу форума</translation> + <translation type="vanished">Открыть страницу форума</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>Руководство пользователя</translation> + <translation type="vanished">Руководство пользователя</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>Документация по SQLite</translation> + <translation type="vanished">Документация по SQLite</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>История отчётов</translation> + <translation type="vanished">История отчётов</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>Проверить обновления</translation> + <translation type="vanished">Проверить обновления</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>База данных</translation> + <translation type="vanished">База данных</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>Структура</translation> + <translation type="vanished">Структура</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>Вид</translation> + <translation type="vanished">Вид</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>Окна</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>Инструменты</translation> + <translation type="vanished">Инструменты</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>Справка</translation> + <translation type="vanished">Справка</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>Невозможно применить стиль: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>Переименовать окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>Введите новое имя для окна:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Доступны обновления. <a href="%1">Нажмите здесь для подробностей</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>Установлена последняя версия. Обновлений нет.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation>База данных, переданная через аргументы командной строки (%1), уже находится в списке под именем %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>База данных, переданная через аргументы командной строки (%1), была временно добавлена в список под именем %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>Невозможно добавить базу данных %1 в список.</translation> </message> @@ -4051,7 +4442,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommitted changes</source> - <translation type="unfinished"></translation> + <translation>Неподтверждённые изменения</translation> </message> <message> <location filename="../mdiwindow.cpp" line="204"/> @@ -4073,23 +4464,28 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Значение Null</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation>Настройте редакторы для этого типа данных</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation>Модуль редактора данных '%1' не загружен, хотя указан для редактирования типа данных '%1'</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation>Удалено</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>Только для чтения</translation> @@ -4098,93 +4494,143 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorBool</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> <source>Boolean</source> - <translation>Логическое</translation> + <translation type="vanished">Логическое</translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> + <source>Boolean</source> + <translation type="unfinished">Логическое</translation> </message> </context> <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation>Дата</translation> + <translation type="vanished">Дата</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished">Дата</translation> </message> </context> <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation>Дата и время</translation> + <translation type="vanished">Дата и время</translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished">Дата и время</translation> </message> </context> <context> <name>MultiEditorHex</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> <source>Hex</source> - <translation>Шестнадцатеричное</translation> + <translation type="vanished">Шестнадцатеричное</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> + <source>Hex</source> + <translation type="unfinished">Шестнадцатеричное</translation> </message> </context> <context> <name>MultiEditorNumeric</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation>Число</translation> + <translation type="vanished">Число</translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished">Число</translation> </message> </context> <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> <source>Text</source> - <translation>Текст</translation> + <translation type="vanished">Текст</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation>Tab перемещает фокус</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>Вырезать</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>Удалить</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation>Отменить</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation>Повторить</translation> </message> </context> <context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished">Текст</translation> + </message> +</context> +<context> <name>MultiEditorTime</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> <source>Time</source> - <translation>Время</translation> + <translation type="vanished">Время</translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> + <source>Time</source> + <translation type="unfinished">Время</translation> </message> </context> <context> @@ -4259,37 +4705,40 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Компонент</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Current version</source> - <translation>Текущая версия</translation> + <translation type="vanished">Текущая версия</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>Новая версия</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>Проверять обновления при запуске</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>Обновить до новой версии!</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>Обновление будет автоматически загружено и установлено. В конце процесса приложение будет перезапущено.</translation> + <translation type="vanished">Обновление будет автоматически загружено и установлено. В конце процесса приложение будет перезапущено.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>Не сейчас.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>Не устанавливать обновление и закрыть данное окно.</translation> </message> @@ -4341,32 +4790,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Заполнить</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation>Прервать</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>Настроить</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation>Настройка заполнения для данного столбца некорректна или незавершена.</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation>Выберите базу данных с таблицей для заполнения</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>Выберите таблицу для заполнения</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>Необходимо выбрать хотя бы один столбец.</translation> </message> @@ -4441,129 +4890,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>имя сравнения: %1</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation>Табличный вид данных</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation>Копировать содержимое ячеек в буфер обмена</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Paste cell(s) contents from clipboard</source> <translation>Вставить содержимое ячеек из буфера обмена</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="25"/> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation>Установить пустое значение для выбранных ячеек</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation>Установить для выбранных ячеек значение NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation>Подтвердить изменение содержимого ячеек</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation>Откатить изменения содержимого ячеек</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation>Удалить выбранную строку данных</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation>Вставить новую строку данных</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation>Открыть содержимое выбранной ячейки в отдельном редакторе</translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation>Всего доступно страниц: %1</translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation>Всего загружено строк: %1</translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation>Окно данных (и табличный вид, и форма)</translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation>Обновить данные</translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation>Переключиться с табличного вида на форму</translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation>Переключиться из формы на табличный вид</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation>Список баз данных</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation>Удалить выбранный элемент</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation>Сбросить содержимое фильтра</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation>Обновить структуру</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation>Обновить структуры всех баз данных</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation>Добавить базу данных</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation>Выделить все элементы</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation>Копировать выбранные элементы</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation>Вставить из буфера обмена</translation> </message> @@ -4638,42 +5092,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Удалить текущую строку</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation>Главное окно</translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation>Открыть редактор SQL</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation>Предыдущее окно</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation>Следующее окно</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation>Скрыть область статуса</translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation>Открыть диалог конфигурации</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation>Открыть отладочную консоль</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation>Открыть консоль CSS</translation> </message> @@ -4684,111 +5138,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation>Вырезать выбранный текст</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation>Копировать выбранный текст</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation>Удалить выбранный текст</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation>Отменить</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation>Повторить</translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation>Поле ввода редактора SQL</translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation>Выбрать всё содержимое редактора</translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation>Сохранить содержимое в файл</translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation>Загрузить содержимое из файла</translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation>Найти в тексте</translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation>Найти далее</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation>Найти предыдущее</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation>Замена в тексте</translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation>Удалить текущую строчку</translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation>Вызвать автодополнение</translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation>Форматировать содержимое</translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation>Переместить выбранный блок текста на строчку вниз</translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation>Переместить выбранный блок текста на строчку вверх</translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation>Скопировать блок текста и вставить его строчкой ниже</translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation>Скопировать блок текста и вставить его строчкой выше</translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation>Комментировать/раскомментировать</translation> </message> @@ -4809,14 +5263,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Файл баз данных</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> <source>Reports history window</source> - <translation>Окно истории отчётов</translation> + <translation type="vanished">Окно истории отчётов</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation>Удалить выбранную запись</translation> + <translation type="vanished">Удалить выбранную запись</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4864,6 +5316,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Переместить фокус ввода в окно редактора SQL вверху</translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation>Окно таблицы</translation> @@ -4988,7 +5445,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/quitconfirmdialog.ui" line="14"/> <source>Uncommitted changes</source> - <translation type="unfinished"></translation> + <translation>Неподтверждённые изменения</translation> </message> <message> <location filename="../dialogs/quitconfirmdialog.ui" line="20"/> @@ -5087,179 +5544,179 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>Вырезать</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>Копировать</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>Вставить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>Удалить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>Выделить всё</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation>Отменить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation>Повторить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation>Завершить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>Форматировать SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>Сохранить SQL в файл</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation>Выбрать файл для сохранения SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>Загрузить SQL из файла</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>Удалить строчку</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation>Переместить блок вниз</translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation>Переместить блок вверх</translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation>Копировать блок вниз</translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation>Копировать блок вверх</translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>Найти</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>Найти далее</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>Найти предыдущее</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>Заменить</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation>Комментировать/раскомментировать</translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation>SQL-код сохранён в файле %1</translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation>Дополнение синтаксиса может быть использовано только после назначения корректной базы данных редактору SQL.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation>Размер содержимого редактора SQL слишком велико, поэтому обнаружение ошибок и подсветка существующих объектов временно отключена.</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>Сохранить в файл</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation>Невозможно открыть файл '%1' для записи: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation>Скрипты SQL (*.sql);;Все файлы (*)</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>Открыть файл</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation>Невозможно открыть файл '%1' для чтения: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>Достигнут конец документа. Нажмите Найти снова для перезапуска поиска.</translation> </message> @@ -5315,24 +5772,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> - <translation type="unfinished">Невозможно редактировать данную ячейку. Подробности: %1</translation> + <translation>Невозможно редактировать данную ячейку. Подробности: %1</translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> - <translation type="unfinished"></translation> + <translation>Структура этой таблицы изменилась с момента последней загрузки данных. Перезагрузите данные для продолжения.</translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> - <translation type="unfinished"></translation> + <translation>Редактирование значений большой длины непосредственно в табличном режиме не рекомендуется. Возможны проблемы с производительностью и удобством работы. Для работы с такими большими значениями рекомендуется использовать режим формы либо отдельное окно редактирования значения (доступно в контекстном меню по щелчку правой кнопкой мыши).</translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation>Внешний ключ для столбца %2 имеет более чем %1 возможных значений. Это слишком много для отображения в выпадающем списке. Вам необходимо ввести значение вручную.</translation> </message> @@ -5340,8 +5797,8 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation>Одновременно может быть выполнен только один запрос.</translation> </message> @@ -5354,12 +5811,12 @@ find next</source> <translation type="vanished">Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Невозможно подтвердить данные для ячейки, которая ссылается на уже закрытую базу данных.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Невозможно начать транзакцию в базе данных. Подробности: %1</translation> </message> @@ -5368,12 +5825,12 @@ find next</source> <translation type="vanished">При завершении транзакции возникла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>При отмене транзакции возникла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Попытка подтверждения данных для нередактируемой ячейки (которая тем не менее была изменена и ожидает подтверждения). Это программная ошибка. Пожалуйста, отправьте о ней отчёт.</translation> </message> @@ -5382,43 +5839,48 @@ find next</source> <translation type="vanished">При подтверждении данных произошла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> - <translation type="unfinished"></translation> + <translation>Неподтверждённые данные</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> - <translation type="unfinished"></translation> + <translation>Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> - <translation type="unfinished"></translation> + <translation>При завершении транзакции возникла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> + <translation>При подтверждении данных произошла ошибка: %1</translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Ошибка при выполнении SQL запроса к базе данных '%1': %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation>Ошибка при загрузке результатов запроса: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation>Вставить несколько строк</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation>Количество вставляемых строк:</translation> </message> @@ -5426,117 +5888,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation>Перейти к связанной строке в...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>Копировать как...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>Вставить как...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>Установить значения на NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>Стереть содержимое</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation>Править содержимое в редакторе</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>Подтвердить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>Откатить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation>Подтвердить выбранные ячейки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation>Откатить выбранные ячейки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation>Определить столбцы для сортировки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation>Сбросить указанную сортировку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>Вставить строку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>Вставить несколько строк</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>Удалить выбранную строку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation>Сгенерировать запрос для выбранных ячеек</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation>Не выбраны элементы для вставки в них содержимого буфера обмена.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation>Перейти к связанной строке в таблице '%1'</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation>таблица '%1'</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation>Связанная строка (%1)</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>Править содержимое</translation> </message> @@ -5550,7 +6032,7 @@ find next</source> <message> <location filename="../datagrid/sqltablemodel.cpp" line="82"/> <source>Error while committing new row: %1</source> - <translation type="unfinished"></translation> + <translation>Ошибка при подтверждении новой строки: %1</translation> </message> <message> <location filename="../datagrid/sqltablemodel.cpp" line="140"/> @@ -5559,6 +6041,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished">Базы данных</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished">Зарегистрировать во всех базах данных</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished">Зарегистрировать в следующих базах данных:</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished">Все файлы (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished">Открыть файл</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5667,7 +6262,7 @@ but it's okay to use them anyway.</source> <translation>Введите имя ограничения.</translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation>Внешний столбец</translation> @@ -5721,24 +6316,24 @@ but it's okay to use them anyway.</source> <translation>При конфликте</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation>Сравнение</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation>Порядок сортировки</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation>Выберите хотя бы один столбец.</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation>Введите имя ограничения.</translation> </message> @@ -6078,43 +6673,44 @@ Would you like to proceed?</source> <message> <location filename="../windows/tablewindow.cpp" line="828"/> <source>Committed changes for table '%1' successfully.</source> - <translation type="unfinished"></translation> + <translation>Изменения в таблицу '%1' внесены успешно.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="832"/> <source>Committed changes for table '%1' (named before '%2') successfully.</source> - <translation type="unfinished"></translation> + <translation>Изменения в таблицу '%1' (предыдущее название '%2') внесены успешно.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="897"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> - <translation type="unfinished"></translation> + <translation>Сброс счётчика автоинкремента у таблицы '%1' успешно выполнен.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1270"/> <source>Uncommitted changes</source> - <translation type="unfinished"></translation> + <translation>Неподтверждённые изменения</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1271"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have table structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="unfinished"></translation> + <translation>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура таблицы не подтверждена. +Подтвердить структуру таблицы или вернуться на вкладку структуры?</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1616"/> <source>Table window "%1" has uncommitted structure modifications and data.</source> - <translation type="unfinished"></translation> + <translation>В окне таблицы "%1" имеются неподтверждённые изменения структуры и данных.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1618"/> <source>Table window "%1" has uncommitted data.</source> - <translation type="unfinished"></translation> + <translation>В окне таблицы "%1" имеются неподтверждённые изменения данных.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1620"/> <source>Table window "%1" has uncommitted structure modifications.</source> - <translation type="unfinished"></translation> + <translation>В окне таблицы "%1" имеются неподтверждённые изменения структуры.</translation> </message> <message> <source>Could not restore window, because database %1 could not be resolved.</source> @@ -6308,12 +6904,12 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../dialogs/triggercolumnsdialog.ui" line="115"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Выделить всё</translation> </message> <message> <location filename="../dialogs/triggercolumnsdialog.ui" line="128"/> <source>Deselect all</source> - <translation type="unfinished">Снять выделение</translation> + <translation>Снять выделение</translation> </message> </context> <context> @@ -6336,7 +6932,7 @@ Do you want to commit the structure, or do you want to go back to the structure </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation><p>SQL-условие для проверки перед запуском кода триггера. Если условие не выполнено, для текущей строки триггер вызван не будет.</p></translation> </message> @@ -6381,7 +6977,7 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>Выполняемые конструкции триггера.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6460,18 +7056,18 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>Отображаемые имена столбцов</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation>Данные</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation>Триггеры</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6515,122 +7111,123 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>Новое представление %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation>Обновить представление</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation>Подтвердить изменения представления</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation>Откатить изменения представления</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation>Явные имена столбцов</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation>Сгенерировать отображаемые имена столбцов на основе результирующих столбцов представления.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation>Добавить столбец</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation>Редактировать столбец</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation>Удалить столбец</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation>Переместить столбец вверх</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation>Переместить столбец вниз</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation>Обновить список триггеров</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation>Создать новый триггер</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation>Редактировать выбранный триггер</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation>Удалить выбранный триггер</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> - <translation type="unfinished"></translation> + <translation>В окне представления "%1" имеются неподтверждённые изменения структуры и данных.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> - <translation type="unfinished"></translation> + <translation>В окне представления "%1" имеются неподтверждённые изменения данных.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> - <translation type="unfinished"></translation> + <translation>В окне представления "%1" имеются неподтверждённые изменения структуры.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> - <translation type="unfinished"></translation> + <translation>Неподтверждённые изменения</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="unfinished"></translation> + <translation>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура представления не подтверждена. +Подтвердить структуру представления или вернуться на вкладку структуры?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> - <translation type="unfinished"></translation> + <translation>Изменения в представление '%1' внесены успешно.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> - <translation type="unfinished"></translation> + <translation>Изменения в таблицу '%1' (предыдущее название '%2') внесены успешно.</translation> </message> <message> <source>View window "%1" has uncommited structure modifications and data.</source> @@ -6645,7 +7242,7 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="vanished">В окне представления "%1" имеются неподтверждённые изменения структуры.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation>Невозможно загрузить данные представления %1. Подробности ошибки: %2</translation> </message> @@ -6660,12 +7257,12 @@ Do you want to commit the structure, or do you want to go back to the structure Подтвердить структуру представления или вернуться на вкладку структуры?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation>Вернуться на вкладку структуры</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation>Подтвердить изменения и перейти к данным.</translation> </message> @@ -6678,86 +7275,86 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="vanished">Изменения в представление '%1' (предыдущее название '%2') внесены успешно.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation>Невозможно подтвердить изменения представления. Сообщение об ошибке: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation>Перезапись столбцов</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation>Заданные столбцы будут перезаписаны. Вы хотите продолжить?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation>Невозможно определить столбцы, возвращаемые представлением. Вероятно запрос неполон или содержит ошибки.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation>Имя</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation>Вместо</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation>Условие</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation>Подробности</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation>Не удалось корректно обработать представление %1. Невозможно открыть окно представления.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation>Пустое имя</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation>SQLite позволяет представлению иметь пустое имя, хотя это не рекомендуется. Вы действительно хотите создать представление с пустым именем?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation>Невозможно проанализировать структуру конструкции SELECT. Пожалуйста, исправьте запрос и повторите попытку. Подробности: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation>Невозможно изменить представление из-за внутренней ошибки SQLiteStudio. Пожалуйста, сообщите о ней!</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation>Невозможно корректно проанализировать структуру представления для выполнения. Это ошибка SQLiteStudio. Пожалуйста, сообщите о ней.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> @@ -6765,7 +7362,7 @@ Would you like to proceed?</source> Вы хотите продолжить?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation>Изменение представления</translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm Binary files differindex 6490cf2..c3c6d5f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts index 8703dc7..aeb372d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts @@ -14,9 +14,8 @@ <translation>O programe</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Slobodný, open-source, multi-platformový SQLite databázový manažér.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor a aktívny správca:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Slobodný, open-source, multi-platformový SQLite databázový manažér.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor a aktívny správca:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -59,6 +58,11 @@ <translation>Adresár s konfiguráciou</translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation>Verzia Qt:</translation> @@ -90,261 +94,221 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Chyby a nápady</translation> + <translation type="vanished">Chyby a nápady</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>Reportér</translation> + <translation type="vanished">Reportér</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>emailová adresa</translation> + <translation type="vanished">emailová adresa</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>Prihlásenie</translation> + <translation type="vanished">Prihlásenie</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>Krátky popis</translation> + <translation type="vanished">Krátky popis</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>Detailný popis</translation> + <translation type="vanished">Detailný popis</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>Zobraziť viacej detailov</translation> + <translation type="vanished">Zobraziť viacej detailov</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>Verzia SQLiteStudio</translation> + <translation type="vanished">Verzia SQLiteStudio</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>Operačný systém</translation> + <translation type="vanished">Operačný systém</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>Načítané pluginy</translation> + <translation type="vanished">Načítané pluginy</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>Odoslať</translation> + <translation type="vanished">Odoslať</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation>Všetky svoje nahlásené chyby a nápady môžte vidieť výberom '%1' a následne '%2'.</translation> + <translation type="vanished">Všetky svoje nahlásené chyby a nápady môžte vidieť výberom '%1' a následne '%2'.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Správa o chybe bola úspešne odoslaná.</translation> + <translation type="vanished">Správa o chybe bola úspešne odoslaná.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>Vyskytol sa problém pri posielaní správy o chybe: %1 + <translation type="vanished">Vyskytol sa problém pri posielaní správy o chybe: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>Môžte zopakovať odoslanie. Keď otvoríte nahlasovacie okno po takejto chybe, obsah bude obnovený.</translation> + <translation type="vanished">Môžte zopakovať odoslanie. Keď otvoríte nahlasovacie okno po takejto chybe, obsah bude obnovený.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>Nahlásenie prebehlo úspešne.</translation> + <translation type="vanished">Nahlásenie prebehlo úspešne.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>Vyskytla sa chyba pri odoslieaní: %1 + <translation type="vanished">Vyskytla sa chyba pri odoslieaní: %1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Nahlásenie chyby</translation> + <translation type="vanished">Nahlásenie chyby</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>Popíšte problém niekoľkými slovami</translation> + <translation type="vanished">Popíšte problém niekoľkými slovami</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>Popíšte problém a spôsob ako ho reprodukovať</translation> + <translation type="vanished">Popíšte problém a spôsob ako ho reprodukovať</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>Nová funkcia</translation> + <translation type="vanished">Nová funkcia</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>Titulok novej funkcie</translation> + <translation type="vanished">Titulok novej funkcie</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>Detailnejšie popíšte svoj návrh na funkciu</translation> + <translation type="vanished">Detailnejšie popíšte svoj návrh na funkciu</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>Nahlásenie ako neregistrovaný používateľ pomocou emailovej adresy.</translation> + <translation type="vanished">Nahlásenie ako neregistrovaný používateľ pomocou emailovej adresy.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>Nahlásenie ako registrovaný používateľ.</translation> + <translation type="vanished">Nahlásenie ako registrovaný používateľ.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>Odhlásiť sa</translation> + <translation type="vanished">Odhlásiť sa</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>Zadaním reálnej emailovej adresy umožníte kontaktovať vás ohľadom vášho nahlásenia. Pre zistenie bližších detailov, kliknite na tlačitko 'i' na pravej strane okna.</translation> + <translation type="vanished">Zadaním reálnej emailovej adresy umožníte kontaktovať vás ohľadom vášho nahlásenia. Pre zistenie bližších detailov, kliknite na tlačitko 'i' na pravej strane okna.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>Zadajte platný email alebo sa prihláste.</translation> + <translation type="vanished">Zadajte platný email alebo sa prihláste.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>Krátky popis by mal obsahovať minimálne 10 znakov ale nie viacej ako 100. Dlhší popis môžte zadať v poli nižšie.</translation> + <translation type="vanished">Krátky popis by mal obsahovať minimálne 10 znakov ale nie viacej ako 100. Dlhší popis môžte zadať v poli nižšie.</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>Dlhší popis by mal obsahovať minimálne 30 znakov.</translation> + <translation type="vanished">Dlhší popis by mal obsahovať minimálne 30 znakov.</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>Titulok</translation> + <translation type="vanished">Titulok</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>Nahlásené</translation> + <translation type="vanished">Nahlásené</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>História hlásení</translation> + <translation type="vanished">História hlásení</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>Vymazať históriu hlásení</translation> + <translation type="vanished">Vymazať históriu hlásení</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>Vymazať vybranú položku</translation> + <translation type="vanished">Vymazať vybranú položku</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>Neplatná odpoveď zo servera.</translation> + <translation type="vanished">Neplatná odpoveď zo servera.</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>Prihlásenie</translation> + <translation type="vanished">Prihlásenie</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation>Prihlasovacie údaje</translation> + <translation type="vanished">Prihlasovacie údaje</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>Meno:</translation> + <translation type="vanished">Meno:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>Heslo:</translation> + <translation type="vanished">Heslo:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation>Overenie</translation> + <translation type="vanished">Overenie</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation>Overiť</translation> + <translation type="vanished">Overiť</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>Výsledok overenia</translation> + <translation type="vanished">Výsledok overenia</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>Zrušiť</translation> + <translation type="vanished">Zrušiť</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>meno musí mať dĺžku minimálne 2 znaky.</translation> + <translation type="vanished">meno musí mať dĺžku minimálne 2 znaky.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>Heslo musí mať dĺžku minimálne 5 znakov.</translation> + <translation type="vanished">Heslo musí mať dĺžku minimálne 5 znakov.</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>Úspešné overenie</translation> + <translation type="vanished">Úspešné overenie</translation> </message> </context> <context> @@ -355,12 +319,12 @@ <translation>Filtrovať porovnávania</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation>Názov porovnánavania:</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation>Implementačný jazyk:</translation> </message> @@ -489,11 +453,16 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> - <source>Invalid default value expression: %1</source> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation>Zadajte názov obmedzenia.</translation> </message> @@ -605,7 +574,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation>Vymazať obmedzenie</translation> @@ -665,34 +634,44 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>Ste si istý, že chcete vymazať obmedzenie '%1'?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -794,10 +773,9 @@ but it's okay to use it.</source> <translation>Zadajte názov obmedzenia.</translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation>Autoinkrement (iba pre stĺpec typu %1)</translation> + <translation type="vanished">Autoinkrement (iba pre stĺpec typu %1)</translation> </message> </context> <context> @@ -909,7 +887,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>Konfigurácia</translation> </message> @@ -999,128 +977,139 @@ but it's okay to use it.</source> <translation>Prezeranie a úprava dát</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>Počet data riadkov na stranu:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>Datové typy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>Dostupné editory:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>Úprava schémy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>Počet DDL zmien uchovávaných v histórii.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>Veľkosť DDL histórie:</translation> </message> @@ -1129,104 +1118,104 @@ but it's okay to use it.</source> <translation type="vanished">Nezobrazovať náhľad DDL pri potvrdzovaní zmien v schéme</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>SQL dotazy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>Počet dotazov uchovávaných v histórii.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>Veľkosť SQL histórie:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>Ak je v SQL editore viacej ako jeden dotaz, potom(ak je táto voľba zapnutá) bude vykonaný iba jeden dotaz - ten, na ktorom je kurzor. Ináč budú vykonané všetky dotazy. Vždy si viete vybrať ktoré dotazy budú vykonané a to ich výberom\označením.</p> </translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>Vykonať len dotaz, na ktorom stojí kurzor</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>Aktualizácie</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>Kontrolovať aktualizácie pri štarte</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>Sedenie</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>Obnoviť posledné sedenie (aktívne okná) pri štarte</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation>Filtrovať podľa názvu alebo klávesovej skratky</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation>Akcia</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>Klávesová skratka</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>Jazyk</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation>Je potrebné reštartovať aplikáciu aby sa zmena jazyka prejavila.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation type="unfinished"></translation> </message> @@ -1302,7 +1291,7 @@ but it's okay to use it.</source> <translation>Zobraziť systémové tabuľky a indexy v zozname</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation>Okná tabuľky</translation> </message> @@ -1311,12 +1300,12 @@ but it's okay to use it.</source> <translation type="obsolete">Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie štruktúra tabuľky.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation>Zobraziť dáta po otvorení tabuľky</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation>Okná pohľadov</translation> </message> @@ -1325,182 +1314,193 @@ but it's okay to use it.</source> <translation type="obsolete">Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie SQL dotaz.</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation>Zobraziť dáta po otvorení pohľadu</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation>Nezobrazovať interné pluginy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>Aktuálny štýl:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>Náhľad</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>Zapnutý</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>Vypnutý</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>Aktívny formátovací plugin</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>Písmo SQL editora</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>Font zoznamu databáz</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>Font doplnkového popisku</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>Font dát</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>Font status okna</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>Farby SQL editora</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation>Farba BLOB hodnoty</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation>Farby dát</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> @@ -1517,140 +1517,140 @@ but it's okay to use it.</source> <translation type="vanished"><p>V prípade chyby pri potvrdzovaní zmien dát, budú problematické bunky ohraničené touto farbou.</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation>Farba rámčeka s chybou potvrdenia dát</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation>Farba NULL hodnoty</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation>Pozadie vymazaného riadka</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation>Farby zoznamu databáz</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation>Farba doplnkového popisku</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation>Farby status okna</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation>Farba informačnej správy</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation>Farba upozornenia</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation>Farba chybovej správy</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>Popis:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation>Kategória:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>Verzia:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>Autor:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>Interný názov:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>Závislosti:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation>Konflikty:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation>Detaily pluginu</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation>Pluginy sú načítané/uvoľnené okamžite pri zaškrtnutí/odškrtnutí ale midifikovaný zoznam pluginov načítaných pri štarte nieje uložený až kým nepotvrdíte celý konfiguračný dialóg.</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (interný)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>Detaily</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>Pridať nový datový typ</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>Premenovať vybraný datový typ</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation>Vymazať vybraný datový typ</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation type="unfinished"></translation> </message> @@ -1802,138 +1802,154 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation>Filtrovať</translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation>Tabuľkové zobrazenie</translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation>Formulárové zobrazenie</translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation>Obnoviť dáta v tabuľke</translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>Prvá strana</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>Predchádzajúca strana</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>Nasledujúca strana</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>Posledná strana</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation>Aplikovať filter</translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation>Potvrdiť zmeny pre vybrané bunky</translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation>Vrátiť späť zmeny pre vybrané bunky</translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation>Výsledky zobraziť v tabuľke</translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation>Výsledky zobraziť vo formulári</translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation>Filtrovať pomocou textu</translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation>Filtrovať pomocou regulárneho výrazu</translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation>Filtrovať pomocou SQL výrazu</translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation>Záložky hore</translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation>Záložky dole</translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation>Spočítava sa celkový počet riadkov. Prezeranie ďalších strán bude možné až po dokončení spočítavania.</translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>Riadok:%1</translation> </message> @@ -2140,7 +2156,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2255,287 +2271,424 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr <translation>Filtrovať podľa názvu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>Kopírovať</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>Vložiť</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>Vybrať všetko</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>Vytvoriť skupinu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>Vymazať skupinu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>Premenovať skupinu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>Pridať databázu</translation> + <translation type="vanished">Pridať databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>Upraviť databázu</translation> + <translation type="vanished">Upraviť databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>Odstrániť databázu</translation> + <translation type="vanished">Odstrániť databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>Pripojiť sa k databáze</translation> + <translation type="vanished">Pripojiť sa k databáze</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>Odpojiť sa od databázy</translation> + <translation type="vanished">Odpojiť sa od databázy</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>Importovať</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>Exportovať databázu</translation> + <translation type="vanished">Exportovať databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>Konvertovať databázu</translation> + <translation type="vanished">Konvertovať databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> - <translation>Vacuum</translation> + <translation type="vanished">Vacuum</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>Kontrola integrity</translation> + <translation type="vanished">Kontrola integrity</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>Vytvoriť tabuľku</translation> + <translation type="vanished">Vytvoriť tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>Upraviť tabuľku</translation> + <translation type="vanished">Upraviť tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>Vymazať tabuľku</translation> + <translation type="vanished">Vymazať tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>Exportovať tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>Importovať do tabuľky</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>Naplniť tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>Vytvoriť rovnakú tabuľku</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>Resetovať sekvenciu autoinkrementu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>Vytvoriť index</translation> + <translation type="vanished">Vytvoriť index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>Upraviť index</translation> + <translation type="vanished">Upraviť index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>Vymazať index</translation> + <translation type="vanished">Vymazať index</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>Vytvoriť spúšťač</translation> + <translation type="vanished">Vytvoriť spúšťač</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>Upraviť spúšťač</translation> + <translation type="vanished">Upraviť spúšťač</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>Vymazať spúšťač</translation> + <translation type="vanished">Vymazať spúšťač</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>Vytvoriť pohľad</translation> + <translation type="vanished">Vytvoriť pohľad</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>Upraviť pohľad</translation> + <translation type="vanished">Upraviť pohľad</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>Vymazať pohľad</translation> + <translation type="vanished">Vymazať pohľad</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>Pridať stĺpec</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>Upraviť stĺpec</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>Vymazať stĺpec</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>Vymazať vybrané položky</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>Zrušiť filter</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>Obnoviť všetky databázové schémy</translation> + <translation type="vanished">Obnoviť všetky databázové schémy</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>Obnoviť vybranú databázovú schému</translation> + <translation type="vanished">Obnoviť vybranú databázovú schému</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation>Vymazať dáta z tabuľky</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>Databáza</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>Zoskupovanie</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>Vytvoriť skupinu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>Názov skupiny</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation>Položka s názvom %1 už existuje v skupine %2.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>Vymazať skupinu</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>Ste si istý, že chcete vymazať skupinu %1? Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished">Nemôžem otvoriť súbor '%1' na čítanie: %2</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Delete database</source> <translation type="obsolete">Odstrániť databázu</translation> </message> @@ -2544,14 +2697,14 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla <translation type="obsolete">Ste si istý, že chcete odstrániť databázu '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation> </message> @@ -2564,22 +2717,22 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla <translation type="obsolete">VACUUM úspešne skončilo.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>Kontrola integrity (%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>Resetovať autoinkrement</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku '%1': %2</translation> </message> @@ -2588,37 +2741,37 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla <translation type="vanished">Ste si istý, že chcete vymazať všetky dáta z tabuľky '%1'?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation>Vyskytla sa chyba pri pokuse vymazať dáta z tabuľky '%1': %2</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation>Všetky dáta z tabuľky '%1' boli vymazané.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>Nasledujúce objekty budú odstránené: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>Nasledujúce databázy budú odstránené zo zoznamu: %1.</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%1<br><br>Ste si istý, že chcete pokračovať?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>Odstránenie objektov</translation> </message> @@ -2712,74 +2865,74 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla <translation>Spúšťače (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>Kopírovať</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>Zrušiť</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2833,130 +2986,136 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Dotaz</translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>História</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>Výsledky zobraziť v samostatnej záložke</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>Výsledky zobraziť pod dotaz</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>SQL editor %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>Výsledky</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>Vykonať dotaz</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation>Vysvetliť dotaz</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>Vymazať históriu dotazov</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>Vyexportovať výsledky</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>Vytvoriť pohľad z dotazu</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>Predchádzajúca databáza</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>Nasledujúca databáza</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>Zobraziť nasledujúcu záložku</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>Zobraziť predchádzajúcu záložku</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation>Aktívna databáza (%1/%2)</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation>Dotaz trval %1 sekúnd. Počet dotknutých riadkov: %2</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation>Dotaz trval %1 sekúnd.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>Vymazať históriu dotazov</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>Ste si istý, že chete vymazať celú históriu SQL dotazov? Túto operáciu nieje možné vrátiť späť.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation>Nebola vybraná žiadna databáza v SQL editore. Nemôžem vytvoriť view pre neznámu databázu.</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2984,6 +3143,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished">Voľby</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3132,69 +3349,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Možnosti formátu exportu</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>Vyberte databázu, ktorú chcete exportovať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>Vyberte tabuľku, ktorú chcete exportovať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation>Zadajte platný dotaz pre export.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation>Vyberte aspoň jeden objekt pre export.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation>Musíte zadať názov súboru, do ktorého sa budú exportovať dáta.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Cesta, ktorú ste zadali je existujúci adresár. Nemôžte ho prepísať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation>Adresár %1 neexistuje.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Súbor %1 už existuje a bude prepísaný.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation>Výber súboru do ktorého sa budú exportovať dáta</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Počas exportu sa vyskytla interná chyba. Toto je chyba v programe. Prosím nahláste ju.</translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished">Chyba</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3214,49 +3464,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>Potvrdiť riadok</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>Vrátiť späť riadok</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>Prvý riadok</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>Predchádzajúci riadok</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>Nasledujúci riadok</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>Posledný riadok</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>Vložiť nový riadok</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>Vymazať aktuálny riadok</translation> @@ -3315,13 +3565,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation type="unfinished"></translation> </message> @@ -3485,42 +3735,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Nastavenia dátového zdroja</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Ak zadáte názov neexistujúcej tabuľky, tak bude vytvorená.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>Zadajte názov tabuľky</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>Vyberte importný plugin.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>Musíte zadať súbor, z ktorého sa budú importovať dáta.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>Súbor %1 neexistuje.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Cesta, ktorú ste zadali je adresár. Prosím zadajte celú cestu.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>Výber súboru, z ktorého sa budú importovať dáta</translation> </message> @@ -3559,12 +3809,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Stĺpec</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation>Porovnávanie</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>Zoradiť</translation> </message> @@ -3743,273 +3993,406 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Lišta pohľadov</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>Editory dát</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation>Beží v ladiacom móde. Ladiace správy sú vypisované na štandardný výstup.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>Je potrebné reštartovať aplikáciu aby sa zmena jazyka prejavila.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>Otvoriť SQL editor</translation> + <translation type="vanished">Otvoriť SQL editor</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>Otvoriť DDL históriu</translation> + <translation type="vanished">Otvoriť DDL históriu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> <source>Open SQL functions editor</source> - <translation>Otvoriť editor SQL funkcií</translation> + <translation type="vanished">Otvoriť editor SQL funkcií</translation> </message> <message> - <location filename="../mainwindow.cpp" line="260"/> <source>Open collations editor</source> - <translation>Otvoriť editor porovnávaní</translation> + <translation type="vanished">Otvoriť editor porovnávaní</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>Import</translation> + <translation type="vanished">Import</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>Export</translation> + <translation type="vanished">Export</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>Konfigurácia</translation> + <translation type="vanished">Konfigurácia</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>Oddeliť okná</translation> + <translation type="vanished">Oddeliť okná</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>Oddeliť okná horizontálne</translation> + <translation type="vanished">Oddeliť okná horizontálne</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>Oddeliť okná vertikálne</translation> + <translation type="vanished">Oddeliť okná vertikálne</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>Okná kaskádovito</translation> + <translation type="vanished">Okná kaskádovito</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>Nasledujúce okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>Predchádzajúce okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>Zatvoriť vybrané okno</translation> + <translation type="vanished">Zatvoriť vybrané okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>Zatvoriť všetky okná okrem vybraného</translation> + <translation type="vanished">Zatvoriť všetky okná okrem vybraného</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>Zatvoriť všetky okná</translation> + <translation type="vanished">Zatvoriť všetky okná</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>Obnoviť posledné zatvorené okno</translation> + <translation type="vanished">Obnoviť posledné zatvorené okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>Premenovať vybrané okno</translation> + <translation type="vanished">Premenovať vybrané okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>Otvoriť ladiacu konzolu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation>Otvoriť CSS konzolu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>Nahlásiť chybu</translation> + <translation type="vanished">Nahlásiť chybu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>Navrhnúť novú funkciu</translation> + <translation type="vanished">Navrhnúť novú funkciu</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>O programe</translation> + <translation type="vanished">O programe</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>Licencie</translation> + <translation type="vanished">Licencie</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>Otvoriť domovskú stránku</translation> + <translation type="vanished">Otvoriť domovskú stránku</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>Otvoriť fórum</translation> + <translation type="vanished">Otvoriť fórum</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>Používateľský manuál</translation> + <translation type="vanished">Používateľský manuál</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>Dokumentácia SQLite</translation> + <translation type="vanished">Dokumentácia SQLite</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>História hlásení</translation> + <translation type="vanished">História hlásení</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>Skontrolovať akutalizácie</translation> + <translation type="vanished">Skontrolovať akutalizácie</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>Databázy</translation> + <translation type="vanished">Databázy</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>Štruktúry</translation> + <translation type="vanished">Štruktúry</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>Zobrazenie</translation> + <translation type="vanished">Zobrazenie</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>Lišta okien</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>Nástroje</translation> + <translation type="vanished">Nástroje</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>Pomoc</translation> + <translation type="vanished">Pomoc</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>Nemôžem nastaviť štýl: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>Premenovať okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>Zadajte nový názov pre okno:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Nové aktualizácie sú dostupné. <a href="%1">Kliknite sem pre zobrazenie detailov</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>Niesú dostupné žiadne aktualizácie. Používate aktuálnu verziu.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation>Databáza prebratá z príkazového riadka (%1) už je v zozname pod názvom: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>Databáza prebratá z príkazového riadka (%1) bola dočasne pridaná do zoznamu pod názvom: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>Nemôžem pridať databázu %1 do zoznamu.</translation> </message> @@ -4045,32 +4428,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Hodnota null</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>Iba na čítanie</translation> </message> </context> <context> - <name>MultiEditorBool</name> + <name>MultiEditorBoolPlugin</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> <source>Boolean</source> <translation type="unfinished"></translation> </message> @@ -4078,23 +4466,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation>Dátum</translation> + <translation type="vanished">Dátum</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished">Dátum</translation> </message> </context> <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation>Dátum a čas</translation> + <translation type="vanished">Dátum a čas</translation> </message> </context> <context> - <name>MultiEditorHex</name> + <name>MultiEditorDateTimePlugin</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished">Dátum a čas</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> <source>Hex</source> <translation type="unfinished"></translation> </message> @@ -4102,59 +4504,70 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorNumeric</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation>Číslo</translation> + <translation type="vanished">Číslo</translation> </message> </context> <context> - <name>MultiEditorText</name> + <name>MultiEditorNumericPlugin</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> - <source>Text</source> - <translation type="unfinished"></translation> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished">Číslo</translation> </message> +</context> +<context> + <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>Vystrihnúť</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>Kopírovať</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>Vložiť</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>Vymazať</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>MultiEditorTime</name> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> + <location filename="../multieditor/multieditortime.cpp" line="89"/> <source>Time</source> <translation type="unfinished"></translation> </message> @@ -4231,37 +4644,40 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Komponenta</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Current version</source> - <translation>Nainštalovaná verzia</translation> + <translation type="vanished">Nainštalovaná verzia</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>Dostupná verzia</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>Kontrolovať aktualizácie pri štarte</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>Aktualizovať na novú verziu!</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>Aktualizácie budú automaticky stiahnuté a nainštalované. Na konci sa aplikácia reštartuje.</translation> + <translation type="vanished">Aktualizácie budú automaticky stiahnuté a nainštalované. Na konci sa aplikácia reštartuje.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>Nie teraz.</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>Neinštalovať aktializácie a zatvoriť toto okno.</translation> </message> @@ -4313,32 +4729,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Naplniť</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation>Zrušiť</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>Konfigurovať</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation>Vyberte databázu s tabuľkou na naplnenie</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>Vyberte tabuľku na naplnenie</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>Musíte vybrať minimálne jeden stĺpec.</translation> </message> @@ -4413,129 +4829,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Názov porovnánavania: %1</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation>Tabuľkové zobrazenie dát</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation>Kopírovať obsah buniek do schránky</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> + <source>Copy cell(s) contents together with header to clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Paste cell(s) contents from clipboard</source> <translation>Vložiť obsah buniek zo schránky</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="25"/> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation>Vymazať hodnoty z vybraných buniek</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation>Nastaviť NULL hodnotu vo vybraných bunkách</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation>Potvrdiť zmeny v bunkách</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation>Vrátiť späť zmeny v bunkách</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation>Vymazať vybraný riadok</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation>Vložiť nový riadok</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation>Otvoriť obsah vybranej bunky v samostatnom editore</translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation>Celkový počet strán: %1</translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation>Celkový počet riadkov: %1</translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation>Zobrazenie dát (tabuľka a formulár)</translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation>Obnoviť dáta</translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation>Prepnúť na tabuľkové zobrazenie dát</translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation>Prepnúť na formulárové zobrazenie dát</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation>Zoznam databáz</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation>Vymazať vybranú položku</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation>Vymazať filter</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation>Obnoviť schému</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation>Obnoviť všetky schémy</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation>Pridať databázu</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation>Vybrať všetky položky</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation>Kopírovať vybrané položky</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation>Vložiť zo schránky</translation> </message> @@ -4610,42 +5031,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Vymazať aktuálny riadok</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation>Hlavné okno</translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation>Otvoriť SQL editor</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation>Predchádzajúce okno</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation>Nasledujúce okno</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation>Skryť status okno</translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation>Otvoriť konfiguračné okno</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation>Otvoriť ladiacu konzolu</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation type="unfinished">Otvoriť CSS konzolu</translation> </message> @@ -4656,111 +5077,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation>Vystrihnúť vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation>Kopírovať vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation>Vymazať vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation>Označiť všetko</translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation>Uložiť SQL do súboru</translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation>Načítať SQL zo súboru</translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation>Nájsť v SQL</translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation>Nájsť ďalší</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation>Nájsť predchádzajúci</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation>Nahradiť v SQL</translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation>Vymazať aktuálny riadok</translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation>Otvoriť SQL pomocníka</translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation>Formátovať SQL</translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation>Presunúť blok kódu o riadok nižšie</translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation>Presunúť blok kódu o riadok vyššie</translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation>Kopírovať blok kódu a vložiť ho na riadok nižšie</translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation>Kopírovať blok kódu a vložiť ho na riadok vyššie</translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4781,14 +5202,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Databázový súbor</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> <source>Reports history window</source> - <translation>Okno histórie hlásení</translation> + <translation type="vanished">Okno histórie hlásení</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation>Vymazať vybranú položku</translation> + <translation type="vanished">Vymazať vybranú položku</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4836,6 +5255,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Prepnúť kurzor do editora</translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation>Okno tabuľky</translation> @@ -5058,179 +5482,179 @@ nájsť ďalší</translation> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>Vystrihnúť</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>Kopírovať</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>Vložiť</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>Vymazať</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>Vybrať všetko</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>Formátovať SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>Uložiť SQL do súboru</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>Načítať SQL zo súboru</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>Vymazať riadok</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>Nájsť</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>Nájsť ďalší</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>Nájsť predchádzajúci</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>Nahradiť</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>Uložiť do súboru</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation>Nemôžem otvoriť súbor '%1' pre zápis: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>Otvoriť súbor</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation>Nemôžem otvoriť súbor '%1' na čítanie: %2</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>Dosiahnutý koniec súboru. Kliknite na tlačidlo Nájsť pre hľadanie od začiatku súboru.</translation> </message> @@ -5282,24 +5706,24 @@ nájsť ďalší</translation> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5307,8 +5731,8 @@ nájsť ďalší</translation> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation>Nemôže byť spustených viacero dotazov súčasne.</translation> </message> @@ -5321,12 +5745,12 @@ nájsť ďalší</translation> <translation type="vanished">Sú tu nepotvrdené zmeny. Chcete aj napriek tomu pokračovať? Všetky nepotvrdené zmeny budú stratené.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Nemôžem potrdiť dáta bunky, ktorá odkazuje na už uzatvorenú databázu.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Nemôžem začať tranzakciu na databáze. Detaily: %1</translation> </message> @@ -5335,12 +5759,12 @@ nájsť ďalší</translation> <translation type="vanished">Vyskytla sa chyba počas potvrdzovania tranzakcie: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Vyskytla sa chyba počas vracania späť tranzakcie: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Nastal pokus o potvrdenie zmien v bunke, ktorú nieje možné upravovať (napriek tomu bola upravená a čaká na potvrdenie)! Toto je chyba. Prosím nahláste ju.</translation> </message> @@ -5349,43 +5773,48 @@ nájsť ďalší</translation> <translation type="vanished">Vyskytla sa chyba počas potvrdzovania dát: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Vyskytla sa chyba počas vykonávania SQL dotazu na databáze '%1': %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation>Vyskytla sa chyba počas načítavania výsledkov dotazu: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation>Vložiť viacero riadkov</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation>Počet vkládaných riadkov:</translation> </message> @@ -5393,117 +5822,137 @@ nájsť ďalší</translation> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>Kopírovať</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>Kopírovať ako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>Vložiť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>Vložiť ako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>Nastaviť null hodnoty</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>Vymazať hodnoty</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation>Upraviť hodnotu v editory</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>Potvrdiť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>Vrátiť späť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation>Potvrdiť vybrané bunky</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation>Vrátiť späť vybrané bunky</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation>Vybrať stĺpce na zoradenie podľa</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation>Odstrániť užívateľské triedenie</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>Vložiť riadok</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>Vložiť viacero riadkov</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>Vymazať viacero riadkov</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation>Neboli vybrané žiadne položky na vloženie obsahu schránky.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>Upraviť hodnotu</translation> </message> @@ -5526,6 +5975,119 @@ nájsť ďalší</translation> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished">Databázy</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished">Registrovať vo všetkých databázach</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished">Registrovať v nasledujúcich databázach:</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished">Všetky súbory (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished">Otvoriť súbor</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5633,7 +6195,7 @@ but it's okay to use them anyway.</source> <translation>Zadajte názov obmedzenia.</translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation>Cudzí stĺpec</translation> @@ -5687,24 +6249,24 @@ but it's okay to use them anyway.</source> <translation>Pri konflikte</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation>Porovnať</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation>Zoradiť</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation>Vyberte minimálne jeden stĺpec.</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation>Zadajte názov obmedzenia.</translation> </message> @@ -6277,7 +6839,7 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</ </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6322,7 +6884,7 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6400,18 +6962,18 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation>Dáta</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation>Spúšťače</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation>DDL</translation> </message> @@ -6443,120 +7005,120 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</ <translation>Nový pohľad %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation>Obnoviť pohľad</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation>Potvrdiť zmeny v pohľade</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation>Vrátiť späť zmeny v pohľade</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished">Pridať stĺpec</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished">Upraviť stĺpec</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished">Vymazať stĺpec</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished">Posunúť stĺpec hore</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished">Posunúť stĺpec dole</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation>Obnoviť zoznam spúšťačov</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation>Vytvoriť nový spúšťač</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation>Upraviť vybraný spúšťač</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation>Vymazať vybraný spúšťač</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> @@ -6573,7 +7135,7 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="vanished">Okno pohľadu "%1" obsahuje nepotrdené zmeny štruktúr.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation>Nemôžem načítať dáta z pohľadu %1. Detaily chyby: %2</translation> </message> @@ -6588,102 +7150,102 @@ Do you want to commit the structure, or do you want to go back to the structure Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation>Choď späť na záložku štruktúr</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation>Potvrdiť zmeny a prezerať dáta.</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation>Nemôžem potvrdiť zmeny v pohľade. Chyba: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation>Názov</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation>Podmienka</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation>Detaily</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation>SELECT nemôže byť analyzovaný. Prosím opravte dotaz a skúste to znovu. Detaily: %1</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm Binary files differindex 3201eff..98db9d2 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts index 53cd968..cbfc48e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts @@ -14,9 +14,8 @@ <translation>关于</translation> </message> <message> - <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">自由,开源,跨平台的 SQLite 数据库管理工具。<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">作者和活跃维护人:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> + <translation type="vanished"><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">自由,开源,跨平台的 SQLite 数据库管理工具。<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">作者和活跃维护人:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> @@ -59,6 +58,11 @@ <translation>配置文件目录</translation> </message> <message> + <location filename="../dialogs/aboutdialog.ui" line="30"/> + <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="https://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">https://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="https://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">https://salsoft.com.pl</span></a>)<br/></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> <translation>Qt版本:</translation> @@ -90,263 +94,223 @@ </message> </context> <context> + <name>BindParamsDialog</name> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="17"/> + <source>Query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/bindparamsdialog.ui" line="26"/> + <source>Please provide values for query parameters</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BugDialog</name> <message> - <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation>Bugs 和想法</translation> + <translation type="vanished">Bugs 和想法</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation>报告者</translation> + <translation type="vanished">报告者</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation>E-mail 地址</translation> + <translation type="vanished">E-mail 地址</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="43"/> - <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation>登录</translation> + <translation type="vanished">登录</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation>简要描述</translation> + <translation type="vanished">简要描述</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation>详细描述</translation> + <translation type="vanished">详细描述</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation>更多详细信息</translation> + <translation type="vanished">更多详细信息</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation>SQLiteStudio 版本</translation> + <translation type="vanished">SQLiteStudio 版本</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation>操作系统</translation> + <translation type="vanished">操作系统</translation> </message> <message> - <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation>已加载插件</translation> + <translation type="vanished">已加载插件</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation>发送</translation> + <translation type="vanished">发送</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished">您可以通过选择菜单 “1%”下的“%2”来查看全部您报告的bugs和想法。</translation> + <translation type="obsolete">您可以通过选择菜单 “1%”下的“%2”来查看全部您报告的bugs和想法。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation>Bug报告提交成功。</translation> + <translation type="vanished">Bug报告提交成功。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation>提交bug报告时发生了错误:%1 + <translation type="vanished">提交bug报告时发生了错误:%1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="80"/> - <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation>您可以重新发送试试。当你在发生错误后重新打开上报对话框时,你之前输入的内容将会恢复。</translation> + <translation type="vanished">您可以重新发送试试。当你在发生错误后重新打开上报对话框时,你之前输入的内容将会恢复。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation>提交建议成功。</translation> + <translation type="vanished">提交建议成功。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation>在提交建议时发生错误:%1 + <translation type="vanished">在提交建议时发生错误:%1 %2</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation>Bug报告</translation> + <translation type="vanished">Bug报告</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation>简要描述一下问题</translation> + <translation type="vanished">简要描述一下问题</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation>描述一下问题,怎么复现问题</translation> + <translation type="vanished">描述一下问题,怎么复现问题</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation>新功能建议</translation> + <translation type="vanished">新功能建议</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation>您的建议题目</translation> + <translation type="vanished">您的建议题目</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation>仔细描述一下您的想法</translation> + <translation type="vanished">仔细描述一下您的想法</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation>使用e-mail地址以未注册用户身份上报。</translation> + <translation type="vanished">使用e-mail地址以未注册用户身份上报。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation>作为已注册用户报告。</translation> + <translation type="vanished">作为已注册用户报告。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation>退出</translation> + <translation type="vanished">退出</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation>使用真实email地址有助于您上报后联系到您。如果想了解更多,请点击右方的“帮助”按钮。</translation> + <translation type="vanished">使用真实email地址有助于您上报后联系到您。如果想了解更多,请点击右方的“帮助”按钮。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation>输入正确的e-mail地址,或者登录。</translation> + <translation type="vanished">输入正确的e-mail地址,或者登录。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation>简要描述至少10个字符,但不超过100个字符。更详细的描述内容请在下面的区域填写。</translation> + <translation type="vanished">简要描述至少10个字符,但不超过100个字符。更详细的描述内容请在下面的区域填写。</translation> </message> <message> - <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation>详细描述内容至少30个字符。</translation> + <translation type="vanished">详细描述内容至少30个字符。</translation> </message> </context> <context> <name>BugReportHistoryWindow</name> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="36"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation>标题</translation> + <translation type="vanished">标题</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="41"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation>报告时间</translation> + <translation type="vanished">报告时间</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.ui" line="46"/> - <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation>URL</translation> + <translation type="vanished">URL</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation>报告历史</translation> + <translation type="vanished">报告历史</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation>清空报告历史</translation> + <translation type="vanished">清空报告历史</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation>删除选中项</translation> + <translation type="vanished">删除选中项</translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation>无效的服务器回应。</translation> + <translation type="vanished">无效的服务器回应。</translation> </message> </context> <context> <name>BugReportLoginDialog</name> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation>登录</translation> + <translation type="vanished">登录</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation>认证信息</translation> + <translation type="vanished">认证信息</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation>登录名:</translation> + <translation type="vanished">登录名:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation>密码:</translation> + <translation type="vanished">密码:</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> <translatorcomment>这里不是很确认。Not sure about this translation.</translatorcomment> - <translation>确认</translation> + <translation type="vanished">确认</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> <translatorcomment>not sure about this translation</translatorcomment> - <translation>确认</translation> + <translation type="vanished">确认</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation>验证信息</translation> + <translation type="vanished">验证信息</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation>中止</translation> + <translation type="vanished">中止</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation>登录名至少2个字符。</translation> + <translation type="vanished">登录名至少2个字符。</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation>密码至少5个字符。</translation> + <translation type="vanished">密码至少5个字符。</translation> </message> <message> - <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation>已验证</translation> + <translation type="vanished">已验证</translation> </message> </context> <context> @@ -357,12 +321,12 @@ <translation>过滤器排序规则</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="194"/> + <location filename="../windows/collationseditor.ui" line="198"/> <source>Collation name:</source> <translation>排序规则名称:</translation> </message> <message> - <location filename="../windows/collationseditor.ui" line="204"/> + <location filename="../windows/collationseditor.ui" line="208"/> <source>Implementation language:</source> <translation>实现语言:</translation> </message> @@ -491,11 +455,20 @@ </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> + <source>Invalid default value expression: %1. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../constraints/columndefaultpanel.cpp" line="89"/> + <source>Invalid default value expression. If you want to use simple string as value, remember to surround it with quote characters.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Invalid default value expression: %1</source> - <translation>无效的默认值表达式:%1</translation> + <translation type="vanished">无效的默认值表达式:%1</translation> </message> <message> - <location filename="../constraints/columndefaultpanel.cpp" line="90"/> + <location filename="../constraints/columndefaultpanel.cpp" line="92"/> <source>Enter a name of the constraint.</source> <translation>输入约束名:</translation> </message> @@ -607,7 +580,7 @@ </message> <message> <location filename="../dialogs/columndialog.cpp" line="88"/> - <location filename="../dialogs/columndialog.cpp" line="232"/> + <location filename="../dialogs/columndialog.cpp" line="234"/> <source>Delete constraint</source> <comment>column dialog</comment> <translation>删除约束</translation> @@ -667,34 +640,44 @@ <translation>添加默认约束</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="231"/> + <location filename="../dialogs/columndialog.cpp" line="233"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> <translation>您确定要删除约束“%1”吗?</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="293"/> + <location filename="../dialogs/columndialog.cpp" line="295"/> <source>Correct the constraint's configuration.</source> <translation type="unfinished">修正约束配置。</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="296"/> + <location filename="../dialogs/columndialog.cpp" line="298"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> <translation>SQLite2没有官方支持该约束,但是可以使用。</translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="385"/> + <location filename="../dialogs/columndialog.cpp" line="387"/> <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="386"/> + <location filename="../dialogs/columndialog.cpp" line="388"/> <source>Precision cannot be defined without the scale.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.cpp" line="407"/> + <location filename="../dialogs/columndialog.cpp" line="389"/> + <source>Cannot use type other than INTEGER if AUTOINCREMENT is enabled in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="390"/> + <source>INTEGER type was enforced due to enabled AUTOINCREMENT in PRIMARY KEY.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.cpp" line="412"/> <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source> <translation type="unfinished"></translation> </message> @@ -796,10 +779,9 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation type="unfinished">Autoincrement (只能%1类型的字段才能有该属性)</translation> + <translation type="obsolete">Autoincrement (只能%1类型的字段才能有该属性)</translation> </message> </context> <context> @@ -911,7 +893,7 @@ but it's okay to use it.</source> <name>ConfigDialog</name> <message> <location filename="../dialogs/configdialog.ui" line="14"/> - <location filename="../dialogs/configdialog.ui" line="1517"/> + <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Configuration</source> <translation>配置</translation> </message> @@ -1001,113 +983,113 @@ but it's okay to use it.</source> <translation>流量和编辑数据</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="485"/> + <location filename="../dialogs/configdialog.ui" line="495"/> <source>Number of data rows per page:</source> <translation>每页的行数:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="424"/> - <location filename="../dialogs/configdialog.ui" line="453"/> + <location filename="../dialogs/configdialog.ui" line="466"/> + <location filename="../dialogs/configdialog.ui" line="485"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> <translation><p>在以列表方式显示数据时,列宽度会自动调整。该值控制初始列宽度,之后您可以手动调整列宽度,不受此限制。</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="427"/> + <location filename="../dialogs/configdialog.ui" line="488"/> <source>Limit initial data column width to (in pixels):</source> <translation>限制宽度(单位:像素):</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="472"/> + <location filename="../dialogs/configdialog.ui" line="502"/> <source><p>When this is enabled and user holds mouse pointer over a cell in any data view (query results, a table data, a view data) a tooltip will appear with details about the cell - it includes details like column data type, constraints, ROWID and others.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="475"/> + <location filename="../dialogs/configdialog.ui" line="505"/> <source>Show column and row details tooltip in data view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="492"/> + <location filename="../dialogs/configdialog.ui" line="515"/> <source><p>When editing a cell which used to have NULL value and entering empty string as new value, then this option determinates whether the new value should remain NULL (have this option enabled), or should it be overwritten with empty string value (have this option disabled).</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="521"/> + <location filename="../dialogs/configdialog.ui" line="544"/> <source>Inserting new row in data grid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="527"/> + <location filename="../dialogs/configdialog.ui" line="550"/> <source>Before currently selected row</source> <translation>在已选列之前</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="543"/> + <location filename="../dialogs/configdialog.ui" line="566"/> <source>After currently selected row</source> <translation>在已选列之后</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="556"/> + <location filename="../dialogs/configdialog.ui" line="579"/> <source>At the end of data view</source> <translation>在数据显示区域的末尾</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="578"/> + <location filename="../dialogs/configdialog.ui" line="601"/> <source><p>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="591"/> + <location filename="../dialogs/configdialog.ui" line="614"/> <source><p>When enabled the "Data" tab will be placed as first tab in every Table Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="594"/> + <location filename="../dialogs/configdialog.ui" line="617"/> <source>Place data tab as first tab in a Table Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="613"/> + <location filename="../dialogs/configdialog.ui" line="636"/> <source><p>When enabled, View Windows will show up with the data tab, instead of the structure tab.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="626"/> + <location filename="../dialogs/configdialog.ui" line="649"/> <source><p>When enabled the "Data" tab will be placed as first tab in every View Window, instead of being at second place.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="629"/> + <location filename="../dialogs/configdialog.ui" line="652"/> <source>Place data tab as first tab in a View Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="673"/> + <location filename="../dialogs/configdialog.ui" line="696"/> <source>Data types</source> <translation>数据类型</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="711"/> + <location filename="../dialogs/configdialog.ui" line="734"/> <source>Available editors:</source> <translation>可用的编辑器:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="727"/> + <location filename="../dialogs/configdialog.ui" line="750"/> <source>Editors selected for this data type:</source> <translation>已选的该数据类型编辑器:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="763"/> + <location filename="../dialogs/configdialog.ui" line="786"/> <source>Schema editing</source> <translation>架构编辑</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="775"/> + <location filename="../dialogs/configdialog.ui" line="798"/> <source>Number of DDL changes kept in history.</source> <translation>数据库定义(DDL)的更改历史记录数量。</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="788"/> + <location filename="../dialogs/configdialog.ui" line="811"/> <source>DDL history size:</source> <translation>数据库定义(DDL)历史大小:</translation> </message> @@ -1116,104 +1098,104 @@ but it's okay to use it.</source> <translation type="vanished">当提交schema变动时不显示数据库定义(DDL)预览对话框</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="808"/> + <location filename="../dialogs/configdialog.ui" line="831"/> <source>SQL queries</source> <translation>SQL查询</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="820"/> - <location filename="../dialogs/configdialog.ui" line="833"/> + <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="856"/> <source>Number of queries kept in the history.</source> <translation>查询历史记录数量。</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="836"/> + <location filename="../dialogs/configdialog.ui" line="859"/> <source>History size:</source> <translation>历史大小:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="843"/> + <location filename="../dialogs/configdialog.ui" line="879"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> <translation><p>如果SQL编辑器中有多个语句,如果启用该选项,只执行光标下的语句;反之则执行全部语句。另外您可以选择需要执行的语句来执行</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="846"/> + <location filename="../dialogs/configdialog.ui" line="882"/> <source>Execute only the query under the cursor</source> <translation>只执行光标下的语句</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="859"/> + <location filename="../dialogs/configdialog.ui" line="905"/> <source>Updates</source> <translation>更新</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="865"/> + <location filename="../dialogs/configdialog.ui" line="911"/> <source>Automatically check for updates at startup</source> <translation>在启动时自己检查更新</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="878"/> + <location filename="../dialogs/configdialog.ui" line="924"/> <source>Session</source> <translation>会话</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="884"/> + <location filename="../dialogs/configdialog.ui" line="930"/> <source>Restore last session (active MDI windows) after startup</source> <translation>启动后恢复上一次会话。</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="897"/> + <location filename="../dialogs/configdialog.ui" line="943"/> <source>Status Field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="903"/> + <location filename="../dialogs/configdialog.ui" line="949"/> <source><p>When user manually closes the Status panel, this option makes sure that if any new message is printed in the Status panel it will be reopened. If it's disabled, then Status panel can only be open manually by the user from the "View" menu.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="906"/> + <location filename="../dialogs/configdialog.ui" line="952"/> <source>Always open Status panel when new message is printed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="948"/> + <location filename="../dialogs/configdialog.ui" line="994"/> <source>Filter shortcuts by name or key combination</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="989"/> + <location filename="../dialogs/configdialog.ui" line="1035"/> <source>Action</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="994"/> + <location filename="../dialogs/configdialog.ui" line="1040"/> <source>Key combination</source> <translation>按键编定</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1038"/> - <location filename="../dialogs/configdialog.ui" line="1507"/> + <location filename="../dialogs/configdialog.ui" line="1084"/> + <location filename="../dialogs/configdialog.ui" line="1553"/> <source>Language</source> <translation>语言</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1044"/> + <location filename="../dialogs/configdialog.ui" line="1090"/> <source>Changing language requires application restart to take effect.</source> <translation>更改语言后,重启程序生效。</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1061"/> + <location filename="../dialogs/configdialog.ui" line="1107"/> <source>Compact layout</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1067"/> + <location filename="../dialogs/configdialog.ui" line="1113"/> <source><p>Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1070"/> + <location filename="../dialogs/configdialog.ui" line="1116"/> <source>Use compact layout</source> <translation type="unfinished"></translation> </message> @@ -1289,350 +1271,372 @@ but it's okay to use it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="495"/> + <location filename="../dialogs/configdialog.ui" line="424"/> + <location filename="../dialogs/configdialog.ui" line="434"/> + <source><p>Maximum number of configurations of Populate Table dialog stored in configuration. Value of 100 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="427"/> + <source>Number of memorized table populating configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="518"/> <source>Keep NULL value when entering empty value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="505"/> + <location filename="../dialogs/configdialog.ui" line="528"/> <source><html><head/><body><p>Enable this to always enforce DEFAULT value when committing a NULL value for a column that has DEFAULT value defined, even though the column is allowed to contain NULL values.</p><p>Disable this option to use DEFAULT value exclusively when NULL value is committed for column with NOT NULL constraint.</p></body></html></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="508"/> + <location filename="../dialogs/configdialog.ui" line="531"/> <source>Use DEFAULT value (if defined), when committing NULL value</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="572"/> + <location filename="../dialogs/configdialog.ui" line="595"/> <source>Table windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="581"/> + <location filename="../dialogs/configdialog.ui" line="604"/> <source>Open Table Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="607"/> + <location filename="../dialogs/configdialog.ui" line="630"/> <source>View windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="616"/> + <location filename="../dialogs/configdialog.ui" line="639"/> <source>Open View Windows with the data tab for start</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="795"/> + <location filename="../dialogs/configdialog.ui" line="818"/> <source>Don't show DDL preview dialog when committing schema changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1086"/> + <location filename="../dialogs/configdialog.ui" line="866"/> + <location filename="../dialogs/configdialog.ui" line="892"/> + <source><p>Maximum number of query parameters (:param, @param, $param, ?) stored in history. When you re-use parameter with the same name/position, SQLiteStudio will pre-initialize it with most recent memorized value (you will still be able to change it). Value of 1000 should be sufficient.</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="895"/> + <source>Number of memorized query parameters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/configdialog.ui" line="1132"/> <source>Main window dock areas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1092"/> + <location filename="../dialogs/configdialog.ui" line="1138"/> <source>Left and right areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1112"/> + <location filename="../dialogs/configdialog.ui" line="1158"/> <source>Top and bottom areas occupy corners</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1234"/> + <location filename="../dialogs/configdialog.ui" line="1280"/> <source>Hide built-in plugins</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1263"/> + <location filename="../dialogs/configdialog.ui" line="1309"/> <source>Current style:</source> <translation>当前风格:</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1280"/> + <location filename="../dialogs/configdialog.ui" line="1326"/> <source>Preview</source> <translation>预览</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1290"/> + <location filename="../dialogs/configdialog.ui" line="1336"/> <source>Enabled</source> <translation>已启用</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1463"/> + <location filename="../dialogs/configdialog.ui" line="1509"/> <source>Disabled</source> <translation>已禁用</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1512"/> + <location filename="../dialogs/configdialog.ui" line="1558"/> <source>Active formatter plugin</source> <translation>启用格式化插件</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1550"/> + <location filename="../dialogs/configdialog.ui" line="1596"/> <source>SQL editor font</source> <translation>SQL编辑器字体</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1566"/> + <location filename="../dialogs/configdialog.ui" line="1612"/> <source>Database list font</source> <translation>数据库字体</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1582"/> + <location filename="../dialogs/configdialog.ui" line="1628"/> <source>Database list additional label font</source> <translation>数据库额外标签字体</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1598"/> + <location filename="../dialogs/configdialog.ui" line="1644"/> <source>Data view font</source> <translation>数据浏览字体</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1614"/> + <location filename="../dialogs/configdialog.ui" line="1660"/> <source>Status field font</source> <translation>状态栏字体</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1672"/> + <location filename="../dialogs/configdialog.ui" line="1718"/> <source>SQL editor colors</source> <translation>SQL编辑器颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1678"/> + <location filename="../dialogs/configdialog.ui" line="1724"/> <source>Current line background</source> <translation>当前行的背景色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1685"/> + <location filename="../dialogs/configdialog.ui" line="1731"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> <translation><p>单引号内的SQL字符串</p></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1688"/> + <location filename="../dialogs/configdialog.ui" line="1734"/> <source>String foreground</source> <translation>字符串颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1791"/> + <location filename="../dialogs/configdialog.ui" line="1837"/> <source><p>Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:</p><ul><li>:param_name</li><li>$param_name</li><li>@param_name</li><li>?</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1794"/> + <location filename="../dialogs/configdialog.ui" line="1840"/> <source>Bind parameter foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1817"/> + <location filename="../dialogs/configdialog.ui" line="1863"/> <source>Highlighted parenthesis background</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1824"/> + <location filename="../dialogs/configdialog.ui" line="1870"/> <source><p>BLOB values are binary values represented as hexadecimal numbers, like:</p><ul><li>X'12B4'</li><li>x'46A2F4'</li></ul></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1827"/> + <location filename="../dialogs/configdialog.ui" line="1873"/> <source>BLOB value foreground</source> <translation>BLOB值的颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1834"/> + <location filename="../dialogs/configdialog.ui" line="1880"/> <source>Regular foreground</source> <translation type="unfinished">背景色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1841"/> + <location filename="../dialogs/configdialog.ui" line="1887"/> <source>Line numbers area background</source> <translation>行号的背景色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1864"/> + <location filename="../dialogs/configdialog.ui" line="1910"/> <source>Keyword foreground</source> <translation>关键字的颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1871"/> + <location filename="../dialogs/configdialog.ui" line="1917"/> <source>Number foreground</source> <translation>数字颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1878"/> + <location filename="../dialogs/configdialog.ui" line="1924"/> <source>Comment foreground</source> <translation>注释颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1917"/> + <location filename="../dialogs/configdialog.ui" line="1963"/> <source><p>Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1920"/> + <location filename="../dialogs/configdialog.ui" line="1966"/> <source>Valid objects foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1946"/> + <location filename="../dialogs/configdialog.ui" line="1992"/> <source>Data view colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1952"/> + <location filename="../dialogs/configdialog.ui" line="1998"/> <source><p>Any data changes will be outlined with this color, until they're committed to the database.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1955"/> + <location filename="../dialogs/configdialog.ui" line="2001"/> <source>Uncommitted data outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1978"/> + <location filename="../dialogs/configdialog.ui" line="2024"/> <source><p>In case of error while committing data changes, the problematic cell will be outlined with this color.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="1981"/> + <location filename="../dialogs/configdialog.ui" line="2027"/> <source>Commit error outline color</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2004"/> + <location filename="../dialogs/configdialog.ui" line="2050"/> <source>NULL value foreground</source> <translation>NULL值的颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2027"/> + <location filename="../dialogs/configdialog.ui" line="2073"/> <source>Deleted row background</source> <translation>已删除行的背景色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2053"/> + <location filename="../dialogs/configdialog.ui" line="2099"/> <source>Database list colors</source> <translation>数据库列表颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2059"/> + <location filename="../dialogs/configdialog.ui" line="2105"/> <source><p>Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2062"/> + <location filename="../dialogs/configdialog.ui" line="2108"/> <source>Additional labels foreground</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2088"/> + <location filename="../dialogs/configdialog.ui" line="2134"/> <source>Status field colors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2094"/> + <location filename="../dialogs/configdialog.ui" line="2140"/> <source>Information message foreground</source> <translation>信息颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2117"/> + <location filename="../dialogs/configdialog.ui" line="2163"/> <source>Warning message foreground</source> <translation>警告信息颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.ui" line="2140"/> + <location filename="../dialogs/configdialog.ui" line="2186"/> <source>Error message foreground</source> <translation>错误信息颜色</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="785"/> + <location filename="../dialogs/configdialog.cpp" line="792"/> <source>Description:</source> <comment>plugin details</comment> <translation>描述:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="786"/> + <location filename="../dialogs/configdialog.cpp" line="793"/> <source>Category:</source> <comment>plugin details</comment> <translation>分类:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="787"/> + <location filename="../dialogs/configdialog.cpp" line="794"/> <source>Version:</source> <comment>plugin details</comment> <translation>版本:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="788"/> + <location filename="../dialogs/configdialog.cpp" line="795"/> <source>Author:</source> <comment>plugin details</comment> <translation>作者:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="790"/> + <location filename="../dialogs/configdialog.cpp" line="797"/> <source>Internal name:</source> <comment>plugin details</comment> <translation>内部名字:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="791"/> + <location filename="../dialogs/configdialog.cpp" line="798"/> <source>Dependencies:</source> <comment>plugin details</comment> <translation>依赖:</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="792"/> + <location filename="../dialogs/configdialog.cpp" line="799"/> <source>Conflicts:</source> <comment>plugin details</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="796"/> + <location filename="../dialogs/configdialog.cpp" line="803"/> <source>Plugin details</source> <translation>插件详情</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1208"/> + <location filename="../dialogs/configdialog.cpp" line="1215"/> <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1272"/> + <location filename="../dialogs/configdialog.cpp" line="1279"/> <source>%1 (built-in)</source> <comment>plugins manager in configuration dialog</comment> <translation>%1 (内建)</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1285"/> + <location filename="../dialogs/configdialog.cpp" line="1292"/> <source>Details</source> <translation>详情</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1297"/> + <location filename="../dialogs/configdialog.cpp" line="1304"/> <source>No plugins in this category.</source> <translation>该分类下没有插件。</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1399"/> + <location filename="../dialogs/configdialog.cpp" line="1406"/> <source>Add new data type</source> <translation>添加新的数据类型</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1403"/> + <location filename="../dialogs/configdialog.cpp" line="1410"/> <source>Rename selected data type</source> <translation>重命名选择的数据类型</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1407"/> + <location filename="../dialogs/configdialog.cpp" line="1414"/> <source>Delete selected data type</source> <translation>删除已选数据类型</translation> </message> <message> - <location filename="../dialogs/configdialog.cpp" line="1411"/> + <location filename="../dialogs/configdialog.cpp" line="1418"/> <source>Help for configuring data type editors</source> <translation type="unfinished"></translation> </message> @@ -1784,137 +1788,153 @@ but it's okay to use it.</source> <context> <name>DataView</name> <message> - <location filename="../dataview.cpp" line="99"/> + <location filename="../dataview.cpp" line="105"/> <source>Filter data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="108"/> + <location filename="../dataview.cpp" line="114"/> <source>Grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="109"/> + <location filename="../dataview.cpp" line="115"/> <source>Form view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="166"/> + <location filename="../dataview.cpp" line="206"/> <source>Refresh table data</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="183"/> + <location filename="../dataview.cpp" line="223"/> <source>First page</source> <comment>data view</comment> <translation>首页</translation> </message> <message> - <location filename="../dataview.cpp" line="184"/> + <location filename="../dataview.cpp" line="224"/> <source>Previous page</source> <comment>data view</comment> <translation>上一页</translation> </message> <message> - <location filename="../dataview.cpp" line="186"/> + <location filename="../dataview.cpp" line="226"/> <source>Next page</source> <comment>data view</comment> <translation>下一页</translation> </message> <message> - <location filename="../dataview.cpp" line="187"/> + <location filename="../dataview.cpp" line="227"/> <source>Last page</source> <comment>data view</comment> <translation>末页</translation> </message> <message> - <location filename="../dataview.cpp" line="192"/> + <location filename="../dataview.cpp" line="947"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="950"/> + <source>Hit Enter key or press "Apply filter" button on toolbar to apply new value.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="996"/> + <source>Show filter inputs per column</source> + <comment>data view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dataview.cpp" line="1000"/> <source>Apply filter</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="207"/> + <location filename="../dataview.cpp" line="236"/> <source>Commit changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="208"/> + <location filename="../dataview.cpp" line="237"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="209"/> + <location filename="../dataview.cpp" line="238"/> <source>Show grid view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="210"/> + <location filename="../dataview.cpp" line="239"/> <source>Show form view of results</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="284"/> + <location filename="../dataview.cpp" line="978"/> <source>Filter by text</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="285"/> + <location filename="../dataview.cpp" line="979"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="286"/> + <location filename="../dataview.cpp" line="980"/> <source>Filter by SQL expression</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="317"/> + <location filename="../dataview.cpp" line="324"/> <source>Tabs on top</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="318"/> + <location filename="../dataview.cpp" line="325"/> <source>Tabs at bottom</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="343"/> + <location filename="../dataview.cpp" line="350"/> <source>Place new rows above selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="344"/> + <location filename="../dataview.cpp" line="351"/> <source>Place new rows below selected row</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="345"/> + <location filename="../dataview.cpp" line="352"/> <source>Place new rows at the end of the data view</source> <comment>data view</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="613"/> + <location filename="../dataview.cpp" line="656"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="624"/> + <location filename="../dataview.cpp" line="667"/> <source>Row: %1</source> <translation>行:%1</translation> </message> @@ -2101,7 +2121,7 @@ Browsing other pages will be possible after the row counting is done.</source> </message> <message> <location filename="../dialogs/dbdialog.cpp" line="484"/> - <source><p>Automatic name generation was disabled, becuase the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> + <source><p>Automatic name generation was disabled, because the name was edited manually. To restore automatic generation please erase contents of the name field.</p></source> <translation type="unfinished"></translation> </message> <message> @@ -2211,287 +2231,424 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>过滤名</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="104"/> + <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Copy</source> <translation>复制</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="105"/> + <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Paste</source> <translation>粘贴</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="106"/> + <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Select all</source> <translation>全选</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="107"/> + <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Create a group</source> <translation>创建分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="108"/> + <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Delete the group</source> <translation>删除分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="109"/> + <location filename="../dbtree/dbtree.cpp" line="139"/> <source>Rename the group</source> <translation>重命名分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Add a database</source> - <translation>添加数据库</translation> + <translation type="vanished">添加数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Edit the database</source> - <translation>编辑数据库</translation> + <translation type="vanished">编辑数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Remove the database</source> - <translation>移除数据库</translation> + <translation type="vanished">移除数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Connect to the database</source> - <translation>连接到数据库</translation> + <translation type="vanished">连接到数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Disconnect from the database</source> - <translation>断开数据库连接</translation> + <translation type="vanished">断开数据库连接</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="115"/> + <location filename="../dbtree/dbtree.cpp" line="145"/> <source>Import</source> <translation>导入</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Export the database</source> - <translation>导数该数据库</translation> + <translation type="vanished">导数该数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Convert database type</source> - <translation>转换数据库类型</translation> + <translation type="vanished">转换数据库类型</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Vacuum</source> - <translation>清理</translation> + <translation type="vanished">清理</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Integrity check</source> - <translation>检查完整性</translation> + <translation type="vanished">检查完整性</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Create a table</source> - <translation>新建表</translation> + <translation type="vanished">新建表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Edit the table</source> - <translation>编辑该表</translation> + <translation type="vanished">编辑该表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Delete the table</source> - <translation>删除该表</translation> + <translation type="vanished">删除该表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="123"/> + <location filename="../dbtree/dbtree.cpp" line="153"/> <source>Export the table</source> <translation>导出该表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="124"/> + <location filename="../dbtree/dbtree.cpp" line="154"/> <source>Import into the table</source> <translation>导入到该表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="125"/> + <location filename="../dbtree/dbtree.cpp" line="155"/> <source>Populate table</source> <translation>填充表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="126"/> + <location filename="../dbtree/dbtree.cpp" line="156"/> <source>Create similar table</source> <translation>创建一个相似的表</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="127"/> + <location filename="../dbtree/dbtree.cpp" line="157"/> <source>Reset autoincrement sequence</source> <translation>重设 autoincrement</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Create an index</source> - <translation>创建索引</translation> + <translation type="vanished">创建索引</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Edit the index</source> - <translation>编辑该索引</translation> + <translation type="vanished">编辑该索引</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Delete the index</source> - <translation>删除该索引</translation> + <translation type="vanished">删除该索引</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Create a trigger</source> - <translation>创建触发器</translation> + <translation type="vanished">创建触发器</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Edit the trigger</source> - <translation>编辑该触发器</translation> + <translation type="vanished">编辑该触发器</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Delete the trigger</source> - <translation>删除该触发器</translation> + <translation type="vanished">删除该触发器</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Create a view</source> - <translation>创建视图</translation> + <translation type="vanished">创建视图</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Edit the view</source> - <translation>编辑该视图</translation> + <translation type="vanished">编辑该视图</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Delete the view</source> - <translation>删除该视图</translation> + <translation type="vanished">删除该视图</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="137"/> + <location filename="../dbtree/dbtree.cpp" line="167"/> <source>Add a column</source> <translation>添加字段</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="138"/> + <location filename="../dbtree/dbtree.cpp" line="168"/> <source>Edit the column</source> <translation>编辑该字段</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="139"/> + <location filename="../dbtree/dbtree.cpp" line="169"/> <source>Delete the column</source> <translation>删除该字段</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="140"/> + <location filename="../dbtree/dbtree.cpp" line="170"/> <source>Delete selected items</source> <translation>删除已选项目</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="141"/> + <location filename="../dbtree/dbtree.cpp" line="171"/> <source>Clear filter</source> <translation>清除过滤器</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="142"/> <source>Refresh all database schemas</source> - <translation>刷新全部数据库的结构</translation> + <translation type="vanished">刷新全部数据库的结构</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="143"/> <source>Refresh selected database schema</source> - <translation>刷新已选数据库的结构</translation> + <translation type="vanished">刷新已选数据库的结构</translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="101"/> + <source>Execution from file cancelled. Any queries executed so far have been rolled back.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="140"/> + <source>&Add a database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="141"/> + <source>&Edit the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="142"/> + <source>&Remove the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="143"/> + <source>&Connect to the database</source> + <translation type="unfinished"></translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="144"/> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <source>&Disconnect from the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="146"/> + <source>&Export the database</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="147"/> + <source>Con&vert database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="148"/> + <source>Vac&uum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="149"/> + <source>&Integrity check</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="150"/> + <source>Create a &table</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="151"/> + <source>Edit the t&able</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="152"/> + <source>Delete the ta&ble</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="158"/> + <source>Create an &index</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="159"/> + <source>Edit the i&ndex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="160"/> + <source>Delete the in&dex</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="161"/> + <source>Create a trig&ger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="162"/> + <source>Edit the trigg&er</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="163"/> + <source>Delete the trigge&r</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="164"/> + <source>Create a &view</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="165"/> + <source>Edit the v&iew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="166"/> + <source>Delete the vi&ew</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="172"/> + <source>&Refresh all database schemas</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="173"/> + <source>Re&fresh selected database schema</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="174"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Erase table data</source> <translation>擦除该表的数据</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="319"/> - <location filename="../dbtree/dbtree.cpp" line="324"/> + <location filename="../dbtree/dbtree.cpp" line="179"/> + <source>Open file's directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="180"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="355"/> + <location filename="../dbtree/dbtree.cpp" line="360"/> <source>Database</source> <translation>数据库</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="334"/> + <location filename="../dbtree/dbtree.cpp" line="370"/> <source>Grouping</source> <translation>分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="339"/> + <location filename="../dbtree/dbtree.cpp" line="375"/> <source>Generate query for table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Create group</source> <translation>创建分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1048"/> + <location filename="../dbtree/dbtree.cpp" line="1086"/> <source>Group name</source> <translation>分组名</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1051"/> + <location filename="../dbtree/dbtree.cpp" line="1089"/> <source>Entry with name %1 already exists in group %2.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1069"/> + <location filename="../dbtree/dbtree.cpp" line="1107"/> <source>Delete group</source> <translation>删除分组</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1070"/> + <location filename="../dbtree/dbtree.cpp" line="1108"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> <translation>确认删除组 %1 吗? 删除后该组下的全部内容将被移动到其所属的父分组中。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1133"/> + <location filename="../dbtree/dbtree.cpp" line="1171"/> <source>Are you sure you want to remove database '%1' from the list?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1141"/> + <location filename="../dbtree/dbtree.cpp" line="1179"/> <source>Are you sure you want to remove following databases from the list: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1143"/> + <location filename="../dbtree/dbtree.cpp" line="1181"/> <source>Remove database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1449"/> + <location filename="../dbtree/dbtree.cpp" line="1487"/> <source>Vacuum (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1508"/> + <location filename="../dbtree/dbtree.cpp" line="1546"/> <source>Autoincrement value for table '%1' has been reset successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1528"/> + <location filename="../dbtree/dbtree.cpp" line="1566"/> <source>Are you sure you want to delete all data from table(s): %1?</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dbtree/dbtree.cpp" line="1872"/> + <source>Could not execute SQL, because application has failed to start transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1886"/> + <source>Could not open file '%1' for reading: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1972"/> + <source>Could not execute SQL, because application has failed to commit the transaction: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1976"/> + <source>Finished executing %1 queries in %2 seconds. %3 were not executed due to errors.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1981"/> + <source>Finished executing %1 queries in %2 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbtree/dbtree.cpp" line="1987"/> + <source>Could not execute SQL due to error.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Delete database</source> <translation type="obsolete">删除数据库</translation> </message> @@ -2500,14 +2657,14 @@ All objects from this group will be moved to parent group.</source> <translation type="obsolete">您确定要删除数据库“%1”吗?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1180"/> - <location filename="../dbtree/dbtree.cpp" line="1373"/> + <location filename="../dbtree/dbtree.cpp" line="1218"/> + <location filename="../dbtree/dbtree.cpp" line="1411"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>未能导入,因为没有导入插件被加载。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1200"/> - <location filename="../dbtree/dbtree.cpp" line="1348"/> + <location filename="../dbtree/dbtree.cpp" line="1238"/> + <location filename="../dbtree/dbtree.cpp" line="1386"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>未能导出,因为没有导出插件被加载。</translation> </message> @@ -2520,22 +2677,22 @@ All objects from this group will be moved to parent group.</source> <translation type="obsolete">VACUUM 命令执行完成。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1463"/> + <location filename="../dbtree/dbtree.cpp" line="1501"/> <source>Integrity check (%1)</source> <translation>完整性检查(%1)</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Reset autoincrement</source> <translation>重置autoincrement</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1499"/> + <location filename="../dbtree/dbtree.cpp" line="1537"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> <translation>您确定要重设“%1”的autoincrement吗?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1506"/> + <location filename="../dbtree/dbtree.cpp" line="1544"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> <translation>在重设表“%1”的autoincrement时出现错误:%2</translation> </message> @@ -2548,37 +2705,37 @@ All objects from this group will be moved to parent group.</source> <translation type="vanished">您确定要删除表“%1”中的全部数据吗?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1541"/> + <location filename="../dbtree/dbtree.cpp" line="1579"/> <source>An error occurred while trying to delete data from table '%1': %2</source> <translation>删除表“%1”中的数据时出错:%2</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1545"/> + <location filename="../dbtree/dbtree.cpp" line="1583"/> <source>All data has been deleted for table '%1'.</source> <translation>表“%1”中的数据全部被删除。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1660"/> + <location filename="../dbtree/dbtree.cpp" line="1697"/> <source>Following objects will be deleted: %1.</source> <translation>以下内容将被删除:%1。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1663"/> + <location filename="../dbtree/dbtree.cpp" line="1700"/> <source>Following databases will be removed from list: %1.</source> <translation>以下数据库将从列表中移除:%1。</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1666"/> + <location filename="../dbtree/dbtree.cpp" line="1703"/> <source>Remainig objects from deleted group will be moved in place where the group used to be.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1668"/> + <location filename="../dbtree/dbtree.cpp" line="1705"/> <source>%1<br><br>Are you sure you want to continue?</source> <translation>%1<br><br>继续?</translation> </message> <message> - <location filename="../dbtree/dbtree.cpp" line="1670"/> + <location filename="../dbtree/dbtree.cpp" line="1707"/> <source>Delete objects</source> <translation>删除对象</translation> </message> @@ -2667,74 +2824,74 @@ All objects from this group will be moved to parent group.</source> <translation>触发器(%1)</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1096"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> <source>Copy</source> <translation>复制</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1097"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> <source>Move</source> <translation>移动</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1099"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> <source>Include data</source> <translation>包含数据</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1100"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1104"/> <source>Include indexes</source> <translation>包含索引</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1101"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1105"/> <source>Include triggers</source> <translation>包含触发器</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1103"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1107"/> <source>Abort</source> <translation>中止</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1162"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Could not add dropped database file '%1' automatically. Manual setup is necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1209"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1213"/> <source>Referenced tables</source> <translation>参照表</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1210"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1214"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1219"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1223"/> <source>Name conflict</source> <translation>名字冲突</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1220"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1224"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1233"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1237"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1241"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1245"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1242"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1246"/> <source>Would you like to ignore those errors and proceed?</source> <translation>忽略错误并继续?</translation> </message> @@ -2788,130 +2945,136 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.ui" line="112"/> + <location filename="../windows/editorwindow.ui" line="115"/> <source>History</source> <translation>历史</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="137"/> + <location filename="../windows/editorwindow.cpp" line="142"/> <source>Results in the separate tab</source> <translation>结果在新标签中打开</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="138"/> + <location filename="../windows/editorwindow.cpp" line="143"/> <source>Results below the query</source> <translation>结果在当前页打开</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="171"/> - <location filename="../windows/editorwindow.cpp" line="173"/> + <location filename="../windows/editorwindow.cpp" line="176"/> + <location filename="../windows/editorwindow.cpp" line="178"/> <source>SQL editor %1</source> <translation>SQL编辑器 %1</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="331"/> + <location filename="../windows/editorwindow.cpp" line="336"/> <source>Results</source> <translation>结果</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="364"/> + <location filename="../windows/editorwindow.cpp" line="369"/> <source>Execute query</source> <translation>执行语句</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="365"/> + <location filename="../windows/editorwindow.cpp" line="370"/> <source>Explain query</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="368"/> + <location filename="../windows/editorwindow.cpp" line="373"/> <source>Clear execution history</source> <comment>sql editor</comment> <translation>清除执行历史</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="370"/> + <location filename="../windows/editorwindow.cpp" line="375"/> <source>Export results</source> <comment>sql editor</comment> <translation>导出结果</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="372"/> + <location filename="../windows/editorwindow.cpp" line="377"/> <source>Create view from query</source> <comment>sql editor</comment> <translation>从query中创建视图</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="385"/> + <location filename="../windows/editorwindow.cpp" line="390"/> <source>Previous database</source> <translation>前一个数据库</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="386"/> + <location filename="../windows/editorwindow.cpp" line="391"/> <source>Next database</source> <translation>下一个数据库</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="389"/> + <location filename="../windows/editorwindow.cpp" line="394"/> <source>Show next tab</source> <comment>sql editor</comment> <translation>显示下一个标签</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="390"/> + <location filename="../windows/editorwindow.cpp" line="395"/> <source>Show previous tab</source> <comment>sql editor</comment> <translation>显示上一个标签</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="391"/> + <location filename="../windows/editorwindow.cpp" line="396"/> <source>Focus results below</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="392"/> + <location filename="../windows/editorwindow.cpp" line="397"/> <source>Focus SQL editor above</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="466"/> + <location filename="../windows/editorwindow.cpp" line="398"/> + <source>Delete selected SQL history entries</source> + <comment>sql editor</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/editorwindow.cpp" line="472"/> <source>Active database (%1/%2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="507"/> + <location filename="../windows/editorwindow.cpp" line="574"/> <source>Query finished in %1 second(s). Rows affected: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="511"/> + <location filename="../windows/editorwindow.cpp" line="578"/> <source>Query finished in %1 second(s).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Clear execution history</source> <translation>清除执行历史</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="613"/> + <location filename="../windows/editorwindow.cpp" line="692"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> <translation>确定要删除全部的SQL执行历史吗?删除后不能恢复。</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="625"/> + <location filename="../windows/editorwindow.cpp" line="717"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>未能导出,因为没有导出插件被加载。</translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="646"/> + <location filename="../windows/editorwindow.cpp" line="738"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/editorwindow.cpp" line="676"/> + <location filename="../windows/editorwindow.cpp" line="768"/> <source>Editor window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> @@ -2939,6 +3102,64 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> </context> <context> + <name>ExecFromFileDialog</name> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="14"/> + <source>Execute SQL from file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="23"/> + <source>Input file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="29"/> + <source>Path to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="36"/> + <source>Browse for file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="53"/> + <source>Options</source> + <translation type="unfinished">选项</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="59"/> + <source>File encoding</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.ui" line="69"/> + <source>Skip failing SQL statements</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="49"/> + <source>SQL scripts (*.sql);;All files (*)</source> + <translation type="unfinished">SQL文件 (*.sql);;所有文件 (*)</translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="50"/> + <source>Execute SQL file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="64"/> + <source>Please provide file to be executed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/execfromfiledialog.cpp" line="71"/> + <source>Provided file does not exist or cannot be read.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ExportDialog</name> <message> <location filename="../dialogs/exportdialog.ui" line="14"/> @@ -3087,69 +3308,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>导出格式选项</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="51"/> + <location filename="../dialogs/exportdialog.cpp" line="60"/> <source>Cancel</source> <translation>取消</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="149"/> - <location filename="../dialogs/exportdialog.cpp" line="174"/> - <location filename="../dialogs/exportdialog.cpp" line="197"/> + <location filename="../dialogs/exportdialog.cpp" line="158"/> + <location filename="../dialogs/exportdialog.cpp" line="183"/> + <location filename="../dialogs/exportdialog.cpp" line="206"/> <source>Select database to export.</source> <translation>选择要导出的数据库。</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="150"/> + <location filename="../dialogs/exportdialog.cpp" line="159"/> <source>Select table to export.</source> <translation>选择要导出的表。</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="175"/> + <location filename="../dialogs/exportdialog.cpp" line="184"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="198"/> + <location filename="../dialogs/exportdialog.cpp" line="207"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="221"/> + <location filename="../dialogs/exportdialog.cpp" line="230"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="228"/> + <location filename="../dialogs/exportdialog.cpp" line="237"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="234"/> + <location filename="../dialogs/exportdialog.cpp" line="243"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="240"/> + <location filename="../dialogs/exportdialog.cpp" line="249"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="417"/> + <location filename="../dialogs/exportdialog.cpp" line="429"/> <source>All files (*)</source> <translation type="unfinished">所有文件 (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="420"/> + <location filename="../dialogs/exportdialog.cpp" line="432"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="709"/> + <location filename="../dialogs/exportdialog.cpp" line="771"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> </context> <context> + <name>FileExecErrorsDialog</name> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="14"/> + <source>Execution errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="26"/> + <source>Following errors were encountered during execution of SQL statements from the file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="49"/> + <source>SQL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="54"/> + <source>Error</source> + <translation type="unfinished">错误</translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="68"/> + <source>Statements that were executed successfully were commited.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/fileexecerrorsdialog.ui" line="81"/> + <source>Statements that were executed successfully were rolled back.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FontEdit</name> <message> <location filename="../common/fontedit.cpp" line="61"/> @@ -3169,49 +3423,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>FormView</name> <message> - <location filename="../formview.cpp" line="241"/> + <location filename="../formview.cpp" line="247"/> <source>Commit row</source> <comment>form view</comment> <translation>提交</translation> </message> <message> - <location filename="../formview.cpp" line="242"/> + <location filename="../formview.cpp" line="248"/> <source>Rollback row</source> <comment>form view</comment> <translation>回滚</translation> </message> <message> - <location filename="../formview.cpp" line="243"/> + <location filename="../formview.cpp" line="249"/> <source>First row</source> <comment>form view</comment> <translation>首行</translation> </message> <message> - <location filename="../formview.cpp" line="244"/> + <location filename="../formview.cpp" line="250"/> <source>Previous row</source> <comment>form view</comment> <translation>前一行</translation> </message> <message> - <location filename="../formview.cpp" line="245"/> + <location filename="../formview.cpp" line="251"/> <source>Next row</source> <comment>form view</comment> <translation>下一行</translation> </message> <message> - <location filename="../formview.cpp" line="246"/> + <location filename="../formview.cpp" line="252"/> <source>Last row</source> <comment>form view</comment> <translation>末行</translation> </message> <message> - <location filename="../formview.cpp" line="247"/> + <location filename="../formview.cpp" line="253"/> <source>Insert new row</source> <comment>form view</comment> <translation>新插入行</translation> </message> <message> - <location filename="../formview.cpp" line="248"/> + <location filename="../formview.cpp" line="254"/> <source>Delete current row</source> <comment>form view</comment> <translation>删除当前行</translation> @@ -3270,13 +3524,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>初始化代码:</translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="309"/> + <location filename="../windows/functionseditor.ui" line="313"/> <location filename="../windows/functionseditor.cpp" line="426"/> <source>Function implementation code:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/functionseditor.ui" line="325"/> + <location filename="../windows/functionseditor.ui" line="333"/> <source>Final step implementation code:</source> <translation type="unfinished"></translation> </message> @@ -3440,42 +3694,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>数据源选项</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="72"/> + <location filename="../dialogs/importdialog.cpp" line="114"/> <source>Cancel</source> <translation>取消</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>如果输入的表不存在,则新建该表。</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="103"/> + <location filename="../dialogs/importdialog.cpp" line="145"/> <source>Enter the table name</source> <translation>输入表名</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="121"/> + <location filename="../dialogs/importdialog.cpp" line="163"/> <source>Select import plugin.</source> <translation>选择导入插件。</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="130"/> + <location filename="../dialogs/importdialog.cpp" line="172"/> <source>You must provide a file to import from.</source> <translation>必须提供一个导入文件。</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="137"/> + <location filename="../dialogs/importdialog.cpp" line="179"/> <source>The file '%1' does not exist.</source> <translation>文件“%1”不存在。</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="143"/> + <location filename="../dialogs/importdialog.cpp" line="185"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>你提供的是一个目录。我们需要的是文件。</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="319"/> + <location filename="../dialogs/importdialog.cpp" line="364"/> <source>Pick file to import from</source> <translation>选择要导入的文件</translation> </message> @@ -3514,12 +3768,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished">字段</translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="75"/> + <location filename="../dialogs/indexdialog.ui" line="80"/> <source>Collation</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/indexdialog.ui" line="80"/> + <location filename="../dialogs/indexdialog.ui" line="75"/> <source>Sort</source> <translation>排序</translation> </message> @@ -3698,273 +3952,402 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>查看工具栏</translation> </message> <message> - <location filename="../mainwindow.cpp" line="108"/> + <location filename="../mainwindow.cpp" line="109"/> <source>Configuration widgets</source> <translation>配置部件</translation> </message> <message> - <location filename="../mainwindow.cpp" line="109"/> + <location filename="../mainwindow.cpp" line="110"/> <source>Syntax highlighting engines</source> <translation>语法高亮引擎</translation> </message> <message> - <location filename="../mainwindow.cpp" line="110"/> + <location filename="../mainwindow.cpp" line="111"/> <source>Data editors</source> <translation>数据编辑器</translation> </message> <message> - <location filename="../mainwindow.cpp" line="122"/> + <location filename="../mainwindow.cpp" line="123"/> <source>Running in debug mode. Press %1 or use 'Help / Open debug console' menu entry to open the debug console.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="124"/> + <location filename="../mainwindow.cpp" line="125"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="214"/> + <location filename="../mainwindow.cpp" line="190"/> <source>You need to restart application to make the language change take effect.</source> <translation>更改语言后重启程序生效。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="257"/> <source>Open SQL editor</source> - <translation>打开SQL编辑器</translation> + <translation type="vanished">打开SQL编辑器</translation> </message> <message> - <location filename="../mainwindow.cpp" line="258"/> <source>Open DDL history</source> - <translation>打开数据库定义(DDL)历史</translation> + <translation type="vanished">打开数据库定义(DDL)历史</translation> </message> <message> - <location filename="../mainwindow.cpp" line="259"/> <source>Open SQL functions editor</source> - <translation>打开SQL函数编辑器</translation> - </message> - <message> - <location filename="../mainwindow.cpp" line="260"/> - <source>Open collations editor</source> - <translation type="unfinished"></translation> + <translation type="vanished">打开SQL函数编辑器</translation> </message> <message> - <location filename="../mainwindow.cpp" line="261"/> <source>Import</source> - <translation>导入</translation> + <translation type="vanished">导入</translation> </message> <message> - <location filename="../mainwindow.cpp" line="262"/> <source>Export</source> - <translation>导出</translation> + <translation type="vanished">导出</translation> </message> <message> - <location filename="../mainwindow.cpp" line="264"/> <source>Open configuration dialog</source> - <translation>打开配置对话框</translation> + <translation type="vanished">打开配置对话框</translation> </message> <message> - <location filename="../mainwindow.cpp" line="266"/> <source>Tile windows</source> - <translation>平铺窗口</translation> + <translation type="vanished">平铺窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="267"/> <source>Tile windows horizontally</source> - <translation>水平排列窗口</translation> + <translation type="vanished">水平排列窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="268"/> <source>Tile windows vertically</source> - <translation>垂直排列窗口</translation> + <translation type="vanished">垂直排列窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="269"/> <source>Cascade windows</source> - <translation>层叠窗口</translation> + <translation type="vanished">层叠窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="270"/> + <location filename="../mainwindow.cpp" line="247"/> <source>Next window</source> <translation>下一个窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="271"/> + <location filename="../mainwindow.cpp" line="248"/> <source>Previous window</source> <translation>上一个窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="272"/> + <location filename="../mainwindow.cpp" line="249"/> <source>Hide status field</source> <translation>隐藏状态栏</translation> </message> <message> - <location filename="../mainwindow.cpp" line="274"/> <source>Close selected window</source> - <translation>关闭当前窗口</translation> + <translation type="vanished">关闭当前窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="275"/> <source>Close all windows but selected</source> - <translation>关闭其它窗口</translation> + <translation type="vanished">关闭其它窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="276"/> <source>Close all windows</source> - <translation>关闭全部窗口</translation> + <translation type="vanished">关闭全部窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="277"/> <source>Restore recently closed window</source> - <translation>恢复最近关闭的窗口</translation> + <translation type="vanished">恢复最近关闭的窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="278"/> <source>Rename selected window</source> - <translation>重命名当前窗口</translation> + <translation type="vanished">重命名当前窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="280"/> + <location filename="../mainwindow.cpp" line="257"/> <source>Open Debug Console</source> <translation>打开调试终端</translation> </message> <message> - <location filename="../mainwindow.cpp" line="281"/> + <location filename="../mainwindow.cpp" line="258"/> <source>Open CSS Console</source> <translation>打开CSS控制台</translation> </message> <message> - <location filename="../mainwindow.cpp" line="282"/> <source>Report a bug</source> - <translation>提交Bug</translation> + <translation type="vanished">提交Bug</translation> </message> <message> - <location filename="../mainwindow.cpp" line="283"/> <source>Propose a new feature</source> - <translation>提交新功能建议</translation> + <translation type="vanished">提交新功能建议</translation> </message> <message> - <location filename="../mainwindow.cpp" line="284"/> <source>About</source> - <translation>关于</translation> + <translation type="vanished">关于</translation> </message> <message> - <location filename="../mainwindow.cpp" line="285"/> <source>Licenses</source> - <translation>许可</translation> + <translation type="vanished">许可</translation> </message> <message> - <location filename="../mainwindow.cpp" line="286"/> <source>Open home page</source> - <translation>访问主页</translation> + <translation type="vanished">访问主页</translation> </message> <message> - <location filename="../mainwindow.cpp" line="287"/> <source>Open forum page</source> - <translation>访问论坛</translation> + <translation type="vanished">访问论坛</translation> </message> <message> - <location filename="../mainwindow.cpp" line="288"/> <source>User Manual</source> - <translation>用户手册</translation> + <translation type="vanished">用户手册</translation> </message> <message> - <location filename="../mainwindow.cpp" line="289"/> <source>SQLite documentation</source> - <translation>SQLite文档</translation> + <translation type="vanished">SQLite文档</translation> </message> <message> - <location filename="../mainwindow.cpp" line="290"/> <source>Report history</source> - <translation>报告历史</translation> + <translation type="vanished">报告历史</translation> </message> <message> - <location filename="../mainwindow.cpp" line="292"/> <source>Check for updates</source> - <translation>检查更新</translation> + <translation type="vanished">检查更新</translation> </message> <message> - <location filename="../mainwindow.cpp" line="330"/> <source>Database</source> <comment>menubar</comment> - <translation>数据库</translation> + <translation type="vanished">数据库</translation> </message> <message> - <location filename="../mainwindow.cpp" line="350"/> <source>Structure</source> <comment>menubar</comment> - <translation>结构</translation> + <translation type="vanished">结构</translation> </message> <message> - <location filename="../mainwindow.cpp" line="371"/> <source>View</source> <comment>menubar</comment> - <translation>查看</translation> + <translation type="vanished">查看</translation> </message> <message> - <location filename="../mainwindow.cpp" line="375"/> + <location filename="../mainwindow.cpp" line="352"/> <source>Window list</source> <comment>menubar view menu</comment> <translation>窗口列表</translation> </message> <message> - <location filename="../mainwindow.cpp" line="396"/> <source>Tools</source> <comment>menubar</comment> - <translation>工具</translation> + <translation type="vanished">工具</translation> </message> <message> - <location filename="../mainwindow.cpp" line="410"/> <source>Help</source> - <translation>帮助</translation> + <translation type="vanished">帮助</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="233"/> + <source>Open SQL &editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="234"/> + <source>Open DDL &history</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="235"/> + <source>Open SQL &functions editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="236"/> + <source>Open &collations editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="237"/> + <source>Open ex&tension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="238"/> + <source>&Import</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="239"/> + <source>E&xport</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="241"/> + <source>Open confi&guration dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="243"/> + <source>&Tile windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="244"/> + <source>Tile windows &horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="245"/> + <source>Tile windows &vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="246"/> + <source>&Cascade windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="251"/> + <source>Close selected &window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="252"/> + <source>Close all windows &but selected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="253"/> + <source>Close &all windows</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="254"/> + <source>Re&store recently closed window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="255"/> + <source>&Rename selected window</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="572"/> + <location filename="../mainwindow.cpp" line="259"/> + <source>Report a &bug</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="260"/> + <source>Propose a new &feature</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="261"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="262"/> + <source>&Licenses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="263"/> + <source>Open home &page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="264"/> + <source>Open fo&rum page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="265"/> + <source>User &Manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="266"/> + <source>SQLite &documentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="267"/> + <source>Bugs and feature &requests</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="269"/> + <source>Check for &updates</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="307"/> + <source>&Database</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="327"/> + <source>&Structure</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="348"/> + <source>&View</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="373"/> + <source>&Tools</source> + <comment>menubar</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="388"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="550"/> <source>Could not set style: %1</source> <comment>main window</comment> <translation>未能设置风格:%1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="669"/> + <location filename="../mainwindow.cpp" line="652"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>未能导出,因为没有导出插件被加载。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="685"/> + <location filename="../mainwindow.cpp" line="668"/> <source>Cannot import, because no import plugin is loaded.</source> <translation>未能导入,因为没有导入插件被加载。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Rename window</source> <translation>重命名窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="718"/> + <location filename="../mainwindow.cpp" line="701"/> <source>Enter new name for the window:</source> <translation>窗口的新名称:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="804"/> + <location filename="../mainwindow.cpp" line="784"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>有新更新 <a href="%1">点此查看更新详情</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="812"/> + <location filename="../mainwindow.cpp" line="792"/> <source>You're running the most recent version. No updates are available.</source> <translation>您使用的是最新版,不需要更新。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="929"/> + <location filename="../mainwindow.cpp" line="905"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="936"/> + <location filename="../mainwindow.cpp" line="912"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="941"/> + <location filename="../mainwindow.cpp" line="917"/> <source>Could not add database %1 to list.</source> <translation>未能将数据%1添加到列表</translation> </message> @@ -4000,23 +4383,28 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Null 值</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="77"/> + <location filename="../multieditor/multieditor.cpp" line="81"/> <source>Configure editors for this data type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="287"/> + <location filename="../multieditor/multieditor.cpp" line="94"/> + <source>Open another tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../multieditor/multieditor.cpp" line="333"/> <source>Data editor plugin '%1' not loaded, while it is defined for editing '%1' data type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="372"/> + <location filename="../multieditor/multieditor.cpp" line="426"/> <source>Deleted</source> <comment>multieditor</comment> <translation>已删除</translation> </message> <message> - <location filename="../multieditor/multieditor.cpp" line="374"/> + <location filename="../multieditor/multieditor.cpp" line="428"/> <source>Read only</source> <comment>multieditor</comment> <translation>只读</translation> @@ -4025,93 +4413,143 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MultiEditorBool</name> <message> - <location filename="../multieditor/multieditorbool.cpp" line="130"/> <source>Boolean</source> - <translation>布尔</translation> + <translation type="vanished">布尔</translation> + </message> +</context> +<context> + <name>MultiEditorBoolPlugin</name> + <message> + <location filename="../multieditor/multieditorbool.cpp" line="214"/> + <source>Boolean</source> + <translation type="unfinished">布尔</translation> </message> </context> <context> <name>MultiEditorDate</name> <message> - <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation>日期</translation> + <translation type="vanished">日期</translation> + </message> +</context> +<context> + <name>MultiEditorDatePlugin</name> + <message> + <location filename="../multieditor/multieditordate.cpp" line="86"/> + <source>Date</source> + <translation type="unfinished">日期</translation> </message> </context> <context> <name>MultiEditorDateTime</name> <message> - <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation>日期和时间</translation> + <translation type="vanished">日期和时间</translation> + </message> +</context> +<context> + <name>MultiEditorDateTimePlugin</name> + <message> + <location filename="../multieditor/multieditordatetime.cpp" line="274"/> + <source>Date & time</source> + <translation type="unfinished">日期和时间</translation> </message> </context> <context> <name>MultiEditorHex</name> <message> - <location filename="../multieditor/multieditorhex.cpp" line="39"/> <source>Hex</source> - <translation>十六进制</translation> + <translation type="vanished">十六进制</translation> + </message> +</context> +<context> + <name>MultiEditorHexPlugin</name> + <message> + <location filename="../multieditor/multieditorhex.cpp" line="91"/> + <source>Hex</source> + <translation type="unfinished">十六进制</translation> </message> </context> <context> <name>MultiEditorNumeric</name> <message> - <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation>数值</translation> + <translation type="vanished">数值</translation> + </message> +</context> +<context> + <name>MultiEditorNumericPlugin</name> + <message> + <location filename="../multieditor/multieditornumeric.cpp" line="109"/> + <source>Number</source> + <comment>numeric multi editor tab name</comment> + <translation type="unfinished">数值</translation> </message> </context> <context> <name>MultiEditorText</name> <message> - <location filename="../multieditor/multieditortext.cpp" line="45"/> <source>Text</source> - <translation>文本</translation> + <translation type="vanished">文本</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="106"/> + <location filename="../multieditor/multieditortext.cpp" line="102"/> <source>Tab changes focus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="107"/> + <location filename="../multieditor/multieditortext.cpp" line="103"/> <source>Cut</source> <translation>剪切</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="108"/> + <location filename="../multieditor/multieditortext.cpp" line="104"/> <source>Copy</source> <translation>复制</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="109"/> + <location filename="../multieditor/multieditortext.cpp" line="105"/> <source>Paste</source> <translation>粘贴</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="110"/> + <location filename="../multieditor/multieditortext.cpp" line="106"/> <source>Delete</source> <translation>删除</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="111"/> + <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Undo</source> <translation>撤销</translation> </message> <message> - <location filename="../multieditor/multieditortext.cpp" line="112"/> + <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Redo</source> <translation>恢复</translation> </message> </context> <context> + <name>MultiEditorTextPlugin</name> + <message> + <location filename="../multieditor/multieditortext.cpp" line="184"/> + <source>Text</source> + <translation type="unfinished">文本</translation> + </message> +</context> +<context> <name>MultiEditorTime</name> <message> - <location filename="../multieditor/multieditortime.cpp" line="16"/> <source>Time</source> - <translation>时间</translation> + <translation type="vanished">时间</translation> + </message> +</context> +<context> + <name>MultiEditorTimePlugin</name> + <message> + <location filename="../multieditor/multieditortime.cpp" line="89"/> + <source>Time</source> + <translation type="unfinished">时间</translation> </message> </context> <context> @@ -4186,37 +4624,40 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>组件</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="75"/> + <location filename="../dialogs/newversiondialog.ui" line="109"/> + <source>This application will be closed and the update installer will start to download and install all the updates.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Current version</source> - <translation>当年版本</translation> + <translation type="vanished">当年版本</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="80"/> + <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Update version</source> <translation>可更新版本</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="91"/> + <location filename="../dialogs/newversiondialog.ui" line="86"/> <source>Check for updates on startup</source> <translation>在启动时检查更新</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="101"/> + <location filename="../dialogs/newversiondialog.ui" line="96"/> <source>Update to new version!</source> <translation>更新到新版本!</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation>本次更新将会自动下载和安装。在更新后会重启程序。</translation> + <translation type="vanished">本次更新将会自动下载和安装。在更新后会重启程序。</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="121"/> + <location filename="../dialogs/newversiondialog.ui" line="116"/> <source>Not now.</source> <translation>现在不更新。</translation> </message> <message> - <location filename="../dialogs/newversiondialog.ui" line="134"/> + <location filename="../dialogs/newversiondialog.ui" line="129"/> <source>Don't install the update and close this window.</source> <translation>不安装更新并关闭本窗口。</translation> </message> @@ -4268,32 +4709,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>填充</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="54"/> + <location filename="../dialogs/populatedialog.cpp" line="57"/> <source>Abort</source> <translation>中止</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="161"/> + <location filename="../dialogs/populatedialog.cpp" line="192"/> <source>Configure</source> <translation>配置</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="259"/> + <location filename="../dialogs/populatedialog.cpp" line="299"/> <source>Populating configuration for this column is invalid or incomplete.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="290"/> + <location filename="../dialogs/populatedialog.cpp" line="330"/> <source>Select database with table to populate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="291"/> + <location filename="../dialogs/populatedialog.cpp" line="331"/> <source>Select table to populate</source> <translation>选择要填充的表</translation> </message> <message> - <location filename="../dialogs/populatedialog.cpp" line="292"/> + <location filename="../dialogs/populatedialog.cpp" line="332"/> <source>You have to select at least one column.</source> <translation>您至少得选择一个字段。</translation> </message> @@ -4368,129 +4809,134 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="20"/> + <location filename="../datagrid/sqlqueryview.h" line="21"/> <source>Data grid view</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="21"/> + <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Copy cell(s) contents to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="23"/> - <source>Paste cell(s) contents from clipboard</source> + <source>Copy cell(s) contents together with header to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="25"/> + <source>Paste cell(s) contents from clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Set empty value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="26"/> + <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Set NULL value to selected cell(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="27"/> + <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Commit changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="28"/> + <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Rollback changes to cell(s) contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="29"/> + <location filename="../datagrid/sqlqueryview.h" line="31"/> <source>Delete selected data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="30"/> + <location filename="../datagrid/sqlqueryview.h" line="32"/> <source>Insert new data row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.h" line="31"/> + <location filename="../datagrid/sqlqueryview.h" line="33"/> <source>Open contents of selected cell in a separate editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="590"/> + <location filename="../dataview.cpp" line="633"/> <source>Total pages available: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.cpp" line="600"/> + <location filename="../dataview.cpp" line="643"/> <source>Total rows loaded: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="19"/> + <location filename="../dataview.h" line="21"/> <source>Data view (both grid and form)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="20"/> + <location filename="../dataview.h" line="22"/> <source>Refresh data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="21"/> + <location filename="../dataview.h" line="23"/> <source>Switch to grid view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dataview.h" line="22"/> + <location filename="../dataview.h" line="24"/> <source>Switch to form view of the data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="27"/> + <location filename="../dbtree/dbtree.h" line="28"/> <source>Database list</source> <translation type="unfinished">数据库列表</translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="28"/> + <location filename="../dbtree/dbtree.h" line="29"/> <source>Delete selected item</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="29"/> + <location filename="../dbtree/dbtree.h" line="30"/> <source>Clear filter contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="30"/> + <location filename="../dbtree/dbtree.h" line="31"/> <source>Refresh schema</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="31"/> + <location filename="../dbtree/dbtree.h" line="32"/> <source>Refresh all schemas</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="32"/> + <location filename="../dbtree/dbtree.h" line="33"/> <source>Add database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="33"/> + <location filename="../dbtree/dbtree.h" line="34"/> <source>Select all items</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="34"/> + <location filename="../dbtree/dbtree.h" line="35"/> <source>Copy selected item(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtree.h" line="35"/> + <location filename="../dbtree/dbtree.h" line="36"/> <location filename="../multieditor/multieditortext.h" line="15"/> - <location filename="../sqleditor.h" line="25"/> + <location filename="../sqleditor.h" line="31"/> <source>Paste from clipboard</source> <translation type="unfinished"></translation> </message> @@ -4565,42 +5011,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished">删除当前行</translation> </message> <message> - <location filename="../mainwindow.h" line="43"/> + <location filename="../mainwindow.h" line="44"/> <source>Main window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="44"/> + <location filename="../mainwindow.h" line="45"/> <source>Open SQL editor</source> <translation type="unfinished">打开SQL编辑器</translation> </message> <message> - <location filename="../mainwindow.h" line="45"/> + <location filename="../mainwindow.h" line="46"/> <source>Previous window</source> <translation type="unfinished">上一个窗口</translation> </message> <message> - <location filename="../mainwindow.h" line="46"/> + <location filename="../mainwindow.h" line="47"/> <source>Next window</source> <translation type="unfinished">下一个窗口</translation> </message> <message> - <location filename="../mainwindow.h" line="47"/> + <location filename="../mainwindow.h" line="48"/> <source>Hide status area</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.h" line="48"/> + <location filename="../mainwindow.h" line="49"/> <source>Open configuration dialog</source> <translation type="unfinished">打开配置对话框</translation> </message> <message> - <location filename="../mainwindow.h" line="49"/> + <location filename="../mainwindow.h" line="50"/> <source>Open Debug Console</source> <translation type="unfinished">打开调试终端</translation> </message> <message> - <location filename="../mainwindow.h" line="50"/> + <location filename="../mainwindow.h" line="51"/> <source>Open CSS Console</source> <translation type="unfinished">打开CSS控制台</translation> </message> @@ -4611,111 +5057,111 @@ Please enter new, unique name, or press '%1' to abort the operation:</ </message> <message> <location filename="../multieditor/multieditortext.h" line="13"/> - <location filename="../sqleditor.h" line="23"/> + <location filename="../sqleditor.h" line="29"/> <source>Cut selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> - <location filename="../sqleditor.h" line="24"/> + <location filename="../sqleditor.h" line="30"/> <source>Copy selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> - <location filename="../sqleditor.h" line="26"/> + <location filename="../sqleditor.h" line="32"/> <source>Delete selected text</source> <translation type="unfinished"></translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> - <location filename="../sqleditor.h" line="28"/> + <location filename="../sqleditor.h" line="34"/> <source>Undo</source> <translation type="unfinished">撤销</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> - <location filename="../sqleditor.h" line="29"/> + <location filename="../sqleditor.h" line="35"/> <source>Redo</source> <translation type="unfinished">恢复</translation> </message> <message> - <location filename="../sqleditor.h" line="22"/> + <location filename="../sqleditor.h" line="28"/> <source>SQL editor input field</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="27"/> + <location filename="../sqleditor.h" line="33"/> <source>Select whole editor contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="30"/> + <location filename="../sqleditor.h" line="36"/> <source>Save contents into a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="31"/> + <location filename="../sqleditor.h" line="37"/> <source>Load contents from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="32"/> + <location filename="../sqleditor.h" line="38"/> <source>Find in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="33"/> + <location filename="../sqleditor.h" line="39"/> <source>Find next</source> <translation type="unfinished">查找下一个</translation> </message> <message> - <location filename="../sqleditor.h" line="34"/> + <location filename="../sqleditor.h" line="40"/> <source>Find previous</source> <translation type="unfinished">查找上一个</translation> </message> <message> - <location filename="../sqleditor.h" line="35"/> + <location filename="../sqleditor.h" line="41"/> <source>Replace in text</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="36"/> + <location filename="../sqleditor.h" line="42"/> <source>Delete current line</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="37"/> + <location filename="../sqleditor.h" line="43"/> <source>Request code assistant</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="38"/> + <location filename="../sqleditor.h" line="44"/> <source>Format contents</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="39"/> + <location filename="../sqleditor.h" line="45"/> <source>Move selected block of text one line down</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="40"/> + <location filename="../sqleditor.h" line="46"/> <source>Move selected block of text one line up</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="41"/> + <location filename="../sqleditor.h" line="47"/> <source>Copy selected block of text and paste it a line below</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="42"/> + <location filename="../sqleditor.h" line="48"/> <source>Copy selected block of text and paste it a line above</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.h" line="43"/> + <location filename="../sqleditor.h" line="49"/> <source>Toggle comment</source> <translation type="unfinished"></translation> </message> @@ -4736,14 +5182,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/bugreporthistorywindow.h" line="11"/> - <source>Reports history window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation type="unfinished">删除选中项</translation> + <translation type="obsolete">删除选中项</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4791,6 +5231,11 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> + <location filename="../windows/editorwindow.h" line="35"/> + <source>Delete selected SQL history entries</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Table window</source> <translation type="unfinished"></translation> @@ -5012,179 +5457,179 @@ find next</source> <context> <name>SqlEditor</name> <message> - <location filename="../sqleditor.cpp" line="122"/> + <location filename="../sqleditor.cpp" line="123"/> <source>Cut</source> <comment>sql editor</comment> <translation>剪切</translation> </message> <message> - <location filename="../sqleditor.cpp" line="123"/> + <location filename="../sqleditor.cpp" line="124"/> <source>Copy</source> <comment>sql editor</comment> <translation>复制</translation> </message> <message> - <location filename="../sqleditor.cpp" line="124"/> + <location filename="../sqleditor.cpp" line="125"/> <source>Paste</source> <comment>sql editor</comment> <translation>粘贴</translation> </message> <message> - <location filename="../sqleditor.cpp" line="125"/> + <location filename="../sqleditor.cpp" line="126"/> <source>Delete</source> <comment>sql editor</comment> <translation>删除</translation> </message> <message> - <location filename="../sqleditor.cpp" line="126"/> + <location filename="../sqleditor.cpp" line="127"/> <source>Select all</source> <comment>sql editor</comment> <translation>全选</translation> </message> <message> - <location filename="../sqleditor.cpp" line="127"/> + <location filename="../sqleditor.cpp" line="128"/> <source>Undo</source> <comment>sql editor</comment> <translation>撤销</translation> </message> <message> - <location filename="../sqleditor.cpp" line="128"/> + <location filename="../sqleditor.cpp" line="129"/> <source>Redo</source> <comment>sql editor</comment> <translation>恢复</translation> </message> <message> - <location filename="../sqleditor.cpp" line="129"/> + <location filename="../sqleditor.cpp" line="130"/> <source>Complete</source> <comment>sql editor</comment> <translation>完成</translation> </message> <message> - <location filename="../sqleditor.cpp" line="130"/> + <location filename="../sqleditor.cpp" line="131"/> <source>Format SQL</source> <comment>sql editor</comment> <translation>格式化SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="131"/> + <location filename="../sqleditor.cpp" line="132"/> <source>Save SQL to file</source> <comment>sql editor</comment> <translation>保存SQL到文件</translation> </message> <message> - <location filename="../sqleditor.cpp" line="132"/> + <location filename="../sqleditor.cpp" line="133"/> <source>Select file to save SQL</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="133"/> + <location filename="../sqleditor.cpp" line="134"/> <source>Load SQL from file</source> <comment>sql editor</comment> <translation>从文件加载SQL</translation> </message> <message> - <location filename="../sqleditor.cpp" line="134"/> + <location filename="../sqleditor.cpp" line="135"/> <source>Delete line</source> <comment>sql editor</comment> <translation>删除行</translation> </message> <message> - <location filename="../sqleditor.cpp" line="135"/> + <location filename="../sqleditor.cpp" line="136"/> <source>Move block down</source> <comment>sql editor</comment> <translation>整块下移</translation> </message> <message> - <location filename="../sqleditor.cpp" line="136"/> + <location filename="../sqleditor.cpp" line="137"/> <source>Move block up</source> <comment>sql editor</comment> <translation>整块上移</translation> </message> <message> - <location filename="../sqleditor.cpp" line="137"/> + <location filename="../sqleditor.cpp" line="138"/> <source>Copy block down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="138"/> + <location filename="../sqleditor.cpp" line="139"/> <source>Copy up down</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="139"/> + <location filename="../sqleditor.cpp" line="140"/> <source>Find</source> <comment>sql editor</comment> <translation>查找</translation> </message> <message> - <location filename="../sqleditor.cpp" line="140"/> + <location filename="../sqleditor.cpp" line="141"/> <source>Find next</source> <comment>sql editor</comment> <translation>查找下一个</translation> </message> <message> - <location filename="../sqleditor.cpp" line="141"/> + <location filename="../sqleditor.cpp" line="142"/> <source>Find previous</source> <comment>sql editor</comment> <translation>查找上一个</translation> </message> <message> - <location filename="../sqleditor.cpp" line="142"/> + <location filename="../sqleditor.cpp" line="143"/> <source>Replace</source> <comment>sql editor</comment> <translation>替换</translation> </message> <message> - <location filename="../sqleditor.cpp" line="143"/> + <location filename="../sqleditor.cpp" line="144"/> <source>Toggle comment</source> <comment>sql editor</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="258"/> + <location filename="../sqleditor.cpp" line="259"/> <source>Saved SQL contents to file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="452"/> + <location filename="../sqleditor.cpp" line="453"/> <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="840"/> + <location filename="../sqleditor.cpp" line="1053"/> <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1078"/> + <location filename="../sqleditor.cpp" line="1085"/> <source>Save to file</source> <translation>保存到文件</translation> </message> <message> - <location filename="../sqleditor.cpp" line="248"/> + <location filename="../sqleditor.cpp" line="249"/> <source>Could not open file '%1' for writing: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1090"/> + <location filename="../sqleditor.cpp" line="1097"/> <source>SQL scripts (*.sql);;All files (*)</source> <translation type="unfinished">SQL文件 (*.sql);;所有文件 (*)</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1091"/> + <location filename="../sqleditor.cpp" line="1098"/> <source>Open file</source> <translation>打开文件</translation> </message> <message> - <location filename="../sqleditor.cpp" line="1100"/> + <location filename="../sqleditor.cpp" line="1108"/> <source>Could not open file '%1' for reading: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../sqleditor.cpp" line="1309"/> + <location filename="../sqleditor.cpp" line="1313"/> <source>Reached the end of document. Hit the find again to restart the search.</source> <translation>已搜索到文档底部。点击查找从头程序开始搜索。</translation> </message> @@ -5232,24 +5677,24 @@ find next</source> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="53"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="59"/> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="341"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="356"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Cannot edit this cell. Details: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="65"/> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="361"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="376"/> <source>Structure of this table has changed since last data was loaded. Reload the data to proceed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="204"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="220"/> <source>Editing a huge contents in an inline cell editor is not a good idea. It can become slow and inconvenient. It's better to edit such big contents in a Form View, or in popup editor (available under rick-click menu).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="353"/> + <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="368"/> <source>Foreign key for column %2 has more than %1 possible values. It's too much to display in drop down list. You need to edit value manually.</source> <translation type="unfinished"></translation> </message> @@ -5257,69 +5702,74 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="75"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="85"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="494"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="356"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="376"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="364"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="384"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="435"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="455"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="630"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="650"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="108"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="118"/> <source>Uncommitted data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="109"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="119"/> <source>There are uncommitted data changes. Do you want to proceed anyway? All uncommitted changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="410"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="430"/> <source>An error occurred while committing the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="656"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="676"/> <source>An error occurred while committing the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1135"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1192"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="987"/> + <source>Number of rows per page was decreased to %1 due to number of columns (%2) in the data view.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlquerymodel.cpp" line="1165"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1222"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1189"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1219"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Insert multiple rows</source> <translation type="unfinished">插入多行</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1598"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1671"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -5327,117 +5777,137 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="56"/> + <location filename="../datagrid/sqlqueryview.cpp" line="57"/> <source>Go to referenced row in...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="89"/> <source>Copy</source> <translation>复制</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="91"/> <source>Copy as...</source> <translation>复制为...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="92"/> <source>Paste</source> <translation>粘贴</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="93"/> <source>Paste as...</source> <translation>粘贴为...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="94"/> <source>Set NULL values</source> <translation>设置为NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="95"/> <source>Erase values</source> <translation>擦除</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="85"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="86"/> + <location filename="../datagrid/sqlqueryview.cpp" line="97"/> <source>Commit</source> <translation>提交</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="87"/> + <location filename="../datagrid/sqlqueryview.cpp" line="90"/> + <source>Copy with headers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="98"/> <source>Rollback</source> <translation>回滚</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="88"/> + <location filename="../datagrid/sqlqueryview.cpp" line="99"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="89"/> + <location filename="../datagrid/sqlqueryview.cpp" line="100"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="94"/> + <location filename="../datagrid/sqlqueryview.cpp" line="105"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="95"/> + <location filename="../datagrid/sqlqueryview.cpp" line="106"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="96"/> + <location filename="../datagrid/sqlqueryview.cpp" line="107"/> <source>Insert row</source> <translation>插入行</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="97"/> + <location filename="../datagrid/sqlqueryview.cpp" line="108"/> <source>Insert multiple rows</source> <translation>插入多行</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="98"/> + <location filename="../datagrid/sqlqueryview.cpp" line="109"/> <source>Delete selected row</source> <translation>删除已选行</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="156"/> + <location filename="../datagrid/sqlqueryview.cpp" line="163"/> + <source>Show value in a viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="181"/> <source>Generate query for selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="313"/> + <location filename="../datagrid/sqlqueryview.cpp" line="339"/> <source>No items selected to paste clipboard contents to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="371"/> + <location filename="../datagrid/sqlqueryview.cpp" line="405"/> <source>Go to referenced row in table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="383"/> + <location filename="../datagrid/sqlqueryview.cpp" line="417"/> <source>table '%1'</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="407"/> + <location filename="../datagrid/sqlqueryview.cpp" line="441"/> <source>Referenced row (%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="672"/> + <location filename="../datagrid/sqlqueryview.cpp" line="680"/> + <source>Trim pasted text?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="681"/> + <source>The pasted text contains leading or trailing white space. Trim it automatically?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="776"/> <source>Edit value</source> <translation>编辑值</translation> </message> @@ -5460,6 +5930,119 @@ find next</source> </message> </context> <context> + <name>SqliteExtensionEditor</name> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="63"/> + <source>Filter extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="107"/> + <source>Leave empty to use default function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="128"/> + <source>Extension file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="135"/> + <source>Initialization function</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="151"/> + <source>Databases</source> + <translation type="unfinished">数据库</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="157"/> + <source>Register in all databases</source> + <translation type="unfinished">在所有数据库中注册</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.ui" line="164"/> + <source>Register in following databases:</source> + <translation type="unfinished">在下列数据库中注册:</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="43"/> + <source>Extension manager window has uncommitted modifications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="64"/> + <source>Extension manager</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="69"/> + <source>Commit all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="70"/> + <source>Rollback all extension changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="72"/> + <source>Add new extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="73"/> + <source>Remove selected extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="75"/> + <source>Editing extensions manual</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="235"/> + <source>File with given path does not exist or is not readable.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="241"/> + <source>Unable to load extension: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="355"/> + <source>Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="424"/> + <source>Dynamic link libraries (*.dll);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="426"/> + <source>Shared objects (*.so);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="428"/> + <source>Dynamic libraries (*.dylib);;All files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="430"/> + <source>All files (*)</source> + <translation type="unfinished">所有文件 (*)</translation> + </message> + <message> + <location filename="../windows/sqliteextensioneditor.cpp" line="432"/> + <source>Open file</source> + <translation type="unfinished">打开文件</translation> + </message> +</context> +<context> <name>StatusField</name> <message> <location filename="../statusfield.ui" line="14"/> @@ -5567,7 +6150,7 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> + <location filename="../constraints/tableforeignkeypanel.cpp" line="210"/> <source>Foreign column</source> <comment>table constraints</comment> <translation type="unfinished"></translation> @@ -5621,24 +6204,24 @@ but it's okay to use them anyway.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="87"/> <source>Collate</source> <comment>table constraints</comment> <translation type="unfinished">排序规则</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="94"/> <source>Sort order</source> <comment>table constraints</comment> <translation type="unfinished">排序</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Select at least one column.</source> <translation>至少选择一列。</translation> </message> <message> - <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> + <location filename="../constraints/tablepkanduniquepanel.cpp" line="171"/> <source>Enter a name of the constraint.</source> <translation type="unfinished"></translation> </message> @@ -6197,7 +6780,7 @@ Are you sure you want to create a table with blank name?</source> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> - <location filename="../dialogs/triggerdialog.ui" line="124"/> + <location filename="../dialogs/triggerdialog.ui" line="127"/> <source><p>SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.</p></source> <translation type="unfinished"></translation> </message> @@ -6242,7 +6825,7 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.ui" line="132"/> + <location filename="../dialogs/triggerdialog.ui" line="138"/> <source>DDL</source> <translation type="unfinished">DDL</translation> </message> @@ -6320,18 +6903,18 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="156"/> - <location filename="../windows/viewwindow.cpp" line="837"/> + <location filename="../windows/viewwindow.ui" line="160"/> + <location filename="../windows/viewwindow.cpp" line="845"/> <source>Data</source> <translation>数据</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="166"/> + <location filename="../windows/viewwindow.ui" line="170"/> <source>Triggers</source> <translation>触发器</translation> </message> <message> - <location filename="../windows/viewwindow.ui" line="198"/> + <location filename="../windows/viewwindow.ui" line="202"/> <source>DDL</source> <translation type="unfinished">DDL</translation> </message> @@ -6363,125 +6946,125 @@ Are you sure you want to create a table with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="313"/> + <location filename="../windows/viewwindow.cpp" line="320"/> <source>Refresh the view</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="315"/> + <location filename="../windows/viewwindow.cpp" line="322"/> <source>Commit the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="316"/> + <location filename="../windows/viewwindow.cpp" line="323"/> <source>Rollback the view changes</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="320"/> + <location filename="../windows/viewwindow.cpp" line="327"/> <source>Explicit column names</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="326"/> + <location filename="../windows/viewwindow.cpp" line="333"/> <source>Generate output column names automatically basing on result columns of the view.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="327"/> + <location filename="../windows/viewwindow.cpp" line="334"/> <source>Add column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="328"/> + <location filename="../windows/viewwindow.cpp" line="335"/> <source>Edit column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="329"/> + <location filename="../windows/viewwindow.cpp" line="336"/> <source>Delete column</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="330"/> + <location filename="../windows/viewwindow.cpp" line="337"/> <source>Move column up</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="331"/> + <location filename="../windows/viewwindow.cpp" line="338"/> <source>Move column down</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="336"/> + <location filename="../windows/viewwindow.cpp" line="343"/> <source>Refresh trigger list</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="338"/> + <location filename="../windows/viewwindow.cpp" line="345"/> <source>Create new trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="339"/> + <location filename="../windows/viewwindow.cpp" line="346"/> <source>Edit selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="340"/> + <location filename="../windows/viewwindow.cpp" line="347"/> <source>Delete selected trigger</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="361"/> + <location filename="../windows/viewwindow.cpp" line="368"/> <source>View window "%1" has uncommitted structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="363"/> + <location filename="../windows/viewwindow.cpp" line="370"/> <source>View window "%1" has uncommitted data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="365"/> + <location filename="../windows/viewwindow.cpp" line="372"/> <source>View window "%1" has uncommitted structure modifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="574"/> + <location filename="../windows/viewwindow.cpp" line="581"/> <source>Uncommitted changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="575"/> + <location filename="../windows/viewwindow.cpp" line="582"/> <source>There are uncommitted structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="629"/> + <location filename="../windows/viewwindow.cpp" line="637"/> <source>Committed changes for view '%1' successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="631"/> + <location filename="../windows/viewwindow.cpp" line="639"/> <source>Committed changes for view '%1' (named before '%2') successfully.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="562"/> + <location filename="../windows/viewwindow.cpp" line="569"/> <source>Could not load data for view %1. Error details: %2</source> <translation type="unfinished"></translation> </message> @@ -6490,101 +7073,101 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="obsolete">未提交的更改</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Go back to structure tab</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="578"/> + <location filename="../windows/viewwindow.cpp" line="585"/> <source>Commit modifications and browse data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="642"/> + <location filename="../windows/viewwindow.cpp" line="650"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Override columns</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="784"/> + <location filename="../windows/viewwindow.cpp" line="792"/> <source>Currently defined columns will be overriden. Do you want to continue?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="807"/> + <location filename="../windows/viewwindow.cpp" line="815"/> <source>Could not determinate columns returned from the view. The query is problably incomplete or contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="868"/> + <location filename="../windows/viewwindow.cpp" line="876"/> <source>Name</source> <comment>view window triggers</comment> <translation type="unfinished">名称</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="869"/> + <location filename="../windows/viewwindow.cpp" line="877"/> <source>Instead of</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="870"/> + <location filename="../windows/viewwindow.cpp" line="878"/> <source>Condition</source> <comment>view window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="871"/> + <location filename="../windows/viewwindow.cpp" line="879"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished">详情</translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="911"/> + <location filename="../windows/viewwindow.cpp" line="919"/> <source>Could not process the %1 view correctly. Unable to open a view window.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>Empty name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="958"/> + <location filename="../windows/viewwindow.cpp" line="966"/> <source>A blank name for the view is allowed in SQLite, but it is not recommended. Are you sure you want to create a view with blank name?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="970"/> + <location filename="../windows/viewwindow.cpp" line="978"/> <source>The SELECT statement could not be parsed. Please correct the query and retry. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="978"/> + <location filename="../windows/viewwindow.cpp" line="986"/> <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1004"/> + <location filename="../windows/viewwindow.cpp" line="1012"/> <source>The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1017"/> + <location filename="../windows/viewwindow.cpp" line="1025"/> <source>Following problems will take place while modifying the view. Would you like to proceed?</source> <comment>view window</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/viewwindow.cpp" line="1019"/> + <location filename="../windows/viewwindow.cpp" line="1027"/> <source>View modification</source> <comment>view window</comment> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp index 6448259..9473ab5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp @@ -40,9 +40,9 @@ void uiMessageHandler(QtMsgType type, const QMessageLogContext &context, const Q case QtFatalMsg: msgHandlerThreadProxy->fatal(fatMsg.arg(time, msg)); abort(); -#if QT_VERSION >= 0x050300 +#if QT_VERSION >= 0x050500 case QtInfoMsg: - msgHandlerThreadProxy->fatal(fatMsg.arg(time, msg)); + msgHandlerThreadProxy->debug(fatMsg.arg(time, msg)); break; #endif } diff --git a/SQLiteStudio3/guiSQLiteStudio/uiutils.h b/SQLiteStudio3/guiSQLiteStudio/uiutils.h index 01652b7..455d97c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uiutils.h +++ b/SQLiteStudio3/guiSQLiteStudio/uiutils.h @@ -20,4 +20,6 @@ GUI_API_EXPORT QPixmap addOpacity(const QPixmap& input, float opacity); GUI_API_EXPORT void limitDialogWidth(QDialog* dialog); GUI_API_EXPORT void fixTextCursorSelectedText(QString& text); +#define UI_PROP_COLUMN "column_name" + #endif // UIUTILS_H diff --git a/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp index 4602050..180eb16 100644 --- a/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.cpp @@ -135,3 +135,8 @@ void WidgetResizer::setWidgetMinimumSize(int width, int height) { widgetMinimumSize = QSize(width, height); } + +void WidgetResizer::minimizeHeight() +{ + widget->setFixedHeight(widgetMinimumSize.height()); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/widgetresizer.h b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.h index 29e380b..40d1502 100644 --- a/SQLiteStudio3/guiSQLiteStudio/widgetresizer.h +++ b/SQLiteStudio3/guiSQLiteStudio/widgetresizer.h @@ -24,6 +24,7 @@ class GUI_API_EXPORT WidgetResizer : public QWidget QSize getWidgetMinimumSize() const; void setWidgetMinimumSize(const QSize& value); void setWidgetMinimumSize(int width, int height); + void minimizeHeight(); protected: void mouseMoveEvent(QMouseEvent* event); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp deleted file mode 100644 index 7632c8f..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "bugreporthistorywindow.h" -#include "ui_bugreporthistorywindow.h" -#include "common/unused.h" -#include "services/config.h" -#include <QDebug> -#include <QLabel> - -CFG_KEYS_DEFINE(BugReportHistoryWindow) - -BugReportHistoryWindow::BugReportHistoryWindow(QWidget *parent) : - MdiChild(parent), - ui(new Ui::BugReportHistoryWindow) -{ - init(); -} - -BugReportHistoryWindow::~BugReportHistoryWindow() -{ - delete ui; -} - -bool BugReportHistoryWindow::restoreSessionNextTime() -{ - return false; -} - -QVariant BugReportHistoryWindow::saveSession() -{ - return QVariant(); -} - -bool BugReportHistoryWindow::restoreSession(const QVariant& sessionValue) -{ - UNUSED(sessionValue); - return false; -} - -Icon* BugReportHistoryWindow::getIconNameForMdiWindow() -{ - return ICONS.BUG_LIST; -} - -QString BugReportHistoryWindow::getTitleForMdiWindow() -{ - return tr("Reports history"); -} - -void BugReportHistoryWindow::createActions() -{ - createAction(CLEAR_HISTORY, ICONS.CLEAR_HISTORY, tr("Clear reports history"), this, SLOT(clearHistory()), ui->toolBar); - createAction(DELETE_SELECTED, ICONS.DELETE_ROW, tr("Delete selected entry"), this, SLOT(deleteSelected()), ui->toolBar); -} - -void BugReportHistoryWindow::setupDefShortcuts() -{ - setShortcutContext({ - DELETE_SELECTED - }, - Qt::WidgetWithChildrenShortcut); - - BIND_SHORTCUTS(BugReportHistoryWindow, Action); -} - -QToolBar* BugReportHistoryWindow::getToolBar(int toolbar) const -{ - UNUSED(toolbar); - return ui->toolBar; -} - -void BugReportHistoryWindow::init() -{ - ui->setupUi(this); - initActions(); - - reload(); - connect(ui->reportsList->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(updateState())); - connect(CFG, SIGNAL(reportsHistoryRefreshNeeded()), this, SLOT(reload())); - - updateState(); -} - -void BugReportHistoryWindow::updateState() -{ - actionMap[DELETE_SELECTED]->setEnabled(ui->reportsList->selectedItems().size() > 0); -} - -void BugReportHistoryWindow::reload() -{ - static_qstring(urlTpl, "<a href=\"%1\">%2</a>"); - QString invalidUrlTpl = tr("Invalid response from server."); - - QList<Config::ReportHistoryEntryPtr> entries = CFG->getReportHistory(); - ui->reportsList->clear(); - ui->reportsList->setRowCount(entries.size()); - - QTableWidgetItem* item = nullptr; - QLabel* urlLabel = nullptr; - int row = 0; - for (const Config::ReportHistoryEntryPtr& entry : entries) - { - item = new QTableWidgetItem((entry->isFeatureRequest ? ICONS.FEATURE_REQUEST : ICONS.BUG), entry->title); - item->setData(ENTRY_ID, entry->id); - ui->reportsList->setItem(row, 0, item); - - item = new QTableWidgetItem(QDateTime::fromTime_t(entry->timestamp).toString("yyyy-MM-dd HH:mm:ss")); - ui->reportsList->setItem(row, 1, item); - - if (entry->url.startsWith("http://")) - urlLabel = new QLabel(urlTpl.arg(entry->url, entry->url)); - else - urlLabel = new QLabel(invalidUrlTpl); - - urlLabel->setOpenExternalLinks(true); - ui->reportsList->setCellWidget(row, 2, urlLabel); - - row++; - } - - ui->reportsList->setHorizontalHeaderLabels({tr("Title"), tr("Reported at"), tr("URL")}); - ui->reportsList->resizeColumnsToContents(); -} - -void BugReportHistoryWindow::clearHistory() -{ - CFG->clearReportHistory(); -} - -void BugReportHistoryWindow::deleteSelected() -{ - QList<QTableWidgetItem*> items = ui->reportsList->selectedItems(); - if (items.size() == 0) - { - qDebug() << "Called BugReportHistoryWindow::deleteSelected(), but there's no row selected."; - return; - } - - int id = items.first()->data(ENTRY_ID).toInt(); - if (id == 0) - { - qDebug() << "Called BugReportHistoryWindow::deleteSelected(), but there's no ID in selected row."; - return; - } - - CFG->deleteReport(id); -} - -bool BugReportHistoryWindow::isUncommitted() const -{ - return false; -} - -QString BugReportHistoryWindow::getQuitUncommittedConfirmMessage() const -{ - return QString(); -} diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h deleted file mode 100644 index 42e518a..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef BUGREPORTHISTORYWINDOW_H -#define BUGREPORTHISTORYWINDOW_H - -#include "mdichild.h" -#include <QWidget> - -namespace Ui { - class BugReportHistoryWindow; -} - -CFG_KEY_LIST(BugReportHistoryWindow, QObject::tr("Reports history window"), - CFG_KEY_ENTRY(DELETE_SELECTED, Qt::Key_Delete, QObject::tr("Delete selected entry")) -) - -class GUI_API_EXPORT BugReportHistoryWindow : public MdiChild -{ - Q_OBJECT - Q_ENUMS(Action) - - public: - enum Action - { - DELETE_SELECTED, - CLEAR_HISTORY - }; - - enum ToolBar - { - TOOLBAR - }; - - explicit BugReportHistoryWindow(QWidget *parent = 0); - ~BugReportHistoryWindow(); - - bool restoreSessionNextTime(); - bool isUncommitted() const; - QString getQuitUncommittedConfirmMessage() const; - - protected: - QVariant saveSession(); - bool restoreSession(const QVariant &sessionValue); - Icon* getIconNameForMdiWindow(); - QString getTitleForMdiWindow(); - void createActions(); - void setupDefShortcuts(); - QToolBar* getToolBar(int toolbar) const; - - private: - enum UserRole - { - ENTRY_ID = Qt::UserRole + 1 - }; - - void init(); - - Ui::BugReportHistoryWindow *ui = nullptr; - - private slots: - void updateState(); - void reload(); - void clearHistory(); - void deleteSelected(); -}; - -#endif // BUGREPORTHISTORYWINDOW_H diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.ui b/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.ui deleted file mode 100644 index 2211ec2..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/windows/bugreporthistorywindow.ui +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>BugReportHistoryWindow</class> - <widget class="QWidget" name="BugReportHistoryWindow"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string notr="true">Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QToolBar" name="toolBar"/> - </item> - <item> - <widget class="QTableWidget" name="reportsList"> - <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectRows</enum> - </property> - <property name="verticalScrollMode"> - <enum>QAbstractItemView::ScrollPerPixel</enum> - </property> - <attribute name="horizontalHeaderStretchLastSection"> - <bool>true</bool> - </attribute> - <column> - <property name="text"> - <string>Title</string> - </property> - </column> - <column> - <property name="text"> - <string>Reported at</string> - </property> - </column> - <column> - <property name="text"> - <string>URL</string> - </property> - </column> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp index 286924b..5d36683 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.cpp @@ -106,11 +106,11 @@ void CollationsEditor::init() connect(CFG_UI.Fonts.SqlEditor, SIGNAL(changed(QVariant)), this, SLOT(changeFont(QVariant))); // Language plugins - foreach (ScriptingPlugin* plugin, PLUGINS->getLoadedPlugins<ScriptingPlugin>()) + for (ScriptingPlugin* plugin : PLUGINS->getLoadedPlugins<ScriptingPlugin>()) ui->langCombo->addItem(plugin->getLanguage()); // Syntax highlighting plugins - foreach (SyntaxHighlighterPlugin* plugin, PLUGINS->getLoadedPlugins<SyntaxHighlighterPlugin>()) + for (SyntaxHighlighterPlugin* plugin : PLUGINS->getLoadedPlugins<SyntaxHighlighterPlugin>()) highlighterPlugins[plugin->getLanguageName()] = plugin; updateState(); @@ -156,7 +156,7 @@ void CollationsEditor::collationSelected(int row) ui->selectedDatabasesRadio->setChecked(true); updatesForSelection = false; - currentModified = false; + currentModified = model->isModified(row); updateCurrentCollationState(); } @@ -190,7 +190,7 @@ void CollationsEditor::setFont(const QFont& font) void CollationsEditor::help() { - static const QString url = QStringLiteral("http://wiki.sqlitestudio.pl/index.php/User_Manual#Custom_collations"); + static const QString url = QStringLiteral("https://github.com/pawelsalawa/sqlitestudio/wiki/User_Manual#custom-collations"); QDesktopServices::openUrl(QUrl(url, QUrl::StrictMode)); } diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h index a75e66b..7b2e469 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h +++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.h @@ -36,7 +36,7 @@ class GUI_API_EXPORT CollationsEditor : public MdiChild TOOLBAR }; - explicit CollationsEditor(QWidget *parent = 0); + explicit CollationsEditor(QWidget *parent = nullptr); ~CollationsEditor(); bool restoreSessionNextTime(); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.ui b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.ui index 97c4e0a..454c12a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.ui +++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditor.ui @@ -167,7 +167,11 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> - <widget class="QPlainTextEdit" name="codeEdit"/> + <widget class="QPlainTextEdit" name="codeEdit"> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + </widget> </item> </layout> </widget> diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.cpp index 05ca4e1..f04e023 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.cpp @@ -27,7 +27,7 @@ CollationsEditorModel::CollationsEditorModel(QObject *parent) : void CollationsEditorModel::clearModified() { beginResetModel(); - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) coll->modified = false; listModified = false; @@ -41,7 +41,7 @@ bool CollationsEditorModel::isModified() const if (collationList != originalCollationList) return true; - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) { if (coll->modified) return true; @@ -121,7 +121,7 @@ void CollationsEditorModel::setValid(int row, bool valid) bool CollationsEditorModel::isValid() const { - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) { if (!coll->valid) return false; @@ -133,13 +133,12 @@ void CollationsEditorModel::setData(const QList<CollationManager::CollationPtr>& { beginResetModel(); - Collation* collationPtr = nullptr; - foreach (collationPtr, collationList) + for (Collation* collationPtr : collationList) delete collationPtr; collationList.clear(); - foreach (const CollationManager::CollationPtr& coll, collations) + for (const CollationManager::CollationPtr& coll : collations) collationList << new Collation(coll); listModified = false; @@ -178,8 +177,7 @@ void CollationsEditorModel::deleteCollation(int row) QList<CollationManager::CollationPtr> CollationsEditorModel::getCollations() const { QList<CollationManager::CollationPtr> results; - - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) results << coll->data; return results; @@ -188,7 +186,7 @@ QList<CollationManager::CollationPtr> CollationsEditorModel::getCollations() con QStringList CollationsEditorModel::getCollationNames() const { QStringList names; - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) names << coll->data->name; return names; @@ -199,7 +197,7 @@ void CollationsEditorModel::validateNames() StrHash<QList<int>> counter; int row = 0; - foreach (Collation* coll, collationList) + for (Collation* coll : collationList) { coll->valid &= true; counter[coll->data->name] << row++; @@ -211,7 +209,7 @@ void CollationsEditorModel::validateNames() cntIt.next(); if (cntIt.value().size() > 1) { - foreach (int cntRow, cntIt.value()) + for (int cntRow : cntIt.value()) setValid(cntRow, false); } } @@ -265,7 +263,7 @@ QVariant CollationsEditorModel::data(const QModelIndex& index, int role) const void CollationsEditorModel::init() { - foreach (ScriptingPlugin* plugin, PLUGINS->getLoadedPlugins<ScriptingPlugin>()) + for (ScriptingPlugin* plugin : PLUGINS->getLoadedPlugins<ScriptingPlugin>()) langToIcon[plugin->getLanguage()] = QIcon(plugin->getIconPath()); } diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.h b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.h index 0c17c5b..46f7ab5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/windows/collationseditormodel.h @@ -13,7 +13,7 @@ class GUI_API_EXPORT CollationsEditorModel : public QAbstractListModel public: using QAbstractItemModel::setData; - explicit CollationsEditorModel(QObject *parent = 0); + explicit CollationsEditorModel(QObject *parent = nullptr); void clearModified(); bool isModified() const; diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/constrainttabmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/constrainttabmodel.cpp index 2d8897b..1144fda 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/constrainttabmodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/constrainttabmodel.cpp @@ -16,7 +16,7 @@ int ConstraintTabModel::rowCount(const QModelIndex& parent) const return 0; int cnt = 0; - foreach (SqliteCreateTable::Column* col, createTable->columns) + for (SqliteCreateTable::Column* col : createTable->columns) cnt += col->constraints.size(); cnt += createTable->constraints.size(); @@ -36,9 +36,9 @@ QVariant ConstraintTabModel::data(const QModelIndex& index, int role) const int constrIdx = index.row(); int currIdx = -1; - foreach (SqliteCreateTable::Column* column, createTable->columns) + for (SqliteCreateTable::Column* column : createTable->columns) { - foreach (SqliteCreateTable::Column::Constraint* constr, column->constraints) + for (SqliteCreateTable::Column::Constraint* constr : column->constraints) { currIdx++; @@ -47,7 +47,7 @@ QVariant ConstraintTabModel::data(const QModelIndex& index, int role) const } } - foreach (SqliteCreateTable::Constraint* constr, createTable->constraints) + for (SqliteCreateTable::Constraint* constr : createTable->constraints) { currIdx++; diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp index 15b49e5..795158a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/ddlhistorywindow.cpp @@ -76,7 +76,7 @@ void DdlHistoryWindow::activated(const QModelIndex& current, const QModelIndex& QStringList contentEntries; QList<Config::DdlHistoryEntryPtr> entries = CFG->getDdlHistoryFor(dbName, dbFile, date); - foreach (Config::DdlHistoryEntryPtr entry, entries) + for (Config::DdlHistoryEntryPtr entry : entries) { contentEntries << templ.arg(entry->dbName).arg(entry->dbFile) .arg(entry->timestamp.toString("yyyy-MM-dd HH:mm:ss")) diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp index 56ab6fe..cd3e135 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp @@ -19,12 +19,14 @@ #include "parser/parser.h" #include "dbobjectdialogs.h" #include "dialogs/exportdialog.h" +#include "themetuner.h" +#include "dialogs/bindparamsdialog.h" +#include "common/bindparam.h" #include <QComboBox> #include <QDebug> #include <QStringListModel> #include <QActionGroup> #include <QMessageBox> -#include <themetuner.h> CFG_KEYS_DEFINE(EditorWindow) EditorWindow::ResultsDisplayMode EditorWindow::resultsDisplayMode; @@ -100,6 +102,7 @@ void EditorWindow::init() createDbCombo(); initActions(); updateShortcutTips(); + setupSqlHistoryMenu(); Db* treeSelectedDb = DBTREE->getSelectedOpenDb(); if (treeSelectedDb) @@ -115,10 +118,12 @@ void EditorWindow::init() // SQL history list ui->historyList->setModel(CFG->getSqlHistoryModel()); + ui->historyList->hideColumn(0); ui->historyList->resizeColumnToContents(1); connect(ui->historyList->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(historyEntrySelected(QModelIndex,QModelIndex))); connect(ui->historyList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(historyEntryActivated(QModelIndex))); + connect(ui->historyList, &QWidget::customContextMenuRequested, this, &EditorWindow::sqlHistoryContextMenuRequested); updateState(); } @@ -390,6 +395,7 @@ void EditorWindow::createActions() createAction(SHOW_PREV_TAB, tr("Show previous tab", "sql editor"), this, SLOT(showPrevTab()), this); createAction(FOCUS_RESULTS_BELOW, tr("Focus results below", "sql editor"), this, SLOT(focusResultsBelow()), this); createAction(FOCUS_EDITOR_ABOVE, tr("Focus SQL editor above", "sql editor"), this, SLOT(focusEditorAbove()), this); + createAction(DELETE_SINGLE_HISTORY_SQL, tr("Delete selected SQL history entries", "sql editor"), this, SLOT(deleteSelectedSqlHistory()), ui->historyList); // Static action triggers connect(staticActions[RESULTS_IN_TAB], SIGNAL(triggered()), this, SLOT(updateResultsDisplayMode())); @@ -470,9 +476,15 @@ void EditorWindow::updateShortcutTips() void EditorWindow::execQuery(bool explain) { QString sql = getQueryToExecute(true); + QHash<QString, QVariant> bindParams; + bool proceed = processBindParams(sql, bindParams); + if (!proceed) + return; + resultsModel->setDb(getCurrentDb()); resultsModel->setExplainMode(explain); resultsModel->setQuery(sql); + resultsModel->setParams(bindParams); resultsModel->setQueryCountLimitForSmartMode(queryLimitForSmartExecution); ui->dataView->refreshData(); updateState(); @@ -490,6 +502,61 @@ void EditorWindow::explainQuery() execQuery(true); } +bool EditorWindow::processBindParams(QString& sql, QHash<QString, QVariant>& queryParams) +{ + // Determin dialect + Dialect dialect = Dialect::Sqlite3; + Db* db = getCurrentDb(); + if (db && db->isValid()) + dialect = db->getDialect(); + + // Get all bind parameters from the query + TokenList tokens = Lexer::tokenize(sql, dialect); + TokenList bindTokens = tokens.filter(Token::BIND_PARAM); + + // No bind tokens? Return fast. + if (bindTokens.isEmpty()) + return true; + + // Process bind tokens, prepare list for a dialog. + static_qstring(paramTpl, ":arg%1"); + QString arg; + QVector<BindParam*> bindParams; + BindParam* bindParam = nullptr; + int i = 0; + for (const TokenPtr& token : bindTokens) + { + bindParam = new BindParam(); + bindParam->position = i; + bindParam->originalName = token->value; + bindParam->newName = paramTpl.arg(i); + bindParams << bindParam; + i++; + + token->value = bindParam->newName; + } + + // Show dialog to query user for values + BindParamsDialog dialog(MAINWINDOW); + dialog.setBindParams(bindParams); + bool accepted = (dialog.exec() == QDialog::Accepted); + + // Transfer values from dialog to arguments for query + if (accepted) + { + for (BindParam* bindParam : bindParams) + queryParams[bindParam->newName] = bindParam->value; + + sql = tokens.detokenize(); + } + + // Cleanup + for (BindParam* bindParam : bindParams) + delete bindParam; + + return accepted; +} + void EditorWindow::dbChanged() { Db* currentDb = getCurrentDb(); @@ -597,17 +664,29 @@ void EditorWindow::focusEditorAbove() void EditorWindow::historyEntrySelected(const QModelIndex& current, const QModelIndex& previous) { UNUSED(previous); - QString sql = ui->historyList->model()->index(current.row(), 4).data().toString(); + QString sql = ui->historyList->model()->index(current.row(), 5).data().toString(); ui->historyContents->setPlainText(sql); } void EditorWindow::historyEntryActivated(const QModelIndex& current) { - QString sql = ui->historyList->model()->index(current.row(), 4).data().toString(); + QString sql = ui->historyList->model()->index(current.row(), 5).data().toString(); ui->sqlEdit->setPlainText(sql); ui->tabWidget->setCurrentIndex(0); } +void EditorWindow::deleteSelectedSqlHistory() +{ + if (ui->historyList->selectionModel()->selectedIndexes().isEmpty()) + return; + + QList<qint64> ids; + for (const QModelIndex& idx : ui->historyList->selectionModel()->selectedRows(0)) + ids += idx.data().toLongLong(); + + CFG->deleteSqlHistory(ids); +} + void EditorWindow::clearHistory() { QMessageBox::StandardButton res = QMessageBox::question(this, tr("Clear execution history"), tr("Are you sure you want to erase the entire SQL execution history? " @@ -618,6 +697,19 @@ void EditorWindow::clearHistory() CFG->clearSqlHistory(); } +void EditorWindow::sqlHistoryContextMenuRequested(const QPoint &pos) +{ + actionMap[DELETE_SINGLE_HISTORY_SQL]->setEnabled(!ui->historyList->selectionModel()->selectedIndexes().isEmpty()); + + sqlHistoryMenu->popup(ui->historyList->mapToGlobal(pos)); +} + +void EditorWindow::setupSqlHistoryMenu() +{ + sqlHistoryMenu = new QMenu(this); + sqlHistoryMenu->addAction(actionMap[DELETE_SINGLE_HISTORY_SQL]); +} + void EditorWindow::exportResults() { if (!ExportManager::isAnyPluginAvailable()) diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h index 12486a8..296a9e2 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h +++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h @@ -24,14 +24,15 @@ class SqlQueryItem; class SqlEditor; CFG_KEY_LIST(EditorWindow, QObject::tr("SQL editor window"), - CFG_KEY_ENTRY(EXEC_QUERY, Qt::Key_F9, QObject::tr("Execute query")) - CFG_KEY_ENTRY(EXPLAIN_QUERY, Qt::Key_F8, QObject::tr("Execute \"%1\" query").arg("EXPLAIN")) - CFG_KEY_ENTRY(PREV_DB, Qt::CTRL + Qt::Key_Up, QObject::tr("Switch current working database to previous on the list")) - CFG_KEY_ENTRY(NEXT_DB, Qt::CTRL + Qt::Key_Down, QObject::tr("Switch current working database to next on the list")) - CFG_KEY_ENTRY(SHOW_NEXT_TAB, Qt::ALT + Qt::Key_Right, QObject::tr("Go to next editor tab")) - CFG_KEY_ENTRY(SHOW_PREV_TAB, Qt::ALT + Qt::Key_Left, QObject::tr("Go to previous editor tab")) - CFG_KEY_ENTRY(FOCUS_RESULTS_BELOW, Qt::ALT + Qt::Key_PageDown, QObject::tr("Move keyboard input focus to the results view below")) - CFG_KEY_ENTRY(FOCUS_EDITOR_ABOVE, Qt::ALT + Qt::Key_PageUp, QObject::tr("Move keyboard input focus to the SQL editor above")) + CFG_KEY_ENTRY(EXEC_QUERY, Qt::Key_F9, QObject::tr("Execute query")) + CFG_KEY_ENTRY(EXPLAIN_QUERY, Qt::Key_F8, QObject::tr("Execute \"%1\" query").arg("EXPLAIN")) + CFG_KEY_ENTRY(PREV_DB, Qt::CTRL + Qt::Key_Up, QObject::tr("Switch current working database to previous on the list")) + CFG_KEY_ENTRY(NEXT_DB, Qt::CTRL + Qt::Key_Down, QObject::tr("Switch current working database to next on the list")) + CFG_KEY_ENTRY(SHOW_NEXT_TAB, Qt::ALT + Qt::Key_Right, QObject::tr("Go to next editor tab")) + CFG_KEY_ENTRY(SHOW_PREV_TAB, Qt::ALT + Qt::Key_Left, QObject::tr("Go to previous editor tab")) + CFG_KEY_ENTRY(FOCUS_RESULTS_BELOW, Qt::ALT + Qt::Key_PageDown, QObject::tr("Move keyboard input focus to the results view below")) + CFG_KEY_ENTRY(FOCUS_EDITOR_ABOVE, Qt::ALT + Qt::Key_PageUp, QObject::tr("Move keyboard input focus to the SQL editor above")) + CFG_KEY_ENTRY(DELETE_SINGLE_HISTORY_SQL, QKeySequence::Delete, QObject::tr("Delete selected SQL history entries")) ) class GUI_API_EXPORT EditorWindow : public MdiChild @@ -61,7 +62,8 @@ class GUI_API_EXPORT EditorWindow : public MdiChild FOCUS_EDITOR_ABOVE, CLEAR_HISTORY, EXPORT_RESULTS, - CREATE_VIEW_FROM_QUERY + CREATE_VIEW_FROM_QUERY, + DELETE_SINGLE_HISTORY_SQL }; enum ToolBar @@ -114,6 +116,8 @@ class GUI_API_EXPORT EditorWindow : public MdiChild void setupDefShortcuts(); void selectCurrentQuery(bool fallBackToPreviousIfNecessary = false); void updateShortcutTips(); + void setupSqlHistoryMenu(); + bool processBindParams(QString& sql, QHash<QString, QVariant>& queryParams); static const int queryLimitForSmartExecution = 100; @@ -129,6 +133,7 @@ class GUI_API_EXPORT EditorWindow : public MdiChild int sqlEditorNum = 1; qint64 lastQueryHistoryId = 0; QString lastSuccessfulQuery; + QMenu* sqlHistoryMenu = nullptr; private slots: void execQuery(bool explain = false); @@ -146,7 +151,9 @@ class GUI_API_EXPORT EditorWindow : public MdiChild void focusEditorAbove(); void historyEntrySelected(const QModelIndex& current, const QModelIndex& previous); void historyEntryActivated(const QModelIndex& current); + void deleteSelectedSqlHistory(); void clearHistory(); + void sqlHistoryContextMenuRequested(const QPoint &pos); void exportResults(); void createViewFromQuery(); void updateState(); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.ui b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.ui index 924f895..f3f44e3 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.ui +++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.ui @@ -51,6 +51,9 @@ <property name="contextMenuPolicy"> <enum>Qt::CustomContextMenu</enum> </property> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> </widget> <widget class="QWidget" name="resultsContainer" native="true"> <layout class="QVBoxLayout" name="verticalLayout_5"> @@ -118,11 +121,14 @@ <enum>Qt::Vertical</enum> </property> <widget class="QTableView" name="historyList"> + <property name="contextMenuPolicy"> + <enum>Qt::CustomContextMenu</enum> + </property> <property name="alternatingRowColors"> <bool>true</bool> </property> <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> + <enum>QAbstractItemView::ExtendedSelection</enum> </property> <property name="selectionBehavior"> <enum>QAbstractItemView::SelectRows</enum> diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp index 1bfd1f7..9894098 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.cpp @@ -140,13 +140,13 @@ void FunctionsEditor::init() model->setData(FUNCTIONS->getAllScriptFunctions()); // Language plugins - foreach (ScriptingPlugin* plugin, PLUGINS->getLoadedPlugins<ScriptingPlugin>()) + for (ScriptingPlugin* plugin : PLUGINS->getLoadedPlugins<ScriptingPlugin>()) scriptingPlugins[plugin->getLanguage()] = plugin; ui->langCombo->addItems(scriptingPlugins.keys()); // Syntax highlighting plugins - foreach (SyntaxHighlighterPlugin* plugin, PLUGINS->getLoadedPlugins<SyntaxHighlighterPlugin>()) + for (SyntaxHighlighterPlugin* plugin : PLUGINS->getLoadedPlugins<SyntaxHighlighterPlugin>()) highlighterPlugins[plugin->getLanguageName()] = plugin; updateState(); @@ -204,7 +204,7 @@ void FunctionsEditor::functionSelected(int row) // Arguments ui->argsList->clear(); QListWidgetItem* item = nullptr; - foreach (const QString& arg, model->getArguments(row)) + for (const QString& arg : model->getArguments(row)) { item = new QListWidgetItem(arg); item->setFlags(item->flags() | Qt::ItemIsEditable); @@ -232,7 +232,7 @@ void FunctionsEditor::functionSelected(int row) } updatesForSelection = false; - currentModified = false; + currentModified = model->isModified(row); updateCurrentFunctionState(); } @@ -606,7 +606,7 @@ void FunctionsEditor::applyFilter(const QString& value) void FunctionsEditor::help() { - static const QString url = QStringLiteral("http://wiki.sqlitestudio.pl/index.php/User_Manual#Custom_SQL_functions"); + static const QString url = QStringLiteral("https://github.com/pawelsalawa/sqlitestudio/wiki/User_Manual#custom-sql-functions"); QDesktopServices::openUrl(QUrl(url, QUrl::StrictMode)); } diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.ui b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.ui index b99efe1..17c3859 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.ui +++ b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditor.ui @@ -294,7 +294,11 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> - <widget class="QPlainTextEdit" name="initCodeEdit"/> + <widget class="QPlainTextEdit" name="initCodeEdit"> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + </widget> </item> </layout> </widget> @@ -310,7 +314,11 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_6"> <item> - <widget class="QPlainTextEdit" name="mainCodeEdit"/> + <widget class="QPlainTextEdit" name="mainCodeEdit"> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + </widget> </item> </layout> </widget> @@ -326,7 +334,11 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_7"> <item> - <widget class="QPlainTextEdit" name="finalCodeEdit"/> + <widget class="QPlainTextEdit" name="finalCodeEdit"> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + </widget> </item> </layout> </widget> diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditormodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditormodel.cpp index cf7efdf..623ebd8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/functionseditormodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/functionseditormodel.cpp @@ -28,7 +28,7 @@ FunctionsEditorModel::FunctionsEditorModel(QObject *parent) : void FunctionsEditorModel::clearModified() { beginResetModel(); - foreach (Function* func, functionList) + for (Function* func : functionList) func->modified = false; listModified = false; @@ -42,7 +42,7 @@ bool FunctionsEditorModel::isModified() const if (functionList != originalFunctionList) return true; - foreach (Function* func, functionList) + for (Function* func : functionList) { if (func->modified) return true; @@ -62,7 +62,7 @@ void FunctionsEditorModel::setModified(int row, bool modified) bool FunctionsEditorModel::isValid() const { - foreach (Function* func, functionList) + for (Function* func : functionList) { if (!func->valid) return false; @@ -199,7 +199,7 @@ void FunctionsEditorModel::setData(const QList<FunctionManager::ScriptFunction*> functionList.clear(); - foreach (FunctionManager::ScriptFunction* func, functions) + for (FunctionManager::ScriptFunction* func : functions) functionList << new Function(func); listModified = false; @@ -239,7 +239,7 @@ QList<FunctionManager::ScriptFunction*> FunctionsEditorModel::generateFunctions( { QList<FunctionManager::ScriptFunction*> results; - foreach (Function* func, functionList) + for (Function* func : functionList) results << new FunctionManager::ScriptFunction(func->data); return results; @@ -248,7 +248,7 @@ QList<FunctionManager::ScriptFunction*> FunctionsEditorModel::generateFunctions( QStringList FunctionsEditorModel::getFunctionNames() const { QStringList names; - foreach (Function* func, functionList) + for (Function* func : functionList) names << func->data.name; return names; @@ -259,7 +259,7 @@ void FunctionsEditorModel::validateNames() StrHash<QList<int>> counter; int row = 0; - foreach (Function* func, functionList) + for (Function* func : functionList) { func->valid &= true; counter[func->data.name] << row++; @@ -271,7 +271,7 @@ void FunctionsEditorModel::validateNames() cntIt.next(); if (cntIt.value().size() > 1) { - foreach (int cntRow, cntIt.value()) + for (int cntRow : cntIt.value()) setValid(cntRow, false); } } @@ -322,7 +322,7 @@ QVariant FunctionsEditorModel::data(const QModelIndex& index, int role) const void FunctionsEditorModel::init() { - foreach (ScriptingPlugin* plugin, PLUGINS->getLoadedPlugins<ScriptingPlugin>()) + for (ScriptingPlugin* plugin : PLUGINS->getLoadedPlugins<ScriptingPlugin>()) langToIcon[plugin->getLanguage()] = QIcon(plugin->getIconPath()); } diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.cpp new file mode 100644 index 0000000..ca45eff --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.cpp @@ -0,0 +1,439 @@ +#include "sqliteextensioneditor.h" +#include "sqliteextensioneditormodel.h" +#include "ui_sqliteextensioneditor.h" +#include "selectabledbmodel.h" +#include "dbtree/dbtree.h" +#include "dbtree/dbtreemodel.h" +#include "common/unused.h" +#include "uiutils.h" +#include "uiconfig.h" +#include "db/db.h" +#include "services/dbmanager.h" +#include "services/notifymanager.h" +#include "common/lazytrigger.h" +#include <QDesktopServices> +#include <QFileDialog> +#include <QSortFilterProxyModel> + +SqliteExtensionEditor::SqliteExtensionEditor(QWidget *parent) : + MdiChild(parent), + ui(new Ui::SqliteExtensionEditor) +{ + init(); +} + +SqliteExtensionEditor::~SqliteExtensionEditor() +{ + delete ui; + probingDb->closeQuiet(); +} + +bool SqliteExtensionEditor::restoreSessionNextTime() +{ + return false; +} + +bool SqliteExtensionEditor::isUncommitted() const +{ + return model->isModified(); +} + +QString SqliteExtensionEditor::getQuitUncommittedConfirmMessage() const +{ + return tr("Extension manager window has uncommitted modifications."); +} + +QVariant SqliteExtensionEditor::saveSession() +{ + return QVariant(); +} + +bool SqliteExtensionEditor::restoreSession(const QVariant& sessionValue) +{ + UNUSED(sessionValue); + return true; +} + +Icon*SqliteExtensionEditor::getIconNameForMdiWindow() +{ + return ICONS.EXTENSION; +} + +QString SqliteExtensionEditor::getTitleForMdiWindow() +{ + return tr("Extension manager"); +} + +void SqliteExtensionEditor::createActions() +{ + createAction(COMMIT, ICONS.COMMIT, tr("Commit all extension changes"), this, SLOT(commit()), ui->toolbar); + createAction(ROLLBACK, ICONS.ROLLBACK, tr("Rollback all extension changes"), this, SLOT(rollback()), ui->toolbar); + ui->toolbar->addSeparator(); + createAction(ADD, ICONS.EXTENSION_ADD, tr("Add new extension"), this, SLOT(newExtension()), ui->toolbar); + createAction(DELETE, ICONS.EXTENSION_DELETE, tr("Remove selected extension"), this, SLOT(deleteExtension()), ui->toolbar); + ui->toolbar->addSeparator(); + createAction(HELP, ICONS.HELP, tr("Editing extensions manual"), this, SLOT(help()), ui->toolbar); +} + +void SqliteExtensionEditor::setupDefShortcuts() +{ +} + +QToolBar* SqliteExtensionEditor::getToolBar(int toolbar) const +{ + UNUSED(toolbar); + return ui->toolbar; +} + +void SqliteExtensionEditor::init() +{ + ui->setupUi(this); + initActions(); + + statusUpdateTrigger = new LazyTrigger(500, this, SLOT(updateCurrentExtensionState())); + + model = new SqliteExtensionEditorModel(this); + extensionFilterModel = new QSortFilterProxyModel(this); + extensionFilterModel->setSourceModel(model); + ui->extensionList->setModel(extensionFilterModel); + + dbListModel = new SelectableDbModel(this); + dbListModel->setDisabledVersion(2); + dbListModel->setSourceModel(DBTREE->getModel()); + ui->databaseList->setModel(dbListModel); + ui->databaseList->expandAll(); + + model->setData(SQLITE_EXTENSIONS->getAllExtensions()); + + connect(ui->extensionList->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(extensionSelected(QItemSelection,QItemSelection))); + connect(ui->extensionList->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(updateState())); + connect(ui->fileEdit, SIGNAL(textChanged(QString)), this, SLOT(updateModified())); + connect(ui->initEdit, SIGNAL(textChanged(QString)), this, SLOT(updateModified())); + connect(ui->allDatabasesRadio, SIGNAL(clicked()), this, SLOT(updateModified())); + connect(ui->selectedDatabasesRadio, SIGNAL(clicked()), this, SLOT(updateModified())); + connect(ui->fileBrowse, SIGNAL(clicked()), this, SLOT(browseForFile())); + connect(ui->fileEdit, SIGNAL(textChanged(QString)), statusUpdateTrigger, SLOT(schedule())); + connect(ui->fileEdit, SIGNAL(textChanged(QString)), this, SLOT(generateName())); + connect(ui->initEdit, SIGNAL(textChanged(QString)), statusUpdateTrigger, SLOT(schedule())); + connect(dbListModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(updateModified())); + + probingDb = DBLIST->createInMemDb(true); + if (!probingDb->openQuiet()) + qWarning() << "Could not open in-memory dtabase for Extension manager window. Probing files will be impossible."; + + initStateForAll(); + updateState(); + updateCurrentExtensionState(); +} + +int SqliteExtensionEditor::getCurrentExtensionRow() const +{ + QModelIndexList idxList = ui->extensionList->selectionModel()->selectedIndexes(); + if (idxList.size() == 0) + return -1; + + return idxList.first().row(); +} + +void SqliteExtensionEditor::extensionDeselected(int row) +{ + statusUpdateTrigger->cancel(); + + model->setFilePath(row, ui->fileEdit->text()); + model->setInitFunction(row, ui->initEdit->text()); + model->setAllDatabases(row, ui->allDatabasesRadio->isChecked()); + model->setModified(row, currentModified); + + if (ui->selectedDatabasesRadio->isChecked()) + model->setDatabases(row, getCurrentDatabases()); + + model->setValid(row, validateExtension(row)); +} + +void SqliteExtensionEditor::extensionSelected(int row) +{ + updatesForSelection = true; + ui->fileEdit->setText(model->getFilePath(row)); + ui->initEdit->setText(model->getInitFunction(row)); + + // Databases + dbListModel->setDatabases(model->getDatabases(row)); + ui->databaseList->expandAll(); + + if (model->getAllDatabases(row)) + ui->allDatabasesRadio->setChecked(true); + else + ui->selectedDatabasesRadio->setChecked(true); + + updatesForSelection = false; + currentModified = model->isModified(row); + + updateCurrentExtensionState(); +} + +void SqliteExtensionEditor::clearEdits() +{ + ui->fileEdit->setText(QString::null); + ui->initEdit->setText(QString::null); + ui->allDatabasesRadio->setChecked(true); +} + +void SqliteExtensionEditor::selectExtension(int row) +{ + if (!model->isValidRowIndex(row)) + return; + + ui->extensionList->selectionModel()->setCurrentIndex(model->index(row), QItemSelectionModel::Clear|QItemSelectionModel::SelectCurrent); +} + +QStringList SqliteExtensionEditor::getCurrentDatabases() const +{ + return dbListModel->getDatabases(); +} + +bool SqliteExtensionEditor::tryToLoad(const QString& filePath, const QString& initFunc, QString* resultError) +{ + if (!probingDb->isOpen()) + { + qWarning() << "Probing database is closed. Cannot evaluate if file" << filePath << "is loadable."; + return true; + } + + bool loadedOk = probingDb->loadExtension(filePath, initFunc.isEmpty() ? QString() : initFunc); + if (!loadedOk && resultError) + *resultError = probingDb->getErrorText(); + + probingDb->closeQuiet(); + probingDb->openQuiet(); + + return loadedOk; +} + +bool SqliteExtensionEditor::validateExtension(bool* fileOk, bool* initOk, QString* fileError) +{ + QString filePath = ui->fileEdit->text(); + QString initFunc = ui->initEdit->text(); + return validateExtension(filePath, initFunc, fileOk, initOk, fileError); +} + +bool SqliteExtensionEditor::validateExtension(int row) +{ + QString filePath = model->getFilePath(row); + QString initFunc = model->getInitFunction(row); + return validateExtension(filePath, initFunc); +} + +bool SqliteExtensionEditor::validateExtension(const QString& filePath, const QString& initFunc, bool* fileOk, bool* initOk, QString* fileError) +{ + bool localFileOk = true; + bool localInitOk = true; + + QFileInfo fileInfo(filePath); + if (!fileInfo.exists() || !fileInfo.isReadable()) + { + localFileOk = false; + *fileError = tr("File with given path does not exist or is not readable."); + } + else + localFileOk = tryToLoad(filePath, initFunc, fileError); + + if (!localFileOk && fileError && fileError->isEmpty()) + *fileError = tr("Unable to load extension: %1").arg(filePath); + + static const QRegularExpression initFuncRegExp("^[a-zA-Z0-9_]*$"); + localInitOk = initFuncRegExp.match(initFunc).hasMatch(); + + if (fileOk) + *fileOk = localFileOk; + + if (initOk) + *initOk = localInitOk; + + return localFileOk && localInitOk; +} + +void SqliteExtensionEditor::initStateForAll() +{ + for (int i = 0, total = model->rowCount(); i < total; ++i) + { + model->setName(i, QFileInfo(model->getFilePath(i)).baseName()); + model->setValid(i, validateExtension(i)); + } +} + +void SqliteExtensionEditor::help() +{ + static const QString url = QStringLiteral("https://github.com/pawelsalawa/sqlitestudio/wiki/User_Manual#sqlite-extensions"); + QDesktopServices::openUrl(QUrl(url, QUrl::StrictMode)); +} + +void SqliteExtensionEditor::commit() +{ + int row = getCurrentExtensionRow(); + if (model->isValidRowIndex(row)) + extensionDeselected(row); + + QList<SqliteExtensionManager::ExtensionPtr> extensions = model->getExtensions(); + + SQLITE_EXTENSIONS->setExtensions(extensions); + model->clearModified(); + currentModified = false; + + if (model->isValidRowIndex(row)) + selectExtension(row); + + updateState(); +} + +void SqliteExtensionEditor::rollback() +{ + int selectedBefore = getCurrentExtensionRow(); + + model->setData(SQLITE_EXTENSIONS->getAllExtensions()); + currentModified = false; + clearEdits(); + + if (model->isValidRowIndex(selectedBefore)) + selectExtension(selectedBefore); + + updateState(); +} + +void SqliteExtensionEditor::newExtension() +{ + model->addExtension(SqliteExtensionManager::ExtensionPtr::create()); + selectExtension(model->rowCount() - 1); +} + +void SqliteExtensionEditor::deleteExtension() +{ + nameGenerationActive = false; + int row = getCurrentExtensionRow(); + model->deleteExtension(row); + clearEdits(); + + row = getCurrentExtensionRow(); + if (model->isValidRowIndex(row)) + extensionSelected(row); + else + updateCurrentExtensionState(); + + nameGenerationActive = true; + updateState(); +} + +void SqliteExtensionEditor::updateState() +{ + bool modified = model->isModified() || currentModified; + bool valid = model->isValid(); + + actionMap[COMMIT]->setEnabled(modified && valid); + actionMap[ROLLBACK]->setEnabled(modified); + actionMap[DELETE]->setEnabled(ui->extensionList->selectionModel()->selectedIndexes().size() > 0); + ui->databaseList->setEnabled(ui->selectedDatabasesRadio->isChecked()); +} + +void SqliteExtensionEditor::updateCurrentExtensionState() +{ + int row = getCurrentExtensionRow(); + bool validRow = model->isValidRowIndex(row); + ui->rightWidget->setEnabled(validRow); + if (!validRow) + { + setValidState(ui->fileEdit, true); + setValidState(ui->initEdit, true); + return; + } + + bool fileOk = true; + bool initOk = true; + QString fileError; + bool allOk = validateExtension(&fileOk, &initOk, &fileError); + + // Display results + setValidState(ui->fileEdit, fileOk, fileError); + setValidState(ui->initEdit, initOk, tr("Invalid initialization function name. Function name can contain only alpha-numeric characters and underscore.")); + ui->databasesGroup->setEnabled(allOk); + model->setValid(row, allOk); + + updateState(); +} + +void SqliteExtensionEditor::extensionSelected(const QItemSelection& selected, const QItemSelection& deselected) +{ + int deselCnt = deselected.indexes().size(); + int selCnt = selected.indexes().size(); + + if (deselCnt > 0) + extensionDeselected(deselected.indexes().first().row()); + + if (selCnt > 0) + extensionSelected(selected.indexes().first().row()); + + if (deselCnt > 0 && selCnt == 0) + { + currentModified = false; + clearEdits(); + } +} + +void SqliteExtensionEditor::updateModified() +{ + if (updatesForSelection) + return; + + int row = getCurrentExtensionRow(); + if (model->isValidRowIndex(row)) + { + bool fileDiff = model->getFilePath(row) != ui->fileEdit->text(); + bool initDiff = model->getInitFunction(row) != ui->initEdit->text(); + bool allDatabasesDiff = model->getAllDatabases(row) != ui->allDatabasesRadio->isChecked(); + bool dbDiff = getCurrentDatabases().toSet() != model->getDatabases(row).toSet(); // QSet to ignore order + + currentModified = (fileDiff || initDiff || allDatabasesDiff || dbDiff); + } + + statusUpdateTrigger->schedule(); +} + +void SqliteExtensionEditor::generateName() +{ + if (!nameGenerationActive) + return; + + int row = getCurrentExtensionRow(); + if (model->isValidRowIndex(row)) + model->setName(row, QFileInfo(ui->fileEdit->text()).baseName()); +} + +void SqliteExtensionEditor::applyFilter(const QString& value) +{ + int row = getCurrentExtensionRow(); + ui->extensionList->selectionModel()->clearSelection(); + + extensionFilterModel->setFilterFixedString(value); + + selectExtension(row); +} + +void SqliteExtensionEditor::browseForFile() +{ + QString dir = getFileDialogInitPath(); + QString filter = +#if defined(Q_OS_WIN) + tr("Dynamic link libraries (*.dll);;All files (*)"); +#elif defined(Q_OS_LINUX) + tr("Shared objects (*.so);;All files (*)"); +#elif defined(Q_OS_OSX) + tr("Dynamic libraries (*.dylib);;All files (*)"); +#else + tr("All files (*)"); +#endif + QString filePath = QFileDialog::getOpenFileName(this, tr("Open file"), dir, filter); + if (filePath.isNull()) + return; + + setFileDialogInitPathByFile(filePath); + + ui->fileEdit->setText(filePath); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.h b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.h new file mode 100644 index 0000000..c8ea3d0 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.h @@ -0,0 +1,94 @@ +#ifndef SQLITEEXTENSIONEDITOR_H +#define SQLITEEXTENSIONEDITOR_H + +#include "icon.h" +#include "mdichild.h" +#include <QItemSelection> +#include <QWidget> + +namespace Ui { + class SqliteExtensionEditor; +} + +class QToolBar; +class SqliteExtensionEditorModel; +class QSortFilterProxyModel; +class SelectableDbModel; +class Db; +class LazyTrigger; + +class SqliteExtensionEditor : public MdiChild +{ + Q_OBJECT + + public: + enum Action + { + COMMIT, + ROLLBACK, + ADD, + DELETE, + HELP + }; + + enum ToolBar + { + TOOLBAR + }; + + explicit SqliteExtensionEditor(QWidget *parent = nullptr); + ~SqliteExtensionEditor(); + + bool restoreSessionNextTime(); + bool isUncommitted() const; + QString getQuitUncommittedConfirmMessage() const; + + protected: + QVariant saveSession(); + bool restoreSession(const QVariant &sessionValue); + Icon* getIconNameForMdiWindow(); + QString getTitleForMdiWindow(); + void createActions(); + void setupDefShortcuts(); + QToolBar* getToolBar(int toolbar) const; + + private: + void init(); + int getCurrentExtensionRow() const; + void extensionDeselected(int row); + void extensionSelected(int row); + void clearEdits(); + void selectExtension(int row); + QStringList getCurrentDatabases() const; + bool tryToLoad(const QString& filePath, const QString& initFunc, QString* resultError); + bool validateExtension(bool* fileOk = nullptr, bool* initOk = nullptr, QString* fileError = nullptr); + bool validateExtension(int row); + bool validateExtension(const QString& filePath, const QString& initFunc, bool* fileOk = nullptr, bool* initOk = nullptr, QString* fileError = nullptr); + void initStateForAll(); + + Ui::SqliteExtensionEditor *ui; + SqliteExtensionEditorModel* model = nullptr; + QSortFilterProxyModel* extensionFilterModel = nullptr; + SelectableDbModel* dbListModel = nullptr; + bool currentModified = false; + bool updatesForSelection = false; + Db* probingDb = nullptr; + LazyTrigger* statusUpdateTrigger = nullptr; + bool nameGenerationActive = true; + + private slots: + void help(); + void commit(); + void rollback(); + void newExtension(); + void deleteExtension(); + void updateState(); + void updateCurrentExtensionState(); + void extensionSelected(const QItemSelection& selected, const QItemSelection& deselected); + void updateModified(); + void generateName(); + void applyFilter(const QString& value); + void browseForFile(); +}; + +#endif // SQLITEEXTENSIONEDITOR_H diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.ui b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.ui new file mode 100644 index 0000000..747aa7f --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditor.ui @@ -0,0 +1,191 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>SqliteExtensionEditor</class> + <widget class="QWidget" name="SqliteExtensionEditor"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>980</width> + <height>659</height> + </rect> + </property> + <property name="windowTitle"> + <string notr="true">Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QToolBar" name="toolbar"/> + </item> + <item> + <widget class="QWidget" name="mainWidgt" native="true"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QSplitter" name="splitter"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="leftWidget" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="lineEdit"> + <property name="placeholderText"> + <string>Filter extensions</string> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="extensionList"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="rightWidget" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>4</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QWidget" name="widget" native="true"> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item row="3" column="0"> + <widget class="QLineEdit" name="initEdit"> + <property name="placeholderText"> + <string>Leave empty to use default function</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLineEdit" name="fileEdit"/> + </item> + <item row="1" column="1"> + <widget class="QToolButton" name="fileBrowse"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../icons.qrc"> + <normaloff>:/icons/img/directory_open.png</normaloff>:/icons/img/directory_open.png</iconset> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="fileLabel"> + <property name="text"> + <string>Extension file</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="initLabel"> + <property name="text"> + <string>Initialization function</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="databasesGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Databases</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QRadioButton" name="allDatabasesRadio"> + <property name="text"> + <string>Register in all databases</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="selectedDatabasesRadio"> + <property name="text"> + <string>Register in following databases:</string> + </property> + </widget> + </item> + <item> + <widget class="QTreeView" name="databaseList"> + <attribute name="headerVisible"> + <bool>false</bool> + </attribute> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources> + <include location="../icons.qrc"/> + </resources> + <connections/> +</ui> diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.cpp new file mode 100644 index 0000000..6e94a64 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.cpp @@ -0,0 +1,234 @@ +#include "sqliteextensioneditormodel.h" +#include "iconmanager.h" +#include "common/unused.h" + +#include <QFileInfo> + +#define SETTER(X, Y) \ + if (!isValidRowIndex(row) || X == Y) \ + return; \ + \ + X = Y; \ + emitDataChanged(row); + +#define GETTER(X, Y) \ + if (!isValidRowIndex(row)) \ + return Y; \ + \ + return X; + +SqliteExtensionEditorModel::SqliteExtensionEditorModel(QObject* parent) : + QAbstractListModel(parent) +{ +} + +void SqliteExtensionEditorModel::clearModified() +{ + beginResetModel(); + for (Extension* ext : extensionList) + ext->modified = false; + + listModified = false; + originalExtensionList = extensionList; + endResetModel(); +} + +bool SqliteExtensionEditorModel::isModified() const +{ + if (extensionList != originalExtensionList) + return true; + + for (Extension* ext : extensionList) + { + if (ext->modified) + return true; + } + return false; +} + +bool SqliteExtensionEditorModel::isModified(int row) const +{ + GETTER(extensionList[row]->modified, false); +} + +void SqliteExtensionEditorModel::setModified(int row, bool modified) +{ + SETTER(extensionList[row]->modified, modified); +} + +QString SqliteExtensionEditorModel::getName(int row) const +{ + GETTER(extensionList[row]->name, QString()); +} + +void SqliteExtensionEditorModel::setName(int row, const QString& name) +{ + SETTER(extensionList[row]->name, name); + + QModelIndex idx = index(0); + emit dataChanged(idx, idx, {Qt::DisplayRole}); +} + +void SqliteExtensionEditorModel::setFilePath(int row, const QString& filePath) +{ + SETTER(extensionList[row]->data->filePath, filePath); +} + +QString SqliteExtensionEditorModel::getFilePath(int row) const +{ + GETTER(extensionList[row]->data->filePath, QString()); +} + +void SqliteExtensionEditorModel::setInitFunction(int row, const QString& initFunc) +{ + SETTER(extensionList[row]->data->initFunc, initFunc); +} + +QString SqliteExtensionEditorModel::getInitFunction(int row) const +{ + GETTER(extensionList[row]->data->initFunc, QString()); +} + +void SqliteExtensionEditorModel::setAllDatabases(int row, bool allDatabases) +{ + SETTER(extensionList[row]->data->allDatabases, allDatabases); +} + +bool SqliteExtensionEditorModel::getAllDatabases(int row) const +{ + GETTER(extensionList[row]->data->allDatabases, true); +} + +void SqliteExtensionEditorModel::setDatabases(int row, const QStringList& databases) +{ + SETTER(extensionList[row]->data->databases, databases); +} + +QStringList SqliteExtensionEditorModel::getDatabases(int row) +{ + GETTER(extensionList[row]->data->databases, QStringList()); +} + +bool SqliteExtensionEditorModel::isValid(int row) const +{ + GETTER(extensionList[row]->valid, true); +} + +void SqliteExtensionEditorModel::setValid(int row, bool valid) +{ + SETTER(extensionList[row]->valid, valid); + + QModelIndex idx = index(0); + emit dataChanged(idx, idx, {Qt::DecorationRole}); +} + +bool SqliteExtensionEditorModel::isValid() const +{ + for (Extension* ext : extensionList) + { + if (!ext->valid) + return false; + } + return true; +} + +void SqliteExtensionEditorModel::setData(const QList<SqliteExtensionManager::ExtensionPtr>& extensions) +{ + beginResetModel(); + + for (Extension* extPtr : extensionList) + delete extPtr; + + extensionList.clear(); + + for (const SqliteExtensionManager::ExtensionPtr& ext : extensions) + extensionList << new Extension(ext); + + listModified = false; + originalExtensionList = extensionList; + + endResetModel(); +} + +void SqliteExtensionEditorModel::addExtension(const SqliteExtensionManager::ExtensionPtr& extension) +{ + int row = extensionList.size(); + + beginInsertRows(QModelIndex(), row, row); + + extensionList << new Extension(extension); + listModified = true; + + endInsertRows(); +} + +void SqliteExtensionEditorModel::deleteExtension(int row) +{ + if (!isValidRowIndex(row)) + return; + + beginRemoveRows(QModelIndex(), row, row); + + delete extensionList[row]; + extensionList.removeAt(row); + + listModified = true; + + endRemoveRows(); +} + +QList<SqliteExtensionManager::ExtensionPtr> SqliteExtensionEditorModel::getExtensions() const +{ + QList<SqliteExtensionManager::ExtensionPtr> results; + for (Extension* ext : extensionList) + results << ext->data; + + return results; +} + +bool SqliteExtensionEditorModel::isValidRowIndex(int row) const +{ + return (row >= 0 && row < extensionList.size()); +} + +int SqliteExtensionEditorModel::rowCount(const QModelIndex& parent) const +{ + UNUSED(parent); + return extensionList.size(); +} + +QVariant SqliteExtensionEditorModel::data(const QModelIndex& index, int role) const +{ + if (!index.isValid() || !isValidRowIndex(index.row())) + return QVariant(); + + if (role == Qt::DisplayRole) + return getName(index.row()); + + if (role == Qt::DecorationRole) + { + QIcon icon = ICONS.EXTENSION; + if (!isValid(index.row())) + icon = Icon::merge(icon, Icon::ERROR); + + return icon; + } + + return QVariant(); +} + +void SqliteExtensionEditorModel::emitDataChanged(int row) +{ + QModelIndex idx = index(row); + emit dataChanged(idx, idx); +} + +SqliteExtensionEditorModel::Extension::Extension() +{ + data = SqliteExtensionManager::ExtensionPtr::create(); +} + +SqliteExtensionEditorModel::Extension::Extension(const SqliteExtensionManager::ExtensionPtr& other) +{ + data = SqliteExtensionManager::ExtensionPtr::create(*other); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.h b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.h new file mode 100644 index 0000000..085edd9 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/windows/sqliteextensioneditormodel.h @@ -0,0 +1,65 @@ +#ifndef SQLITEEXTENSIONEDITORMODEL_H +#define SQLITEEXTENSIONEDITORMODEL_H + +#include "guiSQLiteStudio_global.h" +#include "services/sqliteextensionmanager.h" +#include <QIcon> +#include <QHash> +#include <QAbstractListModel> + +class GUI_API_EXPORT SqliteExtensionEditorModel : public QAbstractListModel +{ + Q_OBJECT + + public: + using QAbstractItemModel::setData; + + explicit SqliteExtensionEditorModel(QObject* parent = nullptr); + + void clearModified(); + bool isModified() const; + bool isModified(int row) const; + void setModified(int row, bool modified); + QString getName(int row) const; + void setName(int row, const QString& name); + void setFilePath(int row, const QString& filePath); + QString getFilePath(int row) const; + void setInitFunction(int row, const QString& initFunc); + QString getInitFunction(int row) const; + void setAllDatabases(int row, bool allDatabases); + bool getAllDatabases(int row) const; + void setDatabases(int row, const QStringList& databases); + QStringList getDatabases(int row); + bool isValid(int row) const; + void setValid(int row, bool valid); + bool isValid() const; + void setData(const QList<SqliteExtensionManager::ExtensionPtr>& extensions); + void addExtension(const SqliteExtensionManager::ExtensionPtr& extension); + void deleteExtension(int row); + QList<SqliteExtensionManager::ExtensionPtr> getExtensions() const; + bool isValidRowIndex(int row) const; + + int rowCount(const QModelIndex& parent = QModelIndex()) const; + QVariant data(const QModelIndex& index, int role) const; + + private: + struct Extension + { + Extension(); + Extension(const SqliteExtensionManager::ExtensionPtr& other); + + SqliteExtensionManager::ExtensionPtr data; + QString name; + bool modified = false; + bool valid = true; + }; + + void emitDataChanged(int row); + + QList<Extension*> extensionList; + QList<Extension*> originalExtensionList; + QHash<QString, QIcon> langToIcon; + bool listModified = false; +}; + +#endif // SQLITEEXTENSIONEDITORMODEL_H diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.cpp index 850d8a7..0f95a98 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.cpp @@ -395,7 +395,7 @@ QString TableConstraintsModel::getConstrDetails(SqliteCreateTable::Constraint* c void TableConstraintsModel::columnRenamed(SqliteCreateTable::Constraint* constr, const QString& oldColumn, const QString& newColumn) { - foreach (SqliteIndexedColumn* idxCol, constr->indexedColumns) + for (SqliteIndexedColumn* idxCol : constr->indexedColumns) { if (idxCol->name.compare(oldColumn, Qt::CaseInsensitive) == 0) { @@ -444,7 +444,7 @@ void TableConstraintsModel::columnModified(const QString& oldColumn, SqliteCreat return; int idx = 0; - foreach (SqliteCreateTable::Constraint* constr, createTable->constraints) + for (SqliteCreateTable::Constraint* constr : createTable->constraints) { if (constr->doesAffectColumn(oldColumn)) { @@ -461,7 +461,7 @@ void TableConstraintsModel::columnDeleted(const QString& column) { QList<int> toDelete; int idx = 0; - foreach (SqliteCreateTable::Constraint* constr, createTable->constraints) + for (SqliteCreateTable::Constraint* constr : createTable->constraints) { if (constr->doesAffectColumn(column)) { @@ -477,6 +477,6 @@ void TableConstraintsModel::columnDeleted(const QString& column) idx++; } - foreach (int idx, toDelete) + for (int idx : toDelete) delConstraint(idx); } diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp index 1c817de..62b6613 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp @@ -283,7 +283,7 @@ void TableStructureModel::moveColumnTo(int colIdx, int newIdx) QModelIndex TableStructureModel::findColumn(const QString& columnName, Qt::CaseSensitivity cs) const { int row = 0; - foreach (SqliteCreateTable::Column* col, createTable->columns) + for (SqliteCreateTable::Column* col : createTable->columns) { if (col->name.compare(columnName, cs) == 0) return createIndex(row, 0); @@ -432,7 +432,7 @@ bool TableStructureModel::isColumnPk(SqliteCreateTable::Column* column) const return true; QList<SqliteCreateTable::Constraint*> constraints = createTable->getConstraints(SqliteCreateTable::Constraint::PRIMARY_KEY); - foreach (SqliteCreateTable::Constraint* constr, constraints) + for (SqliteCreateTable::Constraint* constr : constraints) if (constr->doesAffectColumn(column->name)) return true; @@ -445,7 +445,7 @@ bool TableStructureModel::isColumnFk(SqliteCreateTable::Column* column) const return true; QList<SqliteCreateTable::Constraint*> constraints = createTable->getConstraints(SqliteCreateTable::Constraint::FOREIGN_KEY); - foreach (SqliteCreateTable::Constraint* constr, constraints) + for (SqliteCreateTable::Constraint* constr : constraints) if (constr->doesAffectColumn(column->name)) return true; @@ -458,7 +458,7 @@ bool TableStructureModel::isColumnUnique(SqliteCreateTable::Column* column) cons return true; QList<SqliteCreateTable::Constraint*> constraints = createTable->getConstraints(SqliteCreateTable::Constraint::UNIQUE); - foreach (SqliteCreateTable::Constraint* constr, constraints) + for (SqliteCreateTable::Constraint* constr : constraints) if (constr->doesAffectColumn(column->name)) return true; @@ -471,7 +471,7 @@ bool TableStructureModel::isColumnCheck(SqliteCreateTable::Column* column) const return true; QList<SqliteCreateTable::Constraint*> constraints = createTable->getConstraints(SqliteCreateTable::Constraint::CHECK); - foreach (SqliteCreateTable::Constraint* constr, constraints) + for (SqliteCreateTable::Constraint* constr : constraints) if (constr->expr->getContextColumns(false).contains(column->name, Qt::CaseInsensitive)) return true; diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp index 286aad7..526ae1b 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp @@ -338,10 +338,10 @@ void TableWindow::executeStructureChanges() MessageListDialog dialog(tr("Following problems will take place while modifying the table.\n" "Would you like to proceed?", "table window")); dialog.setWindowTitle(tr("Table modification", "table window")); - foreach (const QString& error, tableModifier->getErrors()) + for (const QString& error : tableModifier->getErrors()) dialog.addError(error); - foreach (const QString& warn, tableModifier->getWarnings()) + for (const QString& warn : tableModifier->getWarnings()) dialog.addWarning(warn); if (dialog.exec() != QDialog::Accepted) @@ -844,9 +844,9 @@ void TableWindow::changesSuccessfullyCommitted() tableModifier->getModifiedTriggers(), tableModifier->getModifiedViews() }; - foreach (const QStringList& objList, modifiedObjects) + for (const QStringList& objList : modifiedObjects) { - foreach (const QString& obj, objList) + for (const QString& obj : objList) { if (obj.compare(oldTable, Qt::CaseInsensitive) == 0) continue; @@ -996,7 +996,7 @@ bool TableWindow::validate(bool skipWarning) hasPk = true; SqliteCreateTable::Column::Constraint* colConstraint = nullptr; - foreach (SqliteCreateTable::Column* column, createTable->columns) + for (SqliteCreateTable::Column* column : createTable->columns) { colConstraint = column->getConstraint(SqliteCreateTable::Column::Constraint::PRIMARY_KEY); if (colConstraint) @@ -1112,8 +1112,8 @@ void TableWindow::updateDdlTab() void TableWindow::updateNewTableState() { - for (int i = 1; i < 5; i++) - ui->tabWidget->setTabEnabled(i, existingTable); + for (QWidget* tab : {ui->dataTab, ui->constraintsTab, ui->indexesTab, ui->triggersTab}) + ui->tabWidget->setTabEnabled(ui->tabWidget->indexOf(tab), existingTable); actionMap[EXPORT]->setEnabled(existingTable); actionMap[IMPORT]->setEnabled(existingTable); @@ -1466,7 +1466,7 @@ void TableWindow::updateIndexes() QTableWidgetItem* item = nullptr; int row = 0; - foreach (SqliteCreateIndexPtr index, indexes) + for (SqliteCreateIndexPtr index : indexes) { item = new QTableWidgetItem(index->index); item->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable); @@ -1518,7 +1518,7 @@ void TableWindow::updateTriggers() QTableWidgetItem* item = nullptr; QString timeAndEvent; int row = 0; - foreach (SqliteCreateTriggerPtr trig, triggers) + for (SqliteCreateTriggerPtr trig : triggers) { item = new QTableWidgetItem(trig->trigger); item->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp index be805af..c7ec7d8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp @@ -259,6 +259,13 @@ void ViewWindow::init() updateQueryToolbarStatus(); updateTriggersState(); updateColumnButtons(); + updateAfterInit(); +} + +void ViewWindow::updateAfterInit() +{ + for (QWidget* tab : {ui->dataTab, ui->triggersTab}) + ui->tabWidget->setTabEnabled(ui->tabWidget->indexOf(tab), existingView); } void ViewWindow::newView() @@ -624,6 +631,7 @@ void ViewWindow::changesSuccessfullyCommitted() initView(); updateQueryToolbarStatus(); updateWindowTitle(); + updateAfterInit(); if (oldView.compare(view, Qt::CaseInsensitive) == 0) notifyInfo(tr("Committed changes for view '%1' successfully.").arg(view)); @@ -874,7 +882,7 @@ void ViewWindow::refreshTriggers() QTableWidgetItem* item = nullptr; QString event; int row = 0; - foreach (SqliteCreateTriggerPtr trig, triggers) + for (SqliteCreateTriggerPtr trig : triggers) { item = new QTableWidgetItem(trig->trigger); item->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable); @@ -1017,10 +1025,10 @@ void ViewWindow::executeStructureChanges() MessageListDialog dialog(tr("Following problems will take place while modifying the view.\n" "Would you like to proceed?", "view window")); dialog.setWindowTitle(tr("View modification", "view window")); - foreach (const QString& error, viewModifier->getErrors()) + for (const QString& error : viewModifier->getErrors()) dialog.addError(error); - foreach (const QString& warn, viewModifier->getWarnings()) + for (const QString& warn : viewModifier->getWarnings()) dialog.addWarning(warn); if (dialog.exec() != QDialog::Accepted) diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h index 6144ad8..1a8b5b3 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h +++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h @@ -96,6 +96,7 @@ class GUI_API_EXPORT ViewWindow : public MdiChild private: void init(); + void updateAfterInit(); void newView(); void initView(); void setupCoverWidget(); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui index 9112280..8c17205 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui +++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui @@ -29,7 +29,7 @@ <item> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="queryTab"> <attribute name="title"> @@ -143,7 +143,11 @@ </item> </layout> </widget> - <widget class="SqlEditor" name="queryEdit"/> + <widget class="SqlEditor" name="queryEdit"> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + </widget> </widget> </item> </layout> |
