summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp35
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp9
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttableview.h15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h15
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp9
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/configmapper.cpp112
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/configmapper.h16
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp245
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h16
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp179
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h48
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp113
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp38
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h5
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.cpp20
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.h18
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dataview.cpp19
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dataview.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp107
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp232
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h23
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp36
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp61
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp28
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui663
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp52
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.ui8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp564
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.h67
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui149
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.cpp151
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.h47
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.ui83
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro17
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/iconmanager.h8
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/icons.qrc4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/tag_hash_add.pngbin0 -> 825 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/tag_hash_del.pngbin0 -> 764 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/tag_hash_edit.pngbin0 -> 850 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/img/wand.pngbin0 -> 610 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp29
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mainwindow.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp101
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqleditor.h6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/statusfield.cpp6
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qmbin23 -> 135940 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts1802
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts1478
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts419
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.qmbin0 -> 23 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts1478
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts1581
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts1478
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qmbin148822 -> 147413 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts1506
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qmbin95716 -> 101600 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts1629
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qmbin33797 -> 53694 bytes
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts1516
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/uiconfig.h65
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp26
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp145
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h14
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.ui18
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp311
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h30
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui92
80 files changed, 11331 insertions, 5691 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp
new file mode 100644
index 0000000..83d8cc3
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.cpp
@@ -0,0 +1,35 @@
+#include "centerediconitemdelegate.h"
+#include <QApplication>
+#include <QPainter>
+
+CenteredIconItemDelegate::CenteredIconItemDelegate(QObject* parent) :
+ QStyledItemDelegate(parent)
+{
+}
+
+void CenteredIconItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+ if (!index.isValid())
+ return;
+
+ QStyleOptionViewItem opt = option;
+ initStyleOption(&opt, index);
+
+ // disable default icon
+ opt.icon = QIcon();
+ if (opt.features.testFlag(QStyleOptionViewItem::HasDecoration))
+ opt.features ^= QStyleOptionViewItem::HasDecoration;
+
+ // draw default item
+ QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0);
+
+ const QRect r = option.rect;
+
+ // get pixmap
+ QIcon icon = qvariant_cast<QIcon>(index.data(Qt::DecorationRole));
+ QPixmap pix = icon.pixmap(r.size());
+
+ // draw pixmap at center of item
+ const QPoint p = QPoint((r.width() - pix.width()) / 2, (r.height() - pix.height()) / 2);
+ painter->drawPixmap(r.topLeft() + p, pix);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h
new file mode 100644
index 0000000..a1e0103
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/centerediconitemdelegate.h
@@ -0,0 +1,14 @@
+#ifndef CENTEREDICONITEMDELEGATE_H
+#define CENTEREDICONITEMDELEGATE_H
+
+#include <QStyledItemDelegate>
+
+class CenteredIconItemDelegate : public QStyledItemDelegate
+{
+ public:
+ explicit CenteredIconItemDelegate(QObject* parent = nullptr);
+
+ void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
+};
+
+#endif // CENTEREDICONITEMDELEGATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
index bd0bffa..ccbc586 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.cpp
@@ -55,10 +55,17 @@ void ExtLineEdit::setClearButtonEnabled(bool enable)
qWarning() << "Could not find 'clear action' in QLineEdit, so 'valueErased()' signal won't be emitted from ExtLineEdit.";
return;
}
- connect(clearAction, SIGNAL(triggered()), this, SIGNAL(valueErased()));
+ connect(clearAction, SIGNAL(triggered()), this, SLOT(checkForValueErased()));
}
}
+void ExtLineEdit::checkForValueErased()
+{
+ if (text().isEmpty())
+ return;
+
+ emit valueErased();
+}
bool ExtLineEdit::getExpanding() const
{
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
index b3bffbb..df2eaf6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
+++ b/SQLiteStudio3/guiSQLiteStudio/common/extlineedit.h
@@ -37,6 +37,7 @@ class GUI_API_EXPORT ExtLineEdit : public QLineEdit
private slots:
void handleTextChanged();
+ void checkForValueErased();
signals:
void valueErased();
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp
new file mode 100644
index 0000000..f12e557
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.cpp
@@ -0,0 +1,14 @@
+#include "exttableview.h"
+#include <QMouseEvent>
+
+ExtTableView::ExtTableView(QWidget* parent) :
+ QTableView(parent)
+{
+
+}
+
+void ExtTableView::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ QModelIndex index = indexAt(e->pos());
+ emit doubleClicked(index);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h
new file mode 100644
index 0000000..06e597c
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttableview.h
@@ -0,0 +1,15 @@
+#ifndef EXTTABLEVIEW_H
+#define EXTTABLEVIEW_H
+
+#include <QTableView>
+
+class ExtTableView : public QTableView
+{
+ public:
+ explicit ExtTableView(QWidget* parent = nullptr);
+
+ protected:
+ void mouseDoubleClickEvent(QMouseEvent* e);
+};
+
+#endif // EXTTABLEVIEW_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp
new file mode 100644
index 0000000..8bba429
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.cpp
@@ -0,0 +1,15 @@
+#include "exttablewidget.h"
+
+#include <QMouseEvent>
+
+ExtTableWidget::ExtTableWidget(QWidget* parent) :
+ QTableWidget(parent)
+{
+
+}
+
+void ExtTableWidget::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ QModelIndex index = indexAt(e->pos());
+ emit doubleClicked(index);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h
new file mode 100644
index 0000000..719e064
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/common/exttablewidget.h
@@ -0,0 +1,15 @@
+#ifndef EXTTABLEWIDGET_H
+#define EXTTABLEWIDGET_H
+
+#include <QTableWidget>
+
+class ExtTableWidget : public QTableWidget
+{
+ public:
+ explicit ExtTableWidget(QWidget* parent = nullptr);
+
+ protected:
+ void mouseDoubleClickEvent(QMouseEvent* e);
+};
+
+#endif // EXTTABLEWIDGET_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp b/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
index e1b6620..ff49cd2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/common/numericspinbox.cpp
@@ -112,6 +112,15 @@ QAbstractSpinBox::StepEnabled NumericSpinBox::stepEnabled() const
QVariant NumericSpinBox::getFixedVariant(const QVariant& value)
{
+ if (allowEmpty)
+ {
+ if (value.userType() == QVariant::String && value.toString().isEmpty() && !value.isNull())
+ return "";
+
+ if (value.isNull())
+ return QString();
+ }
+
bool ok;
qint64 longVal = value.toLongLong(&ok);
if (ok)
diff --git a/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp b/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp
index da1ff44..8543d37 100644
--- a/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/configmapper.cpp
@@ -92,7 +92,6 @@ ConfigMapper::ConfigMapper(const QList<CfgMain*> cfgMain) :
{
}
-
void ConfigMapper::applyCommonConfigToWidget(QWidget *widget, const QVariant &value, CfgEntry* cfgEntry)
{
APPLY_CFG(widget, value, QCheckBox, setChecked, bool);
@@ -221,6 +220,20 @@ QVariant ConfigMapper::getConfigValueFromWidget(QWidget* widget, CfgEntry* key)
return value;
}
+QVariant ConfigMapper::getConfigValueFromWidget(QWidget* widget)
+{
+ QString keyStr = widget->property(CFG_MODEL_PROPERTY).toString();
+ QHash<QString, CfgEntry*> allConfigEntries = getAllConfigEntries();
+ if (!allConfigEntries.contains(keyStr))
+ {
+ qWarning() << "Asked for config value from widget" << widget << "but it's config entry key was not found:" << keyStr;
+ return QVariant();
+ }
+
+ CfgEntry* key = allConfigEntries[keyStr];
+ return getConfigValueFromWidget(widget, key);
+}
+
void ConfigMapper::loadToWidget(QWidget *topLevelWidget)
{
QHash<QString, CfgEntry *> allConfigEntries = getAllConfigEntries();
@@ -231,10 +244,13 @@ void ConfigMapper::loadToWidget(QWidget *topLevelWidget)
config = CFG->getAll();
updatingEntry = true;
- foreach (QWidget* widget, allConfigWidgets)
+ for (QWidget* widget : allConfigWidgets)
applyConfigToWidget(widget, allConfigEntries, config);
updatingEntry = false;
+
+ for (QWidget* widget : allConfigWidgets)
+ handleDependencySettings(widget);
}
void ConfigMapper::loadToWidget(CfgEntry* config, QWidget* widget)
@@ -247,6 +263,8 @@ void ConfigMapper::loadToWidget(CfgEntry* config, QWidget* widget)
applyCommonConfigToWidget(widget, configValue, config);
updatingEntry = false;
+
+ handleDependencySettings(widget);
}
void ConfigMapper::saveFromWidget(QWidget *widget, bool noTransaction)
@@ -310,6 +328,20 @@ void ConfigMapper::applyConfigToWidget(QWidget* widget, CfgEntry* cfgEntry, cons
applyCommonConfigToWidget(widget, configValue, cfgEntry);
}
+void ConfigMapper::applyConfigDefaultValueToWidget(QWidget* widget)
+{
+ QString keyStr = widget->property(CFG_MODEL_PROPERTY).toString();
+ QHash<QString, CfgEntry*> allConfigEntries = getAllConfigEntries();
+ if (!allConfigEntries.contains(keyStr))
+ {
+ qWarning() << "Asked to apply config value to widget" << widget << "but it's config entry key was not found:" << keyStr;
+ return;
+ }
+
+ CfgEntry* key = allConfigEntries[keyStr];
+ applyConfigToWidget(widget, key, key->getDefultValue());
+}
+
void ConfigMapper::handleSpecialWidgets(QWidget* widget, const QHash<QString, CfgEntry*>& allConfigEntries)
{
handleConfigComboBox(widget, allConfigEntries);
@@ -474,7 +506,7 @@ QList<QWidget*> ConfigMapper::getAllConfigWidgets(QWidget *parent)
foreach (QObject* obj, parent->children())
{
widget = qobject_cast<QWidget*>(obj);
- if (!widget)
+ if (!widget || widgetsToIgnore.contains(widget))
continue;
results += getAllConfigWidgets(widget);
@@ -486,6 +518,60 @@ QList<QWidget*> ConfigMapper::getAllConfigWidgets(QWidget *parent)
return results;
}
+void ConfigMapper::handleDependencySettings(QWidget* widget)
+{
+ QString boolDependency = widget->property(CFG_BOOL_DEPENDENCY_PROPERTY).toString();
+ if (!boolDependency.isNull())
+ {
+ handleBoolDependencySettings(boolDependency, widget);
+ return;
+ }
+}
+
+void ConfigMapper::handleBoolDependencySettings(const QString& boolDependency, QWidget* widget)
+{
+ QHash<QString, CfgEntry*> allConfigEntries = getAllConfigEntries();
+ if (!allConfigEntries.contains(boolDependency))
+ {
+ qWarning() << "Config widget" << widget->objectName() << "has dependency defined for" << boolDependency << "but that dependency config entry cannot be found.";
+ return;
+ }
+
+ CfgEntry* cfg = allConfigEntries[boolDependency];
+ QVariant cfgValue = cfg->get();
+ if (cfgValue.userType() != QVariant::Bool)
+ {
+ qWarning() << "Config widget" << widget->objectName() << "has bool dependency defined for" << boolDependency << "but that dependency has different type:" << cfgValue.userType();
+ return;
+ }
+
+ bool value = cfgValue.toBool();
+ widget->setEnabled(value);
+
+ QWidget* dependWidget = configEntryToWidgets[cfg];
+ boolDependencyToDependingWidget[dependWidget] = widget;
+}
+
+void ConfigMapper::handleDependencyChange(QWidget* widget)
+{
+ if (handleBoolDependencyChange(widget))
+ return;
+}
+
+bool ConfigMapper::handleBoolDependencyChange(QWidget* widget)
+{
+ if (!boolDependencyToDependingWidget.contains(widget))
+ return false;
+
+ QWidget* depWid = boolDependencyToDependingWidget[widget];
+ bool value = getConfigValueFromWidget(widget).toBool();
+ depWid->setEnabled(value);
+ if (!value)
+ applyConfigDefaultValueToWidget(depWid);
+
+ return true;
+}
+
bool ConfigMapper::isPersistant() const
{
for (CfgMain* cfgMain : cfgMainList)
@@ -520,11 +606,21 @@ void ConfigMapper::clearExtraWidgets()
extraWidgets.clear();
}
+void ConfigMapper::ignoreWidget(QWidget* w)
+{
+ widgetsToIgnore << w;
+}
+
+void ConfigMapper::removeIgnoredWidget(QWidget* w)
+{
+ widgetsToIgnore.removeOne(w);
+}
+
void ConfigMapper::handleModified()
{
+ QWidget* widget = dynamic_cast<QWidget*>(sender());
if (realTimeUpdates && !updatingEntry)
{
- QWidget* widget = dynamic_cast<QWidget*>(sender());
if (widget && widgetToConfigEntry.contains(widget))
{
updatingEntry = true;
@@ -532,6 +628,9 @@ void ConfigMapper::handleModified()
updatingEntry = false;
}
}
+
+ handleDependencyChange(widget);
+
emit modified();
}
@@ -639,6 +738,11 @@ void ConfigMapper::unbindFromConfig()
realTimeUpdates = false;
}
+void ConfigMapper::removeMainCfgEntry(CfgMain* cfgMain)
+{
+ cfgMainList.removeOne(cfgMain);
+}
+
QWidget* ConfigMapper::getBindWidgetForConfig(CfgEntry* key) const
{
if (configEntryToWidgets.contains(key))
diff --git a/SQLiteStudio3/guiSQLiteStudio/configmapper.h b/SQLiteStudio3/guiSQLiteStudio/configmapper.h
index 049d25a..47c1087 100644
--- a/SQLiteStudio3/guiSQLiteStudio/configmapper.h
+++ b/SQLiteStudio3/guiSQLiteStudio/configmapper.h
@@ -4,6 +4,7 @@
#include "common/bihash.h"
#include "guiSQLiteStudio_global.h"
#include <QObject>
+#include <QSet>
class CfgMain;
class CfgEntry;
@@ -22,6 +23,7 @@ class GUI_API_EXPORT ConfigMapper : public QObject
void loadToWidget(CfgEntry* config, QWidget* widget);
void saveFromWidget(QWidget* widget, bool noTransaction = false);
void setInternalCustomConfigWidgets(const QList<CustomConfigWidgetPlugin*>& value);
+ bool isPersistant() const;
/**
* @brief Scans widget and binds widgets to proper config objects.
@@ -49,6 +51,7 @@ class GUI_API_EXPORT ConfigMapper : public QObject
* This simply revokes what was done with bindToConfig().
*/
void unbindFromConfig();
+ void removeMainCfgEntry(CfgMain* cfgMain);
QWidget* getBindWidgetForConfig(CfgEntry* key) const;
CfgEntry* getBindConfigForWidget(QWidget* widget) const;
@@ -69,10 +72,13 @@ class GUI_API_EXPORT ConfigMapper : public QObject
void addExtraWidget(QWidget* w);
void addExtraWidgets(const QList<QWidget*>& list);
void clearExtraWidgets();
+ void ignoreWidget(QWidget* w);
+ void removeIgnoredWidget(QWidget* w);
private:
void applyConfigToWidget(QWidget *widget, const QHash<QString, CfgEntry*>& allConfigEntries, const QHash<QString, QVariant> &config);
void applyConfigToWidget(QWidget *widget, CfgEntry* cfgEntry, const QVariant& configValue);
+ void applyConfigDefaultValueToWidget(QWidget *widget);
void handleSpecialWidgets(QWidget *widget, const QHash<QString, CfgEntry*>& allConfigEntries);
void handleConfigComboBox(QWidget *widget, const QHash<QString, CfgEntry*>& allConfigEntries);
void connectCommonNotifierToWidget(QWidget *widget, CfgEntry* key);
@@ -86,12 +92,17 @@ class GUI_API_EXPORT ConfigMapper : public QObject
QVariant getCommonConfigValueFromWidget(QWidget *widget, CfgEntry* key, bool& ok);
QVariant getCustomConfigValueFromWidget(QWidget *widget, CfgEntry* key, bool& ok);
QVariant getConfigValueFromWidget(QWidget *widget, CfgEntry* key);
+ QVariant getConfigValueFromWidget(QWidget *widget);
CfgEntry* getConfigEntry(QWidget* widget, const QHash<QString, CfgEntry*>& allConfigEntries);
CfgEntry* getEntryForProperty(QWidget* widget, const char* propertyName, const QHash<QString, CfgEntry*>& allConfigEntries);
QHash<QString,CfgEntry*> getAllConfigEntries();
QList<QWidget*> getAllConfigWidgets(QWidget* parent);
- bool isPersistant() const;
+ void handleDependencySettings(QWidget* widget);
+ void handleBoolDependencySettings(const QString& boolDependency, QWidget* widget);
+ void handleDependencyChange(QWidget* widget);
+ bool handleBoolDependencyChange(QWidget* widget);
+ QWidget* configDialogWidget = nullptr;
QList<CfgMain*> cfgMainList;
QList<CustomConfigWidgetPlugin*> internalCustomConfigWidgets;
bool realTimeUpdates = false;
@@ -100,9 +111,12 @@ class GUI_API_EXPORT ConfigMapper : public QObject
QHash<CfgEntry*,QWidget*> specialConfigEntryToWidgets;
bool updatingEntry = false;
QList<QWidget*> extraWidgets;
+ QList<QWidget*> widgetsToIgnore; // main mapper will ignore plugin's forms, they have their own mappers
QHash<QString, CfgEntry*> allEntries;
+ QHash<QWidget*, QWidget*> boolDependencyToDependingWidget;
static constexpr const char* CFG_MODEL_PROPERTY = "cfg";
+ static constexpr const char* CFG_BOOL_DEPENDENCY_PROPERTY = "boolDependency";
static constexpr const char* CFG_NOTIFY_PROPERTY = "notify";
static constexpr const char* CFG_PREVIEW_PROPERTY = "preview";
diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
index 4f402b2..9322117 100644
--- a/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/constraints/columndefaultpanel.cpp
@@ -106,6 +106,7 @@ void ColumnDefaultPanel::constraintAvailable()
readConstraint();
updateVirtualSql();
+ validateOnly();
}
void ColumnDefaultPanel::storeConfiguration()
@@ -237,7 +238,7 @@ void ColumnDefaultPanel::readConstraint()
}
else if (!constr->id.isNull())
{
- ui->exprEdit->setPlainText(constr->id);
+ ui->exprEdit->setPlainText(wrapObjIfNeeded(constr->id, db->getDialect(), true));
currentMode = Mode::LITERAL;
}
else if (!constr->ctime.isNull())
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
index 9b8dd03..be26d9f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp
@@ -3,6 +3,7 @@
#include "sqlquerymodel.h"
#include "iconmanager.h"
#include "uiconfig.h"
+#include "sqlqueryview.h"
#include <QDate>
#include <QDebug>
@@ -382,6 +383,9 @@ QVariant SqlQueryItem::data(int role) const
}
case Qt::ToolTipRole:
{
+ if (!CFG_UI.General.ShowDataViewTooltips.get() || getModel()->getView()->getSimpleBrowserMode())
+ return QVariant();
+
return getToolTip();
}
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
index 920ddda..19090ad 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
@@ -6,12 +6,17 @@
#include "sqlqueryview.h"
#include "uiconfig.h"
#include "common/utils_sql.h"
+#include "schemaresolver.h"
#include <QHeaderView>
#include <QPainter>
#include <QEvent>
#include <QLineEdit>
#include <QDebug>
#include <QComboBox>
+#include <QApplication>
+#include <QVBoxLayout>
+#include <QResizeEvent>
+#include <QScrollBar>
SqlQueryItemDelegate::SqlQueryItemDelegate(QObject *parent) :
QStyledItemDelegate(parent)
@@ -66,7 +71,7 @@ QString SqlQueryItemDelegate::displayText(const QVariant& value, const QLocale&
UNUSED(locale);
if (value.type() == QVariant::Double)
- return value.toString();
+ return doubleToString(value.toDouble());
return QStyledItemDelegate::displayText(value, locale);
}
@@ -74,12 +79,14 @@ QString SqlQueryItemDelegate::displayText(const QVariant& value, const QLocale&
void SqlQueryItemDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
{
QComboBox* cb = dynamic_cast<QComboBox*>(editor);
- if (!cb) {
+ QLineEdit* le = dynamic_cast<QLineEdit*>(editor);
+ if (cb) {
+ setEditorDataForFk(cb, index);
+ } else if (le) {
+ setEditorDataForLineEdit(le, index);
+ } else {
QStyledItemDelegate::setEditorData(editor, index);
- return;
}
-
- setEditorDataForFk(cb, index);
}
void SqlQueryItemDelegate::setEditorDataForFk(QComboBox* cb, const QModelIndex& index) const
@@ -93,7 +100,7 @@ void SqlQueryItemDelegate::setEditorDataForFk(QComboBox* cb, const QModelIndex&
cb->addItem(modelData.toString(), modelData);
idx = cb->count() - 1;
- QTableView* view = dynamic_cast<QTableView*>(cb->view());
+ SqlQueryView* view = dynamic_cast<SqlQueryView*>(cb->view());
view->resizeColumnsToContents();
view->setMinimumWidth(view->horizontalHeader()->length());
}
@@ -103,23 +110,72 @@ void SqlQueryItemDelegate::setEditorDataForFk(QComboBox* cb, const QModelIndex&
void SqlQueryItemDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
{
QComboBox* cb = dynamic_cast<QComboBox*>(editor);
- if (!cb) {
+ QLineEdit* le = dynamic_cast<QLineEdit*>(editor);
+ if (cb) {
+ setModelDataForFk(cb, model, index);
+ } else if (le) {
+ setModelDataForLineEdit(le, model, index);
+ } else {
QStyledItemDelegate::setModelData(editor, model, index);
- return;
}
- setModelDataForFk(cb, model, index);
+ SqlQueryModel* queryModel = const_cast<SqlQueryModel*>(dynamic_cast<const SqlQueryModel*>(index.model()));
+ queryModel->notifyItemEditionEnded(index);
}
void SqlQueryItemDelegate::setModelDataForFk(QComboBox* cb, QAbstractItemModel* model, const QModelIndex& index) const
{
- QVariant comboData = cb->currentData();
- if (cb->currentText() != cb->itemText(cb->currentIndex()))
+ SqlQueryModel* cbModel = dynamic_cast<SqlQueryModel*>(cb->model());
+ if (cbModel->isExecutionInProgress() || !cbModel->isAllDataLoaded())
+ return;
+
+ int idx = cb->currentIndex();
+ if (idx < 0 || idx >= cbModel->rowCount())
+ {
+ model->setData(index, cb->currentText());
+ return;
+ }
+
+ QVariant comboData = cbModel->getRow(idx)[0]->getValue();
+ if (cb->currentText() != comboData.toString())
comboData = cb->currentText();
model->setData(index, comboData);
}
+void SqlQueryItemDelegate::setModelDataForLineEdit(QLineEdit* editor, QAbstractItemModel* model, const QModelIndex& index) const
+{
+ QString value = editor->text();
+ 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);
+}
+
+void SqlQueryItemDelegate::setEditorDataForLineEdit(QLineEdit* le, const QModelIndex& index) const
+{
+ QVariant value = index.data(Qt::EditRole);
+ if (value.userType() == QVariant::Double)
+ {
+ le->setText(doubleToString(value.toDouble()));
+ return;
+ }
+
+ le->setText(value.toString());
+}
+
SqlQueryItem* SqlQueryItemDelegate::getItem(const QModelIndex &index) const
{
const SqlQueryModel* queryModel = dynamic_cast<const SqlQueryModel*>(index.model());
@@ -137,16 +193,25 @@ QWidget* SqlQueryItemDelegate::getEditor(int type, QWidget* parent) const
QString SqlQueryItemDelegate::getSqlForFkEditor(SqlQueryItem* item) const
{
- QString sql = QStringLiteral("SELECT %1 FROM %2%3");
- QStringList selCols;
- QStringList fkTables;
- QStringList fkCols;
+ static_qstring(sql, "SELECT %1 FROM %2%3");
+ static_qstring(srcColTpl, "%1 AS %2");
+ static_qstring(dbColTpl, "%1.%2 AS %3");
+ static_qstring(conditionTpl, "%1.%2 = %3.%4");
+ static_qstring(conditionPrefixTpl, " WHERE %1");
+ static_qstring(cellLimitTpl, "substr(%2, 0, %1)");
+
+ QStringList selectedCols;
+ QStringList fkConfitionTables;
+ QStringList fkConditionCols;
+ QStringList srcCols;
Db* db = item->getModel()->getDb();
Dialect dialect = db->getDialect();
+ SchemaResolver resolver(db);
QList<SqlQueryModelColumn::ConstraintFk*> fkList = item->getColumn()->getFkConstraints();
int i = 0;
QString src;
+ QString fullSrcCol;
QString col;
for (SqlQueryModelColumn::ConstraintFk* fk : fkList)
{
@@ -154,100 +219,138 @@ QString SqlQueryItemDelegate::getSqlForFkEditor(SqlQueryItem* item) const
src = wrapObjIfNeeded(fk->foreignTable, dialect);
if (i == 0)
{
- selCols << QString("%1.%2 AS %3").arg(src, col,
+ selectedCols << dbColTpl.arg(src, col,
wrapObjIfNeeded(item->getColumn()->column, dialect));
}
- selCols << src + ".*";
- fkCols << col;
- fkTables << src;
+ srcCols = resolver.getTableColumns(src);
+ for (const QString& srcCol : srcCols)
+ {
+ if (fk->foreignColumn.compare(srcCol, Qt::CaseInsensitive) == 0)
+ continue; // Exclude matching column. We don't want the same column several times.
+
+ fullSrcCol = src + "." + srcCol;
+ selectedCols << srcColTpl.arg(cellLimitTpl.arg(CELL_LENGTH_LIMIT).arg(fullSrcCol), wrapObjName(fullSrcCol, dialect));
+ }
+
+ fkConditionCols << col;
+ fkConfitionTables << src;
i++;
}
QStringList conditions;
- QString firstSrc = wrapObjIfNeeded(fkTables.first(), dialect);
- QString firstCol = wrapObjIfNeeded(fkCols.first(), dialect);
- for (i = 1; i < fkTables.size(); i++)
+ QString firstSrc = wrapObjIfNeeded(fkConfitionTables.first(), dialect);
+ QString firstCol = wrapObjIfNeeded(fkConditionCols.first(), dialect);
+ for (i = 1; i < fkConfitionTables.size(); i++)
{
- src = wrapObjIfNeeded(fkTables[i], dialect);
- col = wrapObjIfNeeded(fkCols[i], dialect);
- conditions << QString("%1.%2 = %3.%4").arg(firstSrc, firstCol, src, col);
+ src = wrapObjIfNeeded(fkConfitionTables[i], dialect);
+ col = wrapObjIfNeeded(fkConditionCols[i], dialect);
+ conditions << conditionTpl.arg(firstSrc, firstCol, src, col);
}
QString conditionsStr;
if (!conditions.isEmpty()) {
- conditionsStr = " WHERE " + conditions.join(", ");
+ conditionsStr = conditionPrefixTpl.arg(conditions.join(", "));
}
- return sql.arg(selCols.join(", "), fkTables.join(", "), conditionsStr);
+ return sql.arg(selectedCols.join(", "), fkConfitionTables.join(", "), conditionsStr);
}
-void SqlQueryItemDelegate::copyToModel(const SqlQueryPtr& results, QStandardItemModel* model) const
+qlonglong SqlQueryItemDelegate::getRowCountForFkEditor(Db* db, const QString& query) const
{
- QList<SqlResultsRowPtr> rows = results->getAll();
- int colCount = results->columnCount();
- int rowCount = rows.size() + 1;
+ static_qstring(tpl, "SELECT count(*) FROM (%1)");
- model->setColumnCount(colCount);
- model->setRowCount(rowCount);
- int colIdx = 0;
- int rowIdx = 0;
- for (const QString& colName : results->getColumnNames())
- {
- model->setHeaderData(colIdx, Qt::Horizontal, colName);
-
- QStandardItem *item = new QStandardItem();
- QFont font = item->font();
- font.setItalic(true);
- item->setFont(font);
- item->setForeground(QBrush(CFG_UI.Colors.DataNullFg.get()));
- item->setData(QVariant(QVariant::String), Qt::EditRole);
- item->setData(QVariant(QVariant::String), Qt::UserRole);
- model->setItem(0, colIdx, item);
- colIdx++;
- }
- rowIdx++;
+ QString sql = tpl.arg(query);
+ SqlQueryPtr result = db->exec(sql);
+ return result->getSingleCell().toLongLong();
+}
- for (const SqlResultsRowPtr& row : rows)
- {
- colIdx = 0;
- for (const QVariant& val : row->valueList())
- {
- QStandardItem *item = new QStandardItem();
- item->setText(val.toString());
- item->setData(val, Qt::UserRole);
- model->setItem(rowIdx, colIdx, item);
- colIdx++;
- }
- rowIdx++;
- }
+void SqlQueryItemDelegate::fkDataReady()
+{
+ SqlQueryModel* model = dynamic_cast<SqlQueryModel*>(sender());
+ SqlQueryView* queryView = model->getView();
+
+ queryView->resizeColumnsToContents();
+ queryView->resizeRowsToContents();
+
+ int wd = queryView->horizontalHeader()->length();
+ if (model->rowCount() > 10) // 10 is default visible item count for combobox
+ wd += queryView->verticalScrollBar()->sizeHint().width();
+
+ queryView->setMinimumWidth(wd);
+
+ // Set selected combo value to initial value from the cell
+ QComboBox* cb = modelToFkCombo[model];
+ QVariant value = modelToFkInitialValue[model];
+ QModelIndexList idxList = model->findIndexes(SqlQueryItem::DataRole::VALUE, value, 1);
+
+ int idx = 0;
+ if (idxList.size() > 0)
+ idx = idxList.first().row();
+
+ cb->setCurrentIndex(idx);
}
QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent) const
{
QString sql = getSqlForFkEditor(item);
+ Db* db = item->getModel()->getDb();
+ qlonglong rowCount = getRowCountForFkEditor(db, sql);
+ if (rowCount > MAX_ROWS_FOR_FK)
+ {
+ notifyWarn(tr("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.")
+ .arg(MAX_ROWS_FOR_FK).arg(item->getColumn()->column));
+
+ return getEditor(item->getValue().userType(), parent);
+ }
+
QComboBox *cb = new QComboBox(parent);
cb->setEditable(true);
- QTableView* queryView = new QTableView();
- QStandardItemModel* model = new QStandardItemModel(queryView);
- Db* db = item->getModel()->getDb();
- SqlQueryPtr results = db->exec(sql);
- copyToModel(results, model);
+ // Prepare combo dropdown view.
+ SqlQueryView* queryView = new SqlQueryView();
+ queryView->setSimpleBrowserMode(true);
+ connect(queryView->horizontalHeader(), &QHeaderView::sectionResized, [queryView](int, int, int)
+ {
+ int wd = queryView->horizontalHeader()->length();
+ if (queryView->verticalScrollBar()->isVisible())
+ wd += queryView->verticalScrollBar()->width();
+
+ queryView->setMinimumWidth(wd);
+ });
+ SqlQueryModel* model = new SqlQueryModel(queryView);
+ model->setView(queryView);
+
+ // Mapping of model to cb, so we can update combo when data arrives.
+ modelToFkInitialValue[model] = item->getValue();
+ modelToFkCombo[model] = cb;
+ connect(cb, &QComboBox::destroyed, [this, model](QObject*)
+ {
+ modelToFkCombo.remove(model);
+ modelToFkInitialValue.remove(model);
+ });
+
+ // When execution is done, update combo.
+ connect(model, SIGNAL(executionSuccessful()), this, SLOT(fkDataReady()));
+
+ // Setup combo, model, etc.
cb->setModel(model);
cb->setView(queryView);
cb->setModelColumn(0);
+ model->setHardRowLimit(MAX_ROWS_FOR_FK);
+ model->setDb(db);
+ model->setQuery(sql);
+ model->executeQuery();
+
queryView->verticalHeader()->setVisible(false);
queryView->horizontalHeader()->setVisible(true);
queryView->setSelectionMode(QAbstractItemView::SingleSelection);
queryView->setSelectionBehavior(QAbstractItemView::SelectRows);
- queryView->resizeColumnsToContents();
- queryView->resizeRowsToContents();
- queryView->setMinimumWidth(queryView->horizontalHeader()->length());
return cb;
}
+
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
index d79ebaf..82d12c3 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
@@ -4,10 +4,12 @@
#include "guiSQLiteStudio_global.h"
#include "db/sqlquery.h"
#include <QStyledItemDelegate>
+#include <QSet>
class SqlQueryItem;
class QComboBox;
class QStandardItemModel;
+class SqlQueryModel;
class GUI_API_EXPORT SqlQueryItemDelegate : public QStyledItemDelegate
{
@@ -25,10 +27,22 @@ class GUI_API_EXPORT SqlQueryItemDelegate : public QStyledItemDelegate
SqlQueryItem* getItem(const QModelIndex &index) const;
QWidget* getEditor(int type, QWidget* parent) const;
QWidget* getFkEditor(SqlQueryItem* item, QWidget* parent) const;
+ void setEditorDataForLineEdit(QLineEdit* le, const QModelIndex& index) const;
void setEditorDataForFk(QComboBox* cb, const QModelIndex& index) const;
void setModelDataForFk(QComboBox* editor, QAbstractItemModel* model, const QModelIndex& index) const;
+ void setModelDataForLineEdit(QLineEdit* editor, QAbstractItemModel* model, const QModelIndex& index) const;
QString getSqlForFkEditor(SqlQueryItem* item) const;
- void copyToModel(const SqlQueryPtr& results, QStandardItemModel* model) const;
+ qlonglong getRowCountForFkEditor(Db* db, const QString& query) const;
+
+ QSet<QWidget*> editorsWithAsyncExecution;
+ mutable QHash<SqlQueryModel*, QComboBox*> modelToFkCombo;
+ mutable QHash<SqlQueryModel*, QVariant> modelToFkInitialValue;
+
+ static const qlonglong MAX_ROWS_FOR_FK = 10000L;
+ static const int CELL_LENGTH_LIMIT = 30;
+
+ private slots:
+ void fkDataReady();
};
#endif // SQLQUERYITEMDELEGATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
index 6717c14..15cf1bf 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
@@ -11,6 +11,7 @@
#include "datagrid/sqlqueryview.h"
#include "datagrid/sqlqueryrownummodel.h"
#include "services/dbmanager.h"
+#include "querygenerator.h"
#include <QHeaderView>
#include <QDebug>
#include <QApplication>
@@ -19,6 +20,9 @@
#include <QTime>
#include <QtMath>
#include <QMessageBox>
+#include <QThread>
+
+QSet<SqlQueryModel*> SqlQueryModel::existingModels;
SqlQueryModel::SqlQueryModel(QObject *parent) :
QStandardItemModel(parent)
@@ -29,10 +33,13 @@ SqlQueryModel::SqlQueryModel(QObject *parent) :
connect(queryExecutor, SIGNAL(executionFailed(int,QString)), this, SLOT(handleExecFailed(int,QString)));
connect(queryExecutor, SIGNAL(resultsCountingFinished(quint64,quint64,int)), this, SLOT(resultsCountingFinished(quint64,quint64,int)));
setItemPrototype(new SqlQueryItem());
+ existingModels << this;
}
SqlQueryModel::~SqlQueryModel()
{
+ existingModels.remove(this);
+
delete queryExecutor;
queryExecutor = nullptr;
}
@@ -109,7 +116,7 @@ void SqlQueryModel::executeQueryInternal()
emit executionStarted();
queryExecutor->setQuery(query);
- queryExecutor->setResultsPerPage(CFG_UI.General.NumberOfRowsPerPage.get());
+ queryExecutor->setResultsPerPage(getRowsPerPage());
queryExecutor->setExplainMode(explain);
queryExecutor->setPreloadResults(true);
queryExecutor->exec();
@@ -345,30 +352,7 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
return;
}
- dbNameToAttachNameMapForCommit.clear();
- QList<Db*> dbListToDetach;
- QString attachName;
- for (const QString& reqAttach : queryExecutor->getRequiredDbAttaches())
- {
- Db* attachDb = DBLIST->getByName(reqAttach, Qt::CaseInsensitive);
- if (!attachDb)
- {
- qCritical() << "Could not resolve database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
- << "This may result in errors when commiting some data modifications.";
- continue;
- }
-
- attachName = db->attach(attachDb);
- if (attachName.isNull())
- {
- qCritical() << "Could not attach database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
- << "This may result in errors when commiting some data modifications.";
- continue;
- }
-
- dbNameToAttachNameMapForCommit[reqAttach] = attachName;
- dbListToDetach << attachDb;
- }
+ attachDependencyTables();
if (!db->begin())
{
@@ -448,10 +432,7 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items)
}
}
- dbNameToAttachNameMapForCommit.clear();
- for (Db* dbToDetach : dbListToDetach)
- db->detach(dbToDetach);
-
+ detachDependencyTables();
// Updating added/deleted counts, to honor rows not deleted because of some errors
numberOfItemsAdded -= groupItemsByRows(findItems(SqlQueryItem::DataRole::NEW_ROW, true)).size();
@@ -492,6 +473,76 @@ void SqlQueryModel::reloadInternal()
executeQueryInternal();
}
+StrHash<QString> SqlQueryModel::attachDependencyTables()
+{
+ dbNameToAttachNameMapForCommit.clear();
+ dbListToDetach.clear();
+
+ QString attachName;
+ for (const QString& reqAttach : queryExecutor->getRequiredDbAttaches())
+ {
+ Db* attachDb = DBLIST->getByName(reqAttach, Qt::CaseInsensitive);
+ if (!attachDb)
+ {
+ qCritical() << "Could not resolve database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
+ << "This may result in errors when commiting some data modifications.";
+ continue;
+ }
+
+ attachName = db->attach(attachDb);
+ if (attachName.isNull())
+ {
+ qCritical() << "Could not attach database" << reqAttach << ", while it's a required attach name for SqlQueryModel to commit edited data!"
+ << "This may result in errors when commiting some data modifications.";
+ continue;
+ }
+
+ dbNameToAttachNameMapForCommit[reqAttach] = attachName;
+ dbListToDetach << attachDb;
+ }
+
+ return dbNameToAttachNameMapForCommit;
+}
+
+void SqlQueryModel::detachDependencyTables()
+{
+ for (Db* dbToDetach : dbListToDetach)
+ db->detach(dbToDetach);
+
+ dbNameToAttachNameMapForCommit.clear();
+ dbListToDetach.clear();
+}
+
+QString SqlQueryModel::generateSelectQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ BiStrHash attachMap = BiStrHash(attachDependencyTables().toQHash());
+ QString sql = generator.generateSelectFromSelect(db, getQuery(), values, attachMap);
+ detachDependencyTables();
+
+ return sql;
+}
+
+QString SqlQueryModel::generateInsertQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ UNUSED(items);
+ return QString();
+}
+
+QString SqlQueryModel::generateUpdateQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ UNUSED(items);
+ return QString();
+}
+
+QString SqlQueryModel::generateDeleteQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ UNUSED(items);
+ return QString();
+}
+
SqlQueryView* SqlQueryModel::getView() const
{
return view;
@@ -681,11 +732,12 @@ QList<SqlQueryModelColumnPtr> SqlQueryModel::getTableColumnModels(const QString&
return getTableColumnModels("main", table);
}
-void SqlQueryModel::loadData(SqlQueryPtr results)
+bool SqlQueryModel::loadData(SqlQueryPtr results)
{
if (rowCount() > 0)
clear();
+ allDataLoaded = false;
view->horizontalHeader()->show();
// Read columns first. It will be needed later.
@@ -694,11 +746,10 @@ void SqlQueryModel::loadData(SqlQueryPtr results)
// Load data
SqlResultsRowPtr row;
int rowIdx = 0;
- int rowsPerPage = CFG_UI.General.NumberOfRowsPerPage.get();
+ int rowsPerPage = getRowsPerPage();
rowNumBase = getCurrentPage() * rowsPerPage + 1;
updateColumnHeaderLabels();
- QList<QStandardItem*> itemList;
QList<QList<QStandardItem*>> rowList;
while (results->hasNext() && rowIdx < rowsPerPage)
{
@@ -706,12 +757,14 @@ void SqlQueryModel::loadData(SqlQueryPtr results)
if (!row)
break;
- itemList = loadRow(row);
- //insertRow(rowIdx, itemList);
- rowList << itemList;
+ rowList << loadRow(row);
if ((rowIdx % 50) == 0)
+ {
qApp->processEvents();
+ if (!existingModels.contains(this))
+ return false;
+ }
rowIdx++;
}
@@ -719,6 +772,9 @@ void SqlQueryModel::loadData(SqlQueryPtr results)
rowIdx = 0;
for (const QList<QStandardItem*>& row : rowList)
insertRow(rowIdx++, row);
+
+ allDataLoaded = true;
+ return true;
}
QList<QStandardItem*> SqlQueryModel::loadRow(SqlResultsRowPtr row)
@@ -846,6 +902,20 @@ void SqlQueryModel::updateRowIdForAllItems(const AliasedTable& table, const RowI
}
}
+QHash<QString, QVariantList> SqlQueryModel::toValuesGroupedByColumns(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values;
+ for (SqlQueryItem* item : items)
+ values[item->getColumn()->displayName] << item->getFullValue();
+
+ return values;
+}
+
+bool SqlQueryModel::supportsModifyingQueriesInMenu() const
+{
+ return false;
+}
+
void SqlQueryModel::readColumns()
{
columns.clear();
@@ -1048,7 +1118,9 @@ void SqlQueryModel::handleExecFinished(SqlQueryPtr results)
}
storeStep1NumbersFromExecution();
- loadData(results);
+ if (!loadData(results))
+ return;
+
storeStep2NumbersFromExecution();
requiredDbAttaches = queryExecutor->getRequiredDbAttaches();
@@ -1061,7 +1133,7 @@ void SqlQueryModel::handleExecFinished(SqlQueryPtr results)
reloading = false;
- bool rowsCountedManually = queryExecutor->isRowCountingRequired() || rowCount() < CFG_UI.General.NumberOfRowsPerPage.get();
+ bool rowsCountedManually = queryExecutor->isRowCountingRequired() || rowCount() < getRowsPerPage();
bool countRes = false;
if (rowsCountedManually)
{
@@ -1245,7 +1317,7 @@ void SqlQueryModel::storeStep2NumbersFromExecution()
{
if (!queryExecutor->getSkipRowCounting())
{
- if (queryExecutor->isRowCountingRequired() || rowCount() < CFG_UI.General.NumberOfRowsPerPage.get())
+ if (queryExecutor->isRowCountingRequired() || rowCount() < getRowsPerPage())
totalRowsReturned = rowCount();
}
}
@@ -1413,7 +1485,7 @@ void SqlQueryModel::recalculateRowsAndPages(int rowsDelta)
{
totalRowsReturned += rowsDelta;
- int rowsPerPage = CFG_UI.General.NumberOfRowsPerPage.get();
+ int rowsPerPage = getRowsPerPage();
totalPages = (int)qCeil(((double)totalRowsReturned) / ((double)rowsPerPage));
emit totalRowsAndPagesAvailable();
@@ -1440,6 +1512,35 @@ int SqlQueryModel::getInsertRowIndex()
return row;
}
+void SqlQueryModel::notifyItemEditionEnded(const QModelIndex& idx)
+{
+ emit itemEditionEnded(itemFromIndex(idx));
+}
+
+int SqlQueryModel::getRowsPerPage() const
+{
+ int rowsPerPage = CFG_UI.General.NumberOfRowsPerPage.get();
+ if (hardRowLimit > -1)
+ rowsPerPage = hardRowLimit;
+
+ return rowsPerPage;
+}
+
+bool SqlQueryModel::isAllDataLoaded() const
+{
+ return allDataLoaded;
+}
+
+int SqlQueryModel::getHardRowLimit() const
+{
+ return hardRowLimit;
+}
+
+void SqlQueryModel::setHardRowLimit(int value)
+{
+ hardRowLimit = value;
+}
+
bool SqlQueryModel::getSimpleExecutionMode() const
{
return simpleExecutionMode;
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
index f55185a..6af937b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
@@ -8,9 +8,10 @@
#include "parser/ast/sqlitecreatetable.h"
#include "common/column.h"
#include "guiSQLiteStudio_global.h"
+#include "sqlqueryitemdelegate.h"
+#include "common/strhash.h"
#include <QStandardItemModel>
#include <QItemSelection>
-#include <common/strhash.h>
class SqlQueryItem;
class FormView;
@@ -30,6 +31,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
};
Q_DECLARE_FLAGS(Features, Feature)
+ friend class SqlQueryItemDelegate;
+
explicit SqlQueryModel(QObject *parent = 0);
virtual ~SqlQueryModel();
@@ -58,6 +61,12 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
bool isExecutionInProgress() const;
void loadFullDataForEntireRow(int row);
+ StrHash<QString> attachDependencyTables();
+ void detachDependencyTables();
+ virtual QString generateSelectQueryForItems(const QList<SqlQueryItem*>& items);
+ virtual QString generateInsertQueryForItems(const QList<SqlQueryItem*>& items);
+ virtual QString generateUpdateQueryForItems(const QList<SqlQueryItem*>& items);
+ virtual QString generateDeleteQueryForItems(const QList<SqlQueryItem*>& items);
virtual Features features() const;
@@ -105,6 +114,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
int getCurrentPage(bool includeOneBeingLoaded = false) const;
void gotoPage(int newPage);
bool canReload();
+ virtual bool supportsModifyingQueriesInMenu() const;
QueryExecutor::SortList getSortOrder() const;
void setSortOrder(const QueryExecutor::SortList& newSortOrder);
@@ -125,6 +135,11 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
bool getSimpleExecutionMode() const;
void setSimpleExecutionMode(bool value);
+ int getHardRowLimit() const;
+ void setHardRowLimit(int value);
+
+ bool isAllDataLoaded() const;
+
protected:
class CommitUpdateQueryBuilder : public RowIdConditionBuilder
{
@@ -208,6 +223,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
void updateItem(SqlQueryItem* item, const QVariant& value, int columnIndex, const RowId& rowId);
RowId getNewRowId(const RowId& currentRowId, const QList<SqlQueryItem*> items);
void updateRowIdForAllItems(const AliasedTable& table, const RowId& rowId, const RowId& newRowId);
+ QHash<QString, QVariantList> toValuesGroupedByColumns(const QList<SqlQueryItem*>& items);
QueryExecutor* queryExecutor = nullptr;
Db* db = nullptr;
@@ -235,7 +251,13 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QList<SqliteCreateTable::ConstraintPtr> constraints;
};
- void loadData(SqlQueryPtr results);
+ /**
+ * @brief Loads data from queyr execution into UI cells.
+ * @param results Execution results from query executor.
+ * @return Whether to continue execution or not.
+ */
+ bool loadData(SqlQueryPtr results);
+
QList<QStandardItem*> loadRow(SqlResultsRowPtr row);
RowId getRowIdValue(SqlResultsRowPtr row, int columnIdx);
void readColumns();
@@ -263,6 +285,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QString getDatabaseForCommit(const QString& database);
void recalculateRowsAndPages(int rowsDelta);
int getInsertRowIndex();
+ void notifyItemEditionEnded(const QModelIndex& idx);
+ int getRowsPerPage() const;
QString query;
bool explain = false;
@@ -336,6 +360,14 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
quint32 resultsCountingAsyncId = 0;
QStringList requiredDbAttaches;
StrHash<QString> dbNameToAttachNameMapForCommit;
+ QList<Db*> dbListToDetach;
+
+ /**
+ * @brief Sets row count limit, despite user configured limit.
+ *
+ * -1 to not apply hard limit (use user configured row limit), any other value is the limit.
+ */
+ int hardRowLimit = -1;
/**
* @brief rowIdColumns
@@ -358,6 +390,17 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QList<int> rowsDeletedSuccessfullyInTheCommit;
+ bool allDataLoaded = false;
+
+ /**
+ * @brief Set of existing model objects, updated for each construction and destruction.
+ *
+ * This is used by loadData() to determinathe whether processEvents() caused deletion of the model.
+ * We need to keep processEvents() call so the UI is responsive to Interrupt button,
+ * but this causes crash when model is deleted in the events processing (like when FK combobox is deleted faster than data is loaded).
+ */
+ static QSet<SqlQueryModel*> existingModels;
+
private slots:
void handleExecFinished(SqlQueryPtr results);
void handleExecFailed(int code, QString errorMessage);
@@ -457,6 +500,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
void aboutToCommit(int totalSteps);
void commitingStepFinished(int step);
void commitFinished();
+ void itemEditionEnded(SqlQueryItem* item);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(SqlQueryModel::Features)
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
index e610431..50a0480 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
@@ -15,6 +15,8 @@
#include "windows/editorwindow.h"
#include "mainwindow.h"
#include "common/utils_sql.h"
+#include "querygenerator.h"
+#include "services/codeformatter.h"
#include <QHeaderView>
#include <QPushButton>
#include <QProgressBar>
@@ -84,6 +86,10 @@ void SqlQueryView::createActions()
createAction(ROLLBACK, ICONS.ROLLBACK, tr("Rollback"), this, SLOT(rollback()), this);
createAction(SELECTIVE_COMMIT, ICONS.COMMIT, tr("Commit selected cells"), this, SLOT(selectiveCommit()), this);
createAction(SELECTIVE_ROLLBACK, ICONS.ROLLBACK, tr("Rollback selected cells"), this, SLOT(selectiveRollback()), this);
+ createAction(GENERATE_SELECT, "SELECT", this, SLOT(generateSelect()), this);
+ createAction(GENERATE_INSERT, "INSERT", this, SLOT(generateInsert()), this);
+ createAction(GENERATE_UPDATE, "UPDATE", this, SLOT(generateUpdate()), this);
+ createAction(GENERATE_DELETE, "DELETE", this, SLOT(generateDelete()), this);
createAction(SORT_DIALOG, ICONS.SORT_COLUMNS, tr("Define columns to sort by"), this, SLOT(openSortDialog()), this);
createAction(RESET_SORTING, ICONS.SORT_RESET, tr("Remove custom sorting"), this, SLOT(resetSorting()), this);
createAction(INSERT_ROW, ICONS.INSERT_ROW, tr("Insert row"), this, SIGNAL(requestForRowInsert()), this);
@@ -141,11 +147,22 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq
contextMenu->addSeparator();
}
- if (selectedItems.size() == 1 && selectedItems.first() == currentItem)
+ if (selCount == 1 && selectedItems.first() == currentItem)
addFkActionsToContextMenu(currentItem);
if (selCount > 0)
{
+ QMenu* generateQueryMenu = contextMenu->addMenu(ICONS.GENERATE_QUERY, tr("Generate query for selected cells"));
+ generateQueryMenu->addAction(actionMap[GENERATE_SELECT]);
+ if (getModel()->supportsModifyingQueriesInMenu())
+ {
+ generateQueryMenu->addAction(actionMap[GENERATE_INSERT]);
+ generateQueryMenu->addAction(actionMap[GENERATE_UPDATE]);
+ generateQueryMenu->addAction(actionMap[GENERATE_DELETE]);
+ }
+
+
+ contextMenu->addSeparator();
contextMenu->addAction(actionMap[COPY]);
//contextMenu->addAction(actionMap[COPY_AS]); // TODO uncomment when implemented
contextMenu->addAction(actionMap[PASTE]);
@@ -233,6 +250,9 @@ QModelIndex SqlQueryView::getCurrentIndex() const
void SqlQueryView::itemActivated(const QModelIndex& index)
{
+ if (simpleBrowserMode)
+ return;
+
if (!index.isValid())
return;
@@ -246,6 +266,31 @@ void SqlQueryView::itemActivated(const QModelIndex& index)
edit(getCurrentIndex());
}
+void SqlQueryView::generateSelect()
+{
+ QString sql = getModel()->generateSelectQueryForItems(getSelectedItems());
+ MAINWINDOW->openSqlEditor(getModel()->getDb(), sql);
+
+}
+
+void SqlQueryView::generateInsert()
+{
+ QString sql = getModel()->generateInsertQueryForItems(getSelectedItems());
+ MAINWINDOW->openSqlEditor(getModel()->getDb(), sql);
+}
+
+void SqlQueryView::generateUpdate()
+{
+ QString sql = getModel()->generateUpdateQueryForItems(getSelectedItems());
+ MAINWINDOW->openSqlEditor(getModel()->getDb(), sql);
+}
+
+void SqlQueryView::generateDelete()
+{
+ QString sql = getModel()->generateDeleteQueryForItems(getSelectedItems());
+ MAINWINDOW->openSqlEditor(getModel()->getDb(), sql);
+}
+
bool SqlQueryView::editInEditorIfNecessary(SqlQueryItem* item)
{
if (item->getColumn()->dataType.getType() == DataType::BLOB)
@@ -258,6 +303,9 @@ bool SqlQueryView::editInEditorIfNecessary(SqlQueryItem* item)
void SqlQueryView::paste(const QList<QList<QVariant> >& data)
{
+ if (simpleBrowserMode)
+ return;
+
QList<SqlQueryItem*> selectedItems = getSelectedItems();
if (selectedItems.isEmpty())
{
@@ -345,23 +393,27 @@ void SqlQueryView::goToReferencedRow(const QString& table, const QString& column
if (!db || !db->isValid())
return;
- EditorWindow* win = MAINWINDOW->openSqlEditor();
- if (!win->setCurrentDb(db))
- {
- qCritical() << "Created EditorWindow had not got requested database:" << db->getName();
- win->close();
- return;
- }
-
- static QString sql = QStringLiteral("SELECT * FROM %1 WHERE %2 = %3");
+ static_qstring(sqlTpl, "SELECT * FROM %1 WHERE %2 = %3");
QString valueStr = wrapValueIfNeeded(value.toString());
+ EditorWindow* win = MAINWINDOW->openSqlEditor(db, sqlTpl.arg(table, column, valueStr));
+ if (!win)
+ return;
win->getMdiWindow()->rename(tr("Referenced row (%1)").arg(table));
- win->setContents(sql.arg(table, column, valueStr));
win->execute();
}
+bool SqlQueryView::getSimpleBrowserMode() const
+{
+ return simpleBrowserMode;
+}
+
+void SqlQueryView::setSimpleBrowserMode(bool value)
+{
+ simpleBrowserMode = value;
+}
+
void SqlQueryView::updateCommitRollbackActions(bool enabled)
{
actionMap[COMMIT]->setEnabled(enabled);
@@ -370,6 +422,9 @@ void SqlQueryView::updateCommitRollbackActions(bool enabled)
void SqlQueryView::customContextMenuRequested(const QPoint& pos)
{
+ if (simpleBrowserMode)
+ return;
+
SqlQueryItem* currentItem = getCurrentItem();
QList<SqlQueryItem*> selectedItems = getSelectedItems();
@@ -386,6 +441,9 @@ void SqlQueryView::customContextMenuRequested(const QPoint& pos)
void SqlQueryView::headerContextMenuRequested(const QPoint& pos)
{
+ if (simpleBrowserMode)
+ return;
+
headerContextMenu->popup(horizontalHeader()->mapToGlobal(pos));
}
@@ -438,6 +496,9 @@ void SqlQueryView::setCurrentRow(int row)
void SqlQueryView::copy()
{
+ if (simpleBrowserMode)
+ return;
+
QList<SqlQueryItem*> selectedItems = getSelectedItems();
QList<QList<SqlQueryItem*> > groupedItems = SqlQueryModel::groupItemsByRows(selectedItems);
@@ -454,7 +515,11 @@ void SqlQueryView::copy()
foreach (SqlQueryItem* item, itemsInRows)
{
itemValue = item->getFullValue();
- cells << itemValue.toString();
+ if (itemValue.userType() == QVariant::Double)
+ cells << doubleToString(itemValue.toDouble());
+ else
+ cells << itemValue.toString();
+
theDataRow << itemValue;
}
@@ -483,6 +548,9 @@ void SqlQueryView::copy()
void SqlQueryView::paste()
{
+ if (simpleBrowserMode)
+ return;
+
const QMimeData* mimeData = qApp->clipboard()->mimeData();
if (mimeData->hasFormat(mimeDataId))
{
@@ -529,6 +597,9 @@ void SqlQueryView::pasteAs()
void SqlQueryView::setNull()
{
+ if (simpleBrowserMode)
+ return;
+
for (SqlQueryItem* selItem : getSelectedItems()) {
if (selItem->getColumn()->editionForbiddenReason.size() > 0)
continue;
@@ -539,6 +610,9 @@ void SqlQueryView::setNull()
void SqlQueryView::erase()
{
+ if (simpleBrowserMode)
+ return;
+
for (SqlQueryItem* selItem : getSelectedItems()) {
if (selItem->getColumn()->editionForbiddenReason.size() > 0)
continue;
@@ -549,26 +623,41 @@ void SqlQueryView::erase()
void SqlQueryView::commit()
{
+ if (simpleBrowserMode)
+ return;
+
getModel()->commit();
}
void SqlQueryView::rollback()
{
+ if (simpleBrowserMode)
+ return;
+
getModel()->rollback();
}
void SqlQueryView::selectiveCommit()
{
+ if (simpleBrowserMode)
+ return;
+
getModel()->commit(getSelectedItems());
}
void SqlQueryView::selectiveRollback()
{
+ if (simpleBrowserMode)
+ return;
+
getModel()->rollback(getSelectedItems());
}
void SqlQueryView::openValueEditor(SqlQueryItem* item)
{
+ if (simpleBrowserMode)
+ return;
+
if (!item)
{
qWarning() << "Tried to open value editor while there's no current item. It should not be called in that case.";
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
index a1c84bb..b0df4d7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
@@ -5,6 +5,7 @@
#include "common/extactioncontainer.h"
#include "db/queryexecutor.h"
#include "guiSQLiteStudio_global.h"
+#include "common/table.h"
#include <QTableView>
class SqlQueryItemDelegate;
@@ -53,7 +54,11 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer
SELECTIVE_ROLLBACK,
OPEN_VALUE_EDITOR,
SORT_DIALOG,
- RESET_SORTING
+ RESET_SORTING,
+ GENERATE_SELECT,
+ GENERATE_INSERT,
+ GENERATE_UPDATE,
+ GENERATE_DELETE
};
enum ToolBar
@@ -70,6 +75,8 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer
QToolBar* getToolBar(int toolbar) const;
void addAdditionalAction(QAction* action);
QModelIndex getCurrentIndex() const;
+ bool getSimpleBrowserMode() const;
+ void setSimpleBrowserMode(bool value);
private:
void init();
@@ -94,6 +101,7 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer
QPushButton* cancelButton = nullptr;
QProgressBar* busyBar = nullptr;
QList<QAction*> additionalActions;
+ bool simpleBrowserMode = false;
private slots:
void updateCommitRollbackActions(bool enabled);
@@ -104,6 +112,10 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer
void sortingUpdated(const QueryExecutor::SortList& sortOrder);
void updateFont();
void itemActivated(const QModelIndex& index);
+ void generateSelect();
+ void generateInsert();
+ void generateUpdate();
+ void generateDelete();
public slots:
void executionStarted();
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
index 7b858e6..20c878b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.cpp
@@ -5,6 +5,7 @@
#include <QDebug>
#include <QApplication>
#include <schemaresolver.h>
+#include <querygenerator.h>
SqlTableModel::SqlTableModel(QObject *parent) :
SqlQueryModel(parent)
@@ -139,6 +140,11 @@ bool SqlTableModel::commitDeletedRow(const QList<SqlQueryItem*>& itemsInRow)
return true;
}
+bool SqlTableModel::supportsModifyingQueriesInMenu() const
+{
+ return true;
+}
+
void SqlTableModel::applySqlFilter(const QString& value)
{
if (value.isEmpty())
@@ -192,6 +198,38 @@ void SqlTableModel::resetFilter()
executeQuery();
}
+QString SqlTableModel::generateSelectQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ return generator.generateSelectFromTable(db, database, table, values);
+}
+
+QString SqlTableModel::generateInsertQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ return generator.generateInsertToTable(db, database, table, values);
+}
+
+QString SqlTableModel::generateUpdateQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ return generator.generateUpdateOfTable(db, database, table, values);
+}
+
+QString SqlTableModel::generateDeleteQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ return generator.generateDeleteFromTable(db, database, table, values);
+}
+
void SqlTableModel::updateRowAfterInsert(const QList<SqlQueryItem*>& itemsInRow, const QList<SqlQueryModelColumnPtr>& modelColumns, RowId rowId)
{
Dialect dialect = db->getDialect();
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h
index 8b76acc..da43b03 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqltablemodel.h
@@ -19,6 +19,11 @@ class GUI_API_EXPORT SqlTableModel : public SqlQueryModel
void applyStringFilter(const QString& value);
void applyRegExpFilter(const QString& value);
void resetFilter();
+ QString generateSelectQueryForItems(const QList<SqlQueryItem*>& items);
+ QString generateInsertQueryForItems(const QList<SqlQueryItem*>& items);
+ QString generateUpdateQueryForItems(const QList<SqlQueryItem*>& items);
+ QString generateDeleteQueryForItems(const QList<SqlQueryItem*>& items);
+ bool supportsModifyingQueriesInMenu() const;
protected:
bool commitAddedRow(const QList<SqlQueryItem*>& itemsInRow);
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.cpp
new file mode 100644
index 0000000..653e4b5
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.cpp
@@ -0,0 +1,20 @@
+#include "sqlviewmodel.h"
+#include "querygenerator.h"
+
+SqlViewModel::SqlViewModel(QObject *parent) :
+ SqlQueryModel(parent)
+{
+}
+
+QString SqlViewModel::generateSelectQueryForItems(const QList<SqlQueryItem*>& items)
+{
+ QHash<QString, QVariantList> values = toValuesGroupedByColumns(items);
+
+ QueryGenerator generator;
+ return generator.generateSelectFromView(db, view, values);
+}
+
+void SqlViewModel::setView(const QString& view)
+{
+ this->view = view;
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.h
new file mode 100644
index 0000000..19efbce
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlviewmodel.h
@@ -0,0 +1,18 @@
+#ifndef SQLVIEWMODEL_H
+#define SQLVIEWMODEL_H
+
+#include "sqlquerymodel.h"
+
+class SqlViewModel : public SqlQueryModel
+{
+ public:
+ SqlViewModel(QObject *parent = 0);
+
+ QString generateSelectQueryForItems(const QList<SqlQueryItem*>& items);
+ void setView(const QString& view);
+
+ private:
+ QString view;
+};
+
+#endif // SQLVIEWMODEL_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
index f2aba69..69ca9cd 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dataview.cpp
@@ -75,6 +75,7 @@ void DataView::initSlots()
connect(model, SIGNAL(totalRowsAndPagesAvailable()), this, SLOT(totalRowsAndPagesAvailable()));
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*)));
}
void DataView::initFormView()
@@ -265,10 +266,15 @@ void DataView::resizeColumnsInitiallyToContents()
{
int cols = gridView->model()->columnCount();
gridView->resizeColumnsToContents();
+ int wd;
for (int i = 0; i < cols ; i++)
{
- if (gridView->columnWidth(i) > CFG_UI.General.MaxInitialColumnWith.get())
+ wd = gridView->columnWidth(i);
+ if (wd > CFG_UI.General.MaxInitialColumnWith.get())
gridView->setColumnWidth(i, CFG_UI.General.MaxInitialColumnWith.get());
+ else if (wd < 60)
+ gridView->setColumnWidth(i, 60);
+
}
}
@@ -524,6 +530,17 @@ void DataView::hideGridCommitCover()
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
}
+void DataView::adjustColumnWidth(SqlQueryItem* item)
+{
+ if (!item)
+ return;
+
+ int col = item->column();
+ gridView->resizeColumnToContents(col);
+ if (gridView->columnWidth(col) > CFG_UI.General.MaxInitialColumnWith.get())
+ gridView->setColumnWidth(col, CFG_UI.General.MaxInitialColumnWith.get());
+}
+
void DataView::updateCommitRollbackActions(bool enabled)
{
gridView->getAction(SqlQueryView::COMMIT)->setEnabled(enabled);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dataview.h b/SQLiteStudio3/guiSQLiteStudio/dataview.h
index ce1b982..fcab9f2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dataview.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dataview.h
@@ -9,6 +9,7 @@
class QToolBar;
class SqlQueryView;
class SqlQueryModel;
+class SqlQueryItem;
class FormView;
class ExtLineEdit;
class QLabel;
@@ -203,6 +204,7 @@ class GUI_API_EXPORT DataView : public QTabWidget, public ExtActionContainer
void coverForGridCommit(int total);
void updateGridCommitCover(int value);
void hideGridCommitCover();
+ void adjustColumnWidth(SqlQueryItem* item);
};
int qHash(DataView::ActionGroup action);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp
index 25686b5..43af10e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.cpp
@@ -227,6 +227,113 @@ bool DbObjectDialogs::dropObject(const QString& database, const QString& name)
return true;
}
+bool DbObjectDialogs::dropObjects(const QStringList& names)
+{
+ QHash<QString, QStringList> objects;
+ objects["main"] = names;
+ return dropObjects(objects);
+}
+
+QHash<QString, QHash<QString, QStringList>> DbObjectDialogs::groupObjects(const QHash<QString, QStringList>& objects)
+{
+ QHash<QString, QHash<QString, QStringList>> groupedObjects;
+ for (QHash<QString, QStringList>::const_iterator it = objects.begin(); it != objects.end(); ++it)
+ {
+ for (const QString& name : it.value())
+ {
+ QString typeForSql;
+ switch (getObjectType(it.key(), name))
+ {
+ case Type::TABLE:
+ typeForSql = "TABLE";
+ break;
+ case Type::INDEX:
+ typeForSql = "INDEX";
+ break;
+ case Type::TRIGGER:
+ typeForSql = "TRIGGER";
+ break;
+ case Type::VIEW:
+ typeForSql = "VIEW";
+ break;
+ default:
+ {
+ qCritical() << "Unknown object type while trying to drop object. Object name:" << it.key() << "." << name;
+ return QHash<QString, QHash<QString, QStringList>>();
+ }
+ }
+ groupedObjects[it.key()][typeForSql] << name;
+ }
+ }
+ return groupedObjects;
+}
+
+bool DbObjectDialogs::dropObjects(const QHash<QString, QStringList>& objects)
+{
+ static const QString dropSql2 = "DROP %1 IF EXISTS %2;";
+ static const QString dropSql3 = "DROP %1 IF EXISTS %2.%3;";
+
+ Dialect dialect = db->getDialect();
+ QStringList names = concat(objects.values());
+ QHash<QString, QHash<QString, QStringList>> groupedObjects = groupObjects(objects);
+
+ if (!noConfirmation)
+ {
+ QMessageBox::StandardButton resp = QMessageBox::question(parentWidget, tr("Delete objects"),
+ tr("Are you sure you want to delete following objects:\n%1").arg(names.join(", ")));
+ if (resp != QMessageBox::Yes)
+ return false;
+ }
+
+ if (!db->begin())
+ {
+ notifyError(tr("Cannot start transaction. Details: %1").arg(db->getErrorText()));
+ return false;
+ }
+
+ // Iterate through dbNames, then through db object types and finally through object names. Drop them.
+ SqlQueryPtr results;
+ QString finalSql;
+ QString dbName;
+ QHash<QString, QStringList> typeToNames;
+ for (QHash<QString, QHash<QString, QStringList>>::const_iterator dbIt = groupedObjects.begin(); dbIt != groupedObjects.end(); ++dbIt)
+ {
+ dbName = wrapObjIfNeeded(dbIt.key(), dialect);
+ typeToNames = dbIt.value();
+ for (QHash<QString, QStringList>::const_iterator typeIt = typeToNames.begin(); typeIt != typeToNames.end(); ++typeIt)
+ {
+ for (const QString& name : typeIt.value())
+ {
+ if (dialect == Dialect::Sqlite3)
+ finalSql = dropSql3.arg(typeIt.key(), dbName, wrapObjIfNeeded(name, dialect));
+ else
+ finalSql = dropSql2.arg(typeIt.key(), wrapObjIfNeeded(name, dialect));
+
+ results = db->exec(finalSql);
+ if (results->isError())
+ {
+ notifyError(tr("Error while dropping %1: %2").arg(name).arg(results->getErrorText()));
+ qCritical() << "Error while dropping object " << dbIt.key() << "." << name << ":" << results->getErrorText();
+ return false;
+ }
+
+ CFG->addDdlHistory(finalSql, db->getName(), db->getPath());
+ }
+ }
+ }
+
+ if (!db->commit())
+ {
+ notifyError(tr("Cannot commit transaction. Details: %1").arg(db->getErrorText()));
+ return false;
+ }
+
+ if (!noSchemaRefreshing)
+ DBTREE->refreshSchema(db);
+
+ return true;
+}
+
DbObjectDialogs::Type DbObjectDialogs::getObjectType(const QString& database, const QString& name)
{
static const QString typeSql = "SELECT type FROM %1.sqlite_master WHERE name = ?;";
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.h b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.h
index f9a36ee..5be09cc 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dbobjectdialogs.h
@@ -39,6 +39,8 @@ class GUI_API_EXPORT DbObjectDialogs : public QObject
void editObject(const QString& database, const QString& name);
bool dropObject(const QString& name);
bool dropObject(const QString& database, const QString& name);
+ bool dropObjects(const QStringList& names);
+ bool dropObjects(const QHash<QString, QStringList>& objects);
bool getNoConfirmation() const;
void setNoConfirmation(bool value);
@@ -57,6 +59,7 @@ class GUI_API_EXPORT DbObjectDialogs : public QObject
};
Type getObjectType(const QString& database, const QString& name);
+ QHash<QString, QHash<QString, QStringList> > groupObjects(const QHash<QString, QStringList>& objects);
Db* db = nullptr;
QWidget* parentWidget = nullptr;
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
index 62d7368..fbe0a38 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
@@ -24,6 +24,9 @@
#include "services/importmanager.h"
#include "windows/editorwindow.h"
#include "uiconfig.h"
+#include "themetuner.h"
+#include "dialogs/dbconverterdialog.h"
+#include "querygenerator.h"
#include <QApplication>
#include <QClipboard>
#include <QAction>
@@ -34,8 +37,7 @@
#include <QDebug>
#include <QKeyEvent>
#include <QMimeData>
-#include <themetuner.h>
-#include <dialogs/dbconverterdialog.h>
+#include <QDebug>
CFG_KEYS_DEFINE(DbTree)
QHash<DbTreeItem::Type,QList<DbTreeItem::Type>> DbTree::allowedTypesInside;
@@ -140,6 +142,10 @@ void DbTree::createActions()
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(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);
}
void DbTree::updateActionStates(const QStandardItem *item)
@@ -194,6 +200,7 @@ void DbTree::updateActionStates(const QStandardItem *item)
case DbTreeItem::Type::TABLE:
enabled << EDIT_TABLE << DEL_TABLE << EXPORT_TABLE << IMPORT_TABLE << POPULATE_TABLE << ADD_COLUMN << CREATE_SIMILAR_TABLE;
enabled << RESET_AUTOINCREMENT << ADD_INDEX << ADD_TRIGGER << ERASE_TABLE_DATA;
+ enabled << GENERATE_SELECT << GENERATE_INSERT << GENERATE_UPDATE << GENERATE_DELETE;
break;
case DbTreeItem::Type::VIRTUAL_TABLE:
// TODO change below when virtual tables can be edited
@@ -329,6 +336,12 @@ void DbTree::setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu)
groupEntry += RENAME_GROUP;
groupEntry += DELETE_GROUP;
+ ActionEntry genQueryEntry(ICONS.GENERATE_QUERY, tr("Generate query for table"));
+ genQueryEntry += GENERATE_SELECT;
+ genQueryEntry += GENERATE_INSERT;
+ genQueryEntry += GENERATE_UPDATE;
+ genQueryEntry += GENERATE_DELETE;
+
if (currItem)
{
DbTreeItem* parentItem = currItem->parentDbTreeItem();
@@ -392,6 +405,7 @@ void DbTree::setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu)
actions += ActionEntry(ADD_INDEX);
actions += ActionEntry(ADD_TRIGGER);
actions += ActionEntry(_separator);
+ actions += genQueryEntry;
actions += ActionEntry(IMPORT_TABLE);
actions += ActionEntry(EXPORT_TABLE);
actions += ActionEntry(POPULATE_TABLE);
@@ -635,11 +649,13 @@ bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTre
for (DbTreeItem* srcItem : srcItems)
{
- if (srcItem)
- srcTypes << srcItem->getType();
- else
+ if (!srcItem)
+ {
srcTypes << DbTreeItem::Type::ITEM_PROTOTYPE;
+ continue;
+ }
+ srcTypes << srcItem->getType();
if (srcItem->getDb())
srcDbs << srcItem->getDb();
}
@@ -653,6 +669,18 @@ bool DbTree::areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTre
return false;
}
+ // Support for d&d reordering of db objects
+ static const QHash<DbTreeItem::Type, DbTreeItem::Type> reorderingTypeToParent = {
+ {DbTreeItem::Type::TABLE, DbTreeItem::Type::TABLES},
+ {DbTreeItem::Type::TRIGGER, DbTreeItem::Type::TRIGGERS},
+ {DbTreeItem::Type::VIEW, DbTreeItem::Type::VIEWS},
+ {DbTreeItem::Type::INDEX, DbTreeItem::Type::INDEXES}
+ };
+
+ if (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
if (dstItem && dstItem->getDb() && srcDbs.contains(dstItem->getDb()))
return false;
@@ -706,6 +734,16 @@ Db* DbTree::getSelectedDb()
return item->getDb();
}
+QSet<Db*> DbTree::getSelectedDatabases()
+{
+ QList<DbTreeItem*> items = ui->treeView->selectionItems();
+ QSet<Db*> dbList;
+ for (DbTreeItem* item : items)
+ dbList << item->getDb();
+
+ return dbList;
+}
+
Db* DbTree::getSelectedOpenDb()
{
Db* db = getSelectedDb();
@@ -872,6 +910,72 @@ void DbTree::deleteItem(DbTreeItem* item)
}
}
+void DbTree::deleteSelected(DbTreeItem::Type itemType)
+{
+ deleteSelected([itemType](DbTreeItem* item)
+ {
+ return item->getType() == itemType;
+ });
+}
+
+QHash<Db*, QList<DbTreeItem*>> DbTree::groupByDb(const QList<DbTreeItem*> items)
+{
+ QHash<Db*, QList<DbTreeItem*>> grouped;
+ for (DbTreeItem* item : items)
+ grouped[item->getDb()] << item;
+
+ return grouped;
+}
+
+QStringList DbTree::itemsToNames(const QList<DbTreeItem*>& items)
+{
+ QStringList names;
+ for (DbTreeItem* item : items)
+ names << item->text();
+
+ return names;
+}
+
+QString DbTree::getSelectedTableName() const
+{
+ DbTreeItem* item = ui->treeView->currentItem();
+ QString table = item->getTable();
+ if (table.isNull())
+ return QString();
+
+ return table;
+}
+
+QString DbTree::getSelectedIndexName() const
+{
+ DbTreeItem* item = ui->treeView->currentItem();
+ QString idx = item->getIndex();
+ if (idx.isNull())
+ return QString();
+
+ return idx;
+}
+
+QString DbTree::getSelectedTriggerName() const
+{
+ DbTreeItem* item = ui->treeView->currentItem();
+ QString trig = item->getTrigger();
+ if (trig.isNull())
+ return QString();
+
+ return trig;
+}
+
+QString DbTree::getSelectedViewName() const
+{
+ DbTreeItem* item = ui->treeView->currentItem();
+ QString view= item->getView();
+ if (view.isNull())
+ return QString();
+
+ return view;
+}
+
void DbTree::refreshSchema(Db* db)
{
@@ -1012,15 +1116,29 @@ void DbTree::editDb()
void DbTree::removeDb()
{
- Db* db = getSelectedDb();
- if (!db)
+ QList<Db*> dbList = getSelectedDatabases().toList();
+ if (dbList.isEmpty())
return;
- QMessageBox::StandardButton result = QMessageBox::question(this, tr("Delete database"), tr("Are you sure you want to delete database '%1'?").arg(db->getName().left(ITEM_TEXT_LIMIT)));
+ QString msg;
+ if (dbList.size() == 1)
+ {
+ msg = tr("Are you sure you want to remove database '%1' from the list?").arg(dbList.first()->getName().left(ITEM_TEXT_LIMIT));
+ }
+ else
+ {
+ QStringList dbNames;
+ for (Db* db : dbList)
+ dbNames << db->getName().left(ITEM_TEXT_LIMIT);
+
+ msg = tr("Are you sure you want to remove following databases from the list:\n%1").arg(dbNames.join(",\n"));
+ }
+ QMessageBox::StandardButton result = QMessageBox::question(this, tr("Remove database"), msg);
if (result != QMessageBox::Yes)
return;
- DBLIST->removeDb(db);
+ for (Db* db : dbList)
+ DBLIST->removeDb(db);
}
void DbTree::connectToDb()
@@ -1097,8 +1215,7 @@ void DbTree::editTable()
if (!db || !db->isValid())
return;
- DbTreeItem* item = ui->treeView->currentItem();
- QString table = item->getTable();
+ QString table = getSelectedTableName();
if (table.isNull())
{
qWarning() << "Tried to edit table, while table wasn't selected in DbTree.";
@@ -1110,20 +1227,7 @@ void DbTree::editTable()
void DbTree::delTable()
{
- Db* db = getSelectedOpenDb();
- if (!db || !db->isValid())
- return;
-
- DbTreeItem* item = ui->treeView->currentItem();
- QString table = item->getTable();
- if (table.isNull())
- {
- qWarning() << "Tried to drop table, while table wasn't selected in DbTree.";
- return;
- }
-
- DbObjectDialogs dialogs(db);
- dialogs.dropObject(table); // TODO add database prefix when supported
+ deleteSelected(DbTreeItem::Type::TABLE);
}
void DbTree::addIndex()
@@ -1145,8 +1249,7 @@ void DbTree::editIndex()
if (!db || !db->isValid())
return;
- DbTreeItem* item = ui->treeView->currentItem();
- QString index = item->getIndex();
+ QString index = getSelectedIndexName();
DbObjectDialogs dialogs(db);
dialogs.editIndex(index);
@@ -1154,7 +1257,7 @@ void DbTree::editIndex()
void DbTree::delIndex()
{
- delSelectedObject();
+ deleteSelected(DbTreeItem::Type::INDEX);
}
void DbTree::addTrigger()
@@ -1177,8 +1280,7 @@ void DbTree::editTrigger()
if (!db || !db->isValid())
return;
- DbTreeItem* item = ui->treeView->currentItem();
- QString trigger = item->getTrigger();
+ QString trigger = getSelectedTriggerName();
DbObjectDialogs dialogs(db);
dialogs.editTrigger(trigger);
@@ -1186,7 +1288,7 @@ void DbTree::editTrigger()
void DbTree::delTrigger()
{
- delSelectedObject();
+ deleteSelected(DbTreeItem::Type::TRIGGER);
}
void DbTree::addView()
@@ -1205,8 +1307,7 @@ void DbTree::editView()
if (!db || !db->isValid())
return;
- DbTreeItem* item = ui->treeView->currentItem();
- QString view = item->getView();
+ QString view = getSelectedViewName();
if (view.isNull())
{
qWarning() << "Tried to edit view, while view wasn't selected in DbTree.";
@@ -1218,7 +1319,7 @@ void DbTree::editView()
void DbTree::delView()
{
- delSelectedObject();
+ deleteSelected(DbTreeItem::Type::VIEW);
}
void DbTree::exportTable()
@@ -1334,11 +1435,12 @@ void DbTree::vacuumDb()
if (!db || !db->isValid())
return;
- SqlQueryPtr res = db->exec("VACUUM;");
- if (res->isError())
- notifyError(tr("Error while executing VACUUM on the database %1: %2").arg(db->getName(), res->getErrorText()));
- else
- notifyInfo(tr("VACUUM execution finished successfully."));
+ EditorWindow* win = MAINWINDOW->openSqlEditor(db, "VACUUM;");
+ if (!win)
+ return;
+
+ win->getMdiWindow()->rename(tr("Vacuum (%1)").arg(db->getName()));
+ win->execute();
}
void DbTree::integrityCheck()
@@ -1347,16 +1449,11 @@ void DbTree::integrityCheck()
if (!db || !db->isValid())
return;
- EditorWindow* win = MAINWINDOW->openSqlEditor();
- if (!win->setCurrentDb(db))
- {
- qCritical() << "Created EditorWindow had not got requested database:" << db->getName();
- win->close();
+ EditorWindow* win = MAINWINDOW->openSqlEditor(db, "PRAGMA integrity_check;");
+ if (!win)
return;
- }
win->getMdiWindow()->rename(tr("Integrity check (%1)").arg(db->getName()));
- win->setContents("PRAGMA integrity_check;");
win->execute();
}
@@ -1493,12 +1590,19 @@ void DbTree::currentChanged(const QModelIndex &current, const QModelIndex &previ
updateActionStates(treeModel->itemFromIndex(current));
}
-void DbTree::deleteSelected()
+void DbTree::deleteSelected(ItemFilterFunc filterFunc)
{
QModelIndexList idxList = ui->treeView->getSelectedIndexes();
QList<DbTreeItem*> items;
- foreach (const QModelIndex& idx, idxList)
- items << dynamic_cast<DbTreeItem*>(treeModel->itemFromIndex(idx));
+ DbTreeItem* item;
+ for (const QModelIndex& idx : idxList)
+ {
+ item = dynamic_cast<DbTreeItem*>(treeModel->itemFromIndex(idx));
+ if (filterFunc && !filterFunc(item))
+ continue;
+
+ items << item;
+ }
deleteItems(items);
}
@@ -1615,6 +1719,36 @@ void DbTree::refreshFont()
ui->treeView->doItemsLayout();
}
+void DbTree::generateSelectForTable()
+{
+ Db* db = getSelectedDb();
+ QString table = getSelectedTableName();
+
+ QueryGenerator generator;
+ QString sql = generator.generateSelectFromTable(db, table);
+ MAINWINDOW->openSqlEditor(db, sql);
+}
+
+void DbTree::generateInsertForTable()
+{
+ Db* db = getSelectedDb();
+ QString table = getSelectedTableName();
+
+ QueryGenerator generator;
+ QString sql = generator.generateInsertToTable(db, table);
+ MAINWINDOW->openSqlEditor(db, sql);
+}
+
+void DbTree::generateUpdateForTable()
+{
+
+}
+
+void DbTree::generateDeleteForTable()
+{
+
+}
+
void DbTree::setupDefShortcuts()
{
setShortcutContext({
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
index 2f5583e..ea415a4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h
@@ -7,6 +7,7 @@
#include "dbtree/dbtreeitem.h"
#include "guiSQLiteStudio_global.h"
#include <QDockWidget>
+#include <QSet>
class WidgetCover;
class QAction;
@@ -85,6 +86,10 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
CREATE_SIMILAR_TABLE,
RESET_AUTOINCREMENT,
ERASE_TABLE_DATA,
+ GENERATE_SELECT,
+ GENERATE_UPDATE,
+ GENERATE_INSERT,
+ GENERATE_DELETE,
_separator // Never use it directly, it's just for menu setup
};
@@ -111,6 +116,7 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
QToolBar* getToolBar(int toolbar) const;
Db* getSelectedDb();
Db* getSelectedOpenDb();
+ QSet<Db*> getSelectedDatabases();
static bool isItemDraggable(const DbTreeItem* item);
@@ -120,6 +126,8 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
void closeEvent(QCloseEvent* e);
private:
+ typedef std::function<bool(DbTreeItem*)> ItemFilterFunc;
+
void setActionEnabled(int action, bool enabled);
TableWindow* openTable(DbTreeItem* item);
TableWindow* openTable(Db* db, const QString& database, const QString& table);
@@ -133,9 +141,16 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
void filterUndeletableItems(QList<DbTreeItem*>& items);
void filterItemsWithParentInList(QList<DbTreeItem*>& items);
void deleteItem(DbTreeItem* item);
+ void deleteSelected(DbTreeItem::Type itemType);
+ QHash<Db*, QList<DbTreeItem*>> groupByDb(const QList<DbTreeItem*> items);
+ QStringList itemsToNames(const QList<DbTreeItem*>& items);
+ QString getSelectedTableName() const;
+ QString getSelectedIndexName() const;
+ QString getSelectedTriggerName() const;
+ QString getSelectedViewName() const;
+
static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem);
static bool areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* dstItem);
-
static void initDndTypes();
Ui::DbTree *ui = nullptr;
@@ -194,13 +209,17 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer
void editColumn(DbTreeItem* item);
void delColumn(DbTreeItem* item);
void currentChanged(const QModelIndex & current, const QModelIndex & previous);
- void deleteSelected();
+ void deleteSelected(ItemFilterFunc filterFunc = nullptr);
void deleteItems(const QList<DbTreeItem*>& itemsToDelete);
void refreshSchema();
void dbConnected(Db* db);
void dbDisconnected(Db* db);
void updateDbIcon(Db* db);
void refreshFont();
+ void generateSelectForTable();
+ void generateInsertForTable();
+ void generateUpdateForTable();
+ void generateDeleteForTable();
};
int qHash(DbTree::Action action);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
index c0f527f..c11221d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp
@@ -13,6 +13,7 @@
#include "dialogs/errorsconfirmdialog.h"
#include "dialogs/versionconvertsummarydialog.h"
#include "db/invaliddb.h"
+#include "services/notifymanager.h"
#include <QMimeData>
#include <QDebug>
#include <QFile>
@@ -1040,7 +1041,10 @@ bool DbTreeModel::dropDbTreeItem(const QList<DbTreeItem*>& srcItems, DbTreeItem*
return false;
if (srcItem->getDb() == dstItem->getDb())
+ {
+ invokeStdDropAction = true;
return true;
+ }
return dropDbObjectItem(srcItems, dstItem, defaultAction);
}
@@ -1135,6 +1139,8 @@ QCheckBox* DbTreeModel::createCopyOrMoveMenuCheckBox(QMenu* menu, const QString&
bool DbTreeModel::dropUrls(const QList<QUrl>& urls)
{
+ QString filePath;
+ bool autoTest = false;
for (const QUrl& url : urls)
{
if (!url.isLocalFile())
@@ -1143,13 +1149,41 @@ bool DbTreeModel::dropUrls(const QList<QUrl>& urls)
continue;
}
+ autoTest = false;
+ filePath = url.toLocalFile();
+ if (CFG_UI.General.BypassDbDialogWhenDropped.get())
+ {
+ if (quickAddDroppedDb(filePath))
+ {
+ continue;
+ }
+ else
+ {
+ notifyWarn(tr("Could not add dropped database file '%1' automatically. Manual setup is necessary.").arg(filePath));
+ autoTest = true;
+ }
+ }
+
DbDialog dialog(DbDialog::ADD, MAINWINDOW);
- dialog.setPath(url.toLocalFile());
+ dialog.setPath(filePath);
+ dialog.setDoAutoTest(autoTest);
dialog.exec();
}
return false;
}
+bool DbTreeModel::quickAddDroppedDb(const QString& filePath)
+{
+ DbPlugin* plugin = DBLIST->getPluginForDbFile(filePath);
+ if (!plugin)
+ return false;
+
+ QString name = DBLIST->generateUniqueDbName(plugin, filePath);
+ QHash<QString,QVariant> opts;
+ opts[DB_PLUGIN] = plugin->getName();
+ return DBLIST->addDb(name, filePath, opts, !CFG_UI.General.NewDbNotPermanentByDefault.get());
+}
+
void DbTreeModel::moveOrCopyDbObjects(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, bool move, bool includeData, bool includeIndexes, bool includeTriggers)
{
if (srcItems.size() == 0)
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
index ee97e87..122421a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h
@@ -85,6 +85,7 @@ class GUI_API_EXPORT DbTreeModel : public QStandardItemModel
bool dropDbObjectItem(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, Qt::DropAction defaultAction);
QCheckBox* createCopyOrMoveMenuCheckBox(QMenu* menu, const QString& label);
bool dropUrls(const QList<QUrl>& urls);
+ bool quickAddDroppedDb(const QString& filePath);
void moveOrCopyDbObjects(const QList<DbTreeItem*>& srcItems, DbTreeItem* dstItem, bool move, bool includeData, bool includeIndexes, bool includeTriggers);
static bool confirmReferencedTables(const QStringList& tables);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
index f4e48fe..14cb06b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
@@ -33,8 +33,8 @@ void ColumnDialog::init()
limitDialogWidth(this);
setWindowIcon(ICONS.COLUMN);
- ui->scale->setStrict(true);
- ui->precision->setStrict(true);
+ ui->scale->setStrict(true, true);
+ ui->precision->setStrict(true, true);
ui->typeCombo->addItem("");
foreach (DataType::Enum type, DataType::getAllTypes())
@@ -52,8 +52,11 @@ void ColumnDialog::init()
connect(ui->constraintsView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(updateConstraintsToolbarState()));
connect(ui->constraintsView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editConstraint(QModelIndex)));
- connect(constraintsModel, SIGNAL(constraintsChanged()), this, SLOT(updateConstraints()));
+ connect(constraintsModel, SIGNAL(constraintsChanged()), this, SLOT(updateValidations()));
connect(constraintsModel, SIGNAL(constraintsChanged()), this, SLOT(updateState()));
+ connect(ui->typeCombo, SIGNAL(currentTextChanged(const QString&)), this, SLOT(updateValidations()));
+ connect(ui->scale, SIGNAL(modified()), this, SLOT(updateValidations()));
+ connect(ui->precision, SIGNAL(modified()), this, SLOT(updateValidations()));
connect(ui->pkButton, SIGNAL(clicked()), this, SLOT(configurePk()));
connect(ui->fkButton, SIGNAL(clicked()), this, SLOT(configureFk()));
@@ -214,7 +217,7 @@ void ColumnDialog::editConstraint(SqliteCreateTable::Column::Constraint* constra
ui->constraintsView->resizeColumnToContents(0);
ui->constraintsView->resizeColumnToContents(1);
- updateConstraints();
+ updateValidations();
}
void ColumnDialog::delConstraint(const QModelIndex& idx)
@@ -377,6 +380,44 @@ bool ColumnDialog::isUnofficialSqlite2Constraint(SqliteCreateTable::Column::Cons
return false;
}
+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.");
+
+ QVariant scale = ui->scale->getValue();
+ QVariant precision = ui->precision->getValue();
+
+ bool scaleDefined = !scale.toString().isEmpty();
+ bool precisionDefined = !precision.toString().isEmpty();
+
+ bool precisionOk = !(precisionDefined && !scaleDefined);
+ bool scaleOk = true;
+
+ bool hasPk = column->getConstraint(SqliteCreateTable::Column::Constraint::PRIMARY_KEY) != nullptr;
+ bool isInteger = ui->typeCombo->currentText().toUpper() == "INTEGER";
+ if (hasPk && isInteger)
+ {
+ if (scaleDefined)
+ scaleOk = false;
+
+ if (precisionDefined)
+ {
+ precisionOk = false;
+ precisionErrorMsg = tr("Precision is not allowed for INTEGER PRIMARY KEY columns.");
+ }
+ }
+
+ setValidState(ui->scale, scaleOk, scaleErrorMsg);
+ setValidState(ui->precision, precisionOk, precisionErrorMsg);
+
+ if (!scaleOk || !precisionOk)
+ {
+ QPushButton* btn = ui->buttonBox->button(QDialogButtonBox::Ok);
+ btn->setEnabled(false);
+ }
+}
+
void ColumnDialog::moveConstraintUp()
{
QModelIndex idx = ui->constraintsView->currentIndex();
@@ -505,7 +546,7 @@ void ColumnDialog::switchMode(bool advanced)
ui->constraintModesWidget->setCurrentWidget(advanced ? ui->advancedPage : ui->simplePage);
}
-void ColumnDialog::updateConstraints()
+void ColumnDialog::updateValidations()
{
QPushButton* btn = ui->buttonBox->button(QDialogButtonBox::Ok);
btn->setEnabled(true);
@@ -536,8 +577,10 @@ void ColumnDialog::updateConstraints()
setValidState(tb, true);
}
- foreach (SqliteCreateTable::Column::Constraint* constr, column->constraints)
+ for (SqliteCreateTable::Column::Constraint* constr : column->constraints)
updateConstraint(constr);
+
+ updateTypeValidations();
}
void ColumnDialog::updateConstraint(SqliteCreateTable::Column::Constraint* constraint)
@@ -564,7 +607,7 @@ void ColumnDialog::setColumn(SqliteCreateTable::Column* value)
ui->precision->setValue(value->type->precision, false);
}
- updateConstraints();
+ updateValidations();
}
SqliteCreateTable::Column* ColumnDialog::getModifiedColumn()
@@ -602,9 +645,13 @@ void ColumnDialog::updateDataType()
if (!scaleTxt.isEmpty())
column->type->scale = ui->scale->getValue();
+ else
+ column->type->scale = QVariant();
if (!precisionTxt.isEmpty())
column->type->precision = ui->precision->getValue();
+ else
+ column->type->precision = QVariant();
column->type->rebuildTokens();
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
index c567e1a..596441c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
@@ -67,6 +67,7 @@ class GUI_API_EXPORT ColumnDialog : public QDialog, public ExtActionContainer
QCheckBox* getCheckBoxForConstraint(SqliteCreateTable::Column::Constraint* constraint);
QToolButton* getToolButtonForConstraint(SqliteCreateTable::Column::Constraint* constraint);
bool isUnofficialSqlite2Constraint(SqliteCreateTable::Column::Constraint* constraint);
+ void updateTypeValidations();
Ui::ColumnDialog *ui = nullptr;
SqliteCreateTable::ColumnPtr column;
@@ -105,7 +106,7 @@ class GUI_API_EXPORT ColumnDialog : public QDialog, public ExtActionContainer
void notNullToggled(bool enabled);
void defaultToggled(bool enabled);
void switchMode(bool advanced);
- void updateConstraints();
+ void updateValidations();
void updateConstraint(SqliteCreateTable::Column::Constraint* constraint);
void updateDataType();
};
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
index 627e2c1..42c7099 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
@@ -168,13 +168,7 @@ void ConfigDialog::init()
ui->categoriesTree->setCurrentItem(ui->categoriesTree->topLevelItem(0));
configMapper = new ConfigMapper(CfgMain::getPersistableInstances());
- connect(configMapper, SIGNAL(modified()), this, SLOT(markModified()));
- connect(configMapper, &ConfigMapper::notifyEnabledWidgetModified, [=](QWidget* widget, CfgEntry* key, const QVariant& value)
- {
- UNUSED(widget);
- for (ConfigNotifiablePlugin* plugin : notifiablePlugins)
- plugin->configModified(key, value);
- });
+ connectMapperSignals(configMapper);
ui->categoriesFilter->setClearButtonEnabled(true);
UserInputFilter* filter = new UserInputFilter(ui->categoriesFilter, this, SLOT(applyFilter(QString)));
@@ -575,6 +569,12 @@ void ConfigDialog::commitPluginConfigs()
}
}
+void ConfigDialog::connectMapperSignals(ConfigMapper* mapper)
+{
+ connect(mapper, SIGNAL(modified()), this, SLOT(markModified()));
+ connect(mapper, SIGNAL(notifyEnabledWidgetModified(QWidget*, CfgEntry*, const QVariant&)), this, SLOT(notifyPluginsAboutModification(QWidget*, CfgEntry*, const QVariant&)));
+}
+
void ConfigDialog::updateDataTypeListState()
{
bool listEditingEnabled = ui->dataEditorsTypesList->selectedItems().size() > 0 && ui->dataEditorsTypesList->currentItem()->flags().testFlag(Qt::ItemIsEditable);
@@ -952,6 +952,12 @@ void ConfigDialog::markRequiresSchemasRefresh()
requiresSchemasRefresh = true;
}
+void ConfigDialog::notifyPluginsAboutModification(QWidget*, CfgEntry* key, const QVariant& value)
+{
+ for (ConfigNotifiablePlugin* plugin : notifiablePlugins)
+ plugin->configModified(key, value);
+}
+
void ConfigDialog::updatePluginCategoriesVisibility(QTreeWidgetItem* categoryItem)
{
categoryItem->setHidden(categoryItem->childCount() == 0);
@@ -1325,7 +1331,12 @@ bool ConfigDialog::initPluginPage(Plugin* plugin, bool skipConfigLoading)
{
pluginConfigMappers[cfgPlugin] = new ConfigMapper(mainConfig);
pluginConfigMappers[cfgPlugin]->bindToConfig(widget);
+ connectMapperSignals(pluginConfigMappers[cfgPlugin]);
mainConfig->begin();
+
+ // Remove this config from global mapper (if present there), so it's handled per plugin mapper
+ configMapper->removeMainCfgEntry(mainConfig);
+ configMapper->ignoreWidget(widget);
}
else if (!skipConfigLoading)
{
@@ -1342,7 +1353,7 @@ void ConfigDialog::deinitPluginPage(Plugin* plugin)
if (!nameToPage.contains(pluginName))
return;
- if (!dynamic_cast<UiConfiguredPlugin*>(plugin))
+ if (dynamic_cast<UiConfiguredPlugin*>(plugin))
{
UiConfiguredPlugin* cfgPlugin = dynamic_cast<UiConfiguredPlugin*>(plugin);
CfgMain* mainCfg = cfgPlugin->getMainUiConfig();
@@ -1360,6 +1371,7 @@ void ConfigDialog::deinitPluginPage(Plugin* plugin)
QWidget* widget = nameToPage[pluginName];
nameToPage.remove(pluginName);
+ configMapper->removeIgnoredWidget(widget);
ui->stackedWidget->removeWidget(widget);
delete widget;
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.h
index ae2f3a7..f0ab1de 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.h
@@ -84,6 +84,7 @@ class GUI_API_EXPORT ConfigDialog : public QDialog
void addDataType(const QString& typeStr);
void rollbackPluginConfigs();
void commitPluginConfigs();
+ void connectMapperSignals(ConfigMapper* mapper);
Ui::ConfigDialog *ui = nullptr;
QStyle* previewStyle = nullptr;
@@ -136,6 +137,7 @@ class GUI_API_EXPORT ConfigDialog : public QDialog
void updateBuiltInPluginsVisibility();
void applyShortcutsFilter(const QString& filter);
void markRequiresSchemasRefresh();
+ void notifyPluginsAboutModification(QWidget*, CfgEntry* key, const QVariant& value);
public slots:
void accept();
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
index 1c5515d..c69ad20 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.ui
@@ -14,16 +14,6 @@
<string>Configuration</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
- <item row="1" column="0">
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
<item row="0" column="0">
<widget class="QWidget" name="mainWidget" native="true">
<property name="contextMenuPolicy">
@@ -173,23 +163,15 @@
</item>
<item>
<property name="text">
- <string>Plugins</string>
+ <string>Database list</string>
</property>
<property name="statusTip">
- <string notr="true">pluginsPage</string>
+ <string notr="true">databaseListPage</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
- <normaloff>:/icons/img/plugin.png</normaloff>:/icons/img/plugin.png</iconset>
+ <normaloff>:/icons/img/database_online.png</normaloff>:/icons/img/database_online.png</iconset>
</property>
- <item>
- <property name="text">
- <string>Code formatters</string>
- </property>
- <property name="statusTip">
- <string notr="true">formatterPluginsPage</string>
- </property>
- </item>
</item>
<item>
<property name="text">
@@ -215,6 +197,26 @@
</property>
</item>
</item>
+ <item>
+ <property name="text">
+ <string>Plugins</string>
+ </property>
+ <property name="statusTip">
+ <string notr="true">pluginsPage</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../icons.qrc">
+ <normaloff>:/icons/img/plugin.png</normaloff>:/icons/img/plugin.png</iconset>
+ </property>
+ <item>
+ <property name="text">
+ <string>Code formatters</string>
+ </property>
+ <property name="statusTip">
+ <string notr="true">formatterPluginsPage</string>
+ </property>
+ </item>
+ </item>
</widget>
</item>
</layout>
@@ -227,68 +229,116 @@
</sizepolicy>
</property>
<property name="currentIndex">
- <number>0</number>
+ <number>5</number>
</property>
- <widget class="QWidget" name="dataBrowsingPage">
- <layout class="QVBoxLayout" name="verticalLayout_21">
+ <widget class="QWidget" name="databaseListPage">
+ <layout class="QVBoxLayout" name="verticalLayout_36">
<item>
- <widget class="QGroupBox" name="dataBrowsingGroup">
+ <widget class="QGroupBox" name="dbListGroup">
<property name="title">
- <string>Data browsing and editing</string>
+ <string>Database list</string>
</property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0">
- <widget class="QLabel" name="rowsPerPageLabel">
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="sortColumns">
+ <property name="toolTip">
+ <string>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</string>
+ </property>
<property name="text">
- <string>Number of data rows per page:</string>
+ <string>Sort table columns alphabetically</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.SortColumns</string>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="rowsPerPageSpin">
- <property name="maximumSize">
- <size>
- <width>150</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>99999</number>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="expandTablesCheck">
+ <property name="text">
+ <string>Expand tables node when connected to a database</string>
</property>
<property name="cfg" stdset="0">
- <string notr="true">General.NumberOfRowsPerPage</string>
+ <string notr="true">General.ExpandTables</string>
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="initColWidthLimitLabel">
+ <item row="6" column="0">
+ <widget class="QGroupBox" name="addLabelsGroup">
<property name="toolTip">
- <string>&lt;p&gt;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.&lt;/p&gt;</string>
+ <string>&lt;p&gt;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.&lt;p&gt;</string>
+ </property>
+ <property name="title">
+ <string>Display additional labels on the list</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.ShowDbTreeLabels</string>
</property>
+ <layout class="QVBoxLayout" name="verticalLayout_20">
+ <item>
+ <widget class="QCheckBox" name="regularTableLabelsCheck">
+ <property name="toolTip">
+ <string>For regular tables labels will show number of columns, indexes and triggers for each of tables.</string>
+ </property>
+ <property name="text">
+ <string>Display labels for regular tables</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.ShowRegularTableLabels</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="virtTableLabelsCheck">
+ <property name="toolTip">
+ <string>Virtual tables will be marked with a 'virtual' label.</string>
+ </property>
+ <property name="text">
+ <string>Display labels for virtual tables</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.ShowVirtualTableLabels</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="expandViewsCheck">
<property name="text">
- <string>Limit initial data column width to (in pixels):</string>
+ <string>Expand views node when connected to a database</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.ExpandViews</string>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QSpinBox" name="initColWidthLimitSpin">
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="sortObjects">
<property name="toolTip">
- <string>&lt;p&gt;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.&lt;/p&gt;</string>
+ <string>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)</string>
</property>
- <property name="minimum">
- <number>10</number>
+ <property name="text">
+ <string>Sort objects (tables, indexes, triggers and views) alphabetically</string>
</property>
- <property name="maximum">
- <number>99999</number>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.SortObjects</string>
</property>
- <property name="value">
- <number>600</number>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="dispSysTableCheck">
+ <property name="text">
+ <string>Display system tables and indexes on the list</string>
</property>
<property name="cfg" stdset="0">
- <string notr="true">General.MaxInitialColumnWith</string>
+ <string notr="true">General.ShowSystemObjects</string>
</property>
</widget>
</item>
@@ -296,50 +346,34 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="insertRowPlacementGroup">
+ <widget class="QGroupBox" name="dbDialogGroup">
<property name="title">
- <string>Inserting new row in data grid</string>
+ <string>Database dialog window</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_33">
+ <layout class="QVBoxLayout" name="verticalLayout_37">
<item>
- <widget class="ConfigRadioButton" name="insertRowBeforeRadio">
- <property name="text">
- <string>Before currently selected row</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- <property name="assignedValue" stdset="0">
- <number>0</number>
- </property>
- <property name="cfg" stdset="0">
- <string>General.InsertRowPlacement</string>
+ <widget class="QCheckBox" name="dontMarkDbAsDefaultCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</string>
</property>
- </widget>
- </item>
- <item>
- <widget class="ConfigRadioButton" name="insertRowAfterRadio">
<property name="text">
- <string>After currently selected row</string>
- </property>
- <property name="assignedValue" stdset="0">
- <number>1</number>
+ <string>Do not mark database to be &quot;permanent&quot; by default</string>
</property>
<property name="cfg" stdset="0">
- <string>General.InsertRowPlacement</string>
+ <string notr="true">General.NewDbNotPermanentByDefault</string>
</property>
</widget>
</item>
<item>
- <widget class="ConfigRadioButton" name="insertRowAtEndRadio">
- <property name="text">
- <string>At the end of data view</string>
+ <widget class="QCheckBox" name="bypassDbDialogCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;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.&lt;/p&gt;</string>
</property>
- <property name="assignedValue" stdset="0">
- <number>2</number>
+ <property name="text">
+ <string>Try to bypass dialog completly when dropping database file onto the list</string>
</property>
<property name="cfg" stdset="0">
- <string>General.InsertRowPlacement</string>
+ <string notr="true">General.BypassDbDialogWhenDropped</string>
</property>
</widget>
</item>
@@ -347,7 +381,7 @@
</widget>
</item>
<item>
- <spacer name="verticalSpacer_6">
+ <spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@@ -361,6 +395,240 @@
</item>
</layout>
</widget>
+ <widget class="QWidget" name="dataBrowsingPage">
+ <layout class="QVBoxLayout" name="verticalLayout_21">
+ <item>
+ <widget class="QScrollArea" name="dataBrowsingScrollArea">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="dataBrowsingScrollAreaContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>564</width>
+ <height>504</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_34">
+ <item>
+ <widget class="QGroupBox" name="dataBrowsingGroup">
+ <property name="title">
+ <string>Data browsing and editing</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="rowsPerPageLabel">
+ <property name="text">
+ <string>Number of data rows per page:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="rowsPerPageSpin">
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>99999</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.NumberOfRowsPerPage</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="initColWidthLimitLabel">
+ <property name="toolTip">
+ <string>&lt;p&gt;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.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Limit initial data column width to (in pixels):</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="initColWidthLimitSpin">
+ <property name="toolTip">
+ <string>&lt;p&gt;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.&lt;/p&gt;</string>
+ </property>
+ <property name="minimum">
+ <number>10</number>
+ </property>
+ <property name="maximum">
+ <number>99999</number>
+ </property>
+ <property name="value">
+ <number>600</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.MaxInitialColumnWith</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="tolltipInDataViewCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;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.&lt;/p&gt;</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>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="insertRowPlacementGroup">
+ <property name="title">
+ <string>Inserting new row in data grid</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_33">
+ <item>
+ <widget class="ConfigRadioButton" name="insertRowBeforeRadio">
+ <property name="text">
+ <string>Before currently selected row</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="assignedValue" stdset="0">
+ <number>0</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.InsertRowPlacement</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="ConfigRadioButton" name="insertRowAfterRadio">
+ <property name="text">
+ <string>After currently selected row</string>
+ </property>
+ <property name="assignedValue" stdset="0">
+ <number>1</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.InsertRowPlacement</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="ConfigRadioButton" name="insertRowAtEndRadio">
+ <property name="text">
+ <string>At the end of data view</string>
+ </property>
+ <property name="assignedValue" stdset="0">
+ <number>2</number>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.InsertRowPlacement</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="tableWinGroup">
+ <property name="title">
+ <string>Table windows</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_18">
+ <item>
+ <widget class="QCheckBox" name="openTablesOnDataCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Open Table Windows with the data tab for start</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.OpenTablesOnData</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="dataTabInTableAsFirstCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Place data tab as first tab in a Table Window</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.DataTabAsFirstInTables</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="viewWinGroup">
+ <property name="title">
+ <string>View windows</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_19">
+ <item>
+ <widget class="QCheckBox" name="openViewsOnDataCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Open View Windows with the data tab for start</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.OpenViewsOnData</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="dataTabInViewAsFirstCheck">
+ <property name="toolTip">
+ <string>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Place data tab as first tab in a View Window</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.DataTabAsFirstInViews</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
<widget class="QWidget" name="dataEditorsPage">
<layout class="QVBoxLayout" name="verticalLayout_24">
<item>
@@ -598,6 +866,28 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="statusFieldGroup_2">
+ <property name="title">
+ <string>Status Field</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_35">
+ <item>
+ <widget class="QCheckBox" name="checkBox_2">
+ <property name="toolTip">
+ <string>&lt;p&gt;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 &quot;View&quot; menu.&lt;/p&gt;</string>
+ </property>
+ <property name="text">
+ <string>Always open Status panel when new message is printed</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">General.AutoOpenStatusField</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -711,8 +1001,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>456</width>
- <height>608</height>
+ <width>596</width>
+ <height>487</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_31">
@@ -757,163 +1047,7 @@
<bool>true</bool>
</property>
<property name="cfg" stdset="0">
- <string>General.CompactLayout</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="dbListGroup">
- <property name="title">
- <string>Database list</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="4" column="0">
- <widget class="QCheckBox" name="sortColumns">
- <property name="toolTip">
- <string>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</string>
- </property>
- <property name="text">
- <string>Sort table columns alphabetically</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.SortColumns</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QCheckBox" name="expandTablesCheck">
- <property name="text">
- <string>Expand tables node when connected to a database</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ExpandTables</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QGroupBox" name="addLabelsGroup">
- <property name="toolTip">
- <string>&lt;p&gt;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.&lt;p&gt;</string>
- </property>
- <property name="title">
- <string>Display additional labels on the list</string>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ShowDbTreeLabels</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_20">
- <item>
- <widget class="QCheckBox" name="regularTableLabelsCheck">
- <property name="toolTip">
- <string>For regular tables labels will show number of columns, indexes and triggers for each of tables.</string>
- </property>
- <property name="text">
- <string>Display labels for regular tables</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ShowRegularTableLabels</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="virtTableLabelsCheck">
- <property name="toolTip">
- <string>Virtual tables will be marked with a 'virtual' label.</string>
- </property>
- <property name="text">
- <string>Display labels for virtual tables</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ShowVirtualTableLabels</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="expandViewsCheck">
- <property name="text">
- <string>Expand views node when connected to a database</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ExpandViews</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QCheckBox" name="sortObjects">
- <property name="toolTip">
- <string>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)</string>
- </property>
- <property name="text">
- <string>Sort objects (tables, indexes, triggers and views) alphabetically</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.SortObjects</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="dispSysTableCheck">
- <property name="text">
- <string>Display system tables and indexes on the list</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.ShowSystemObjects</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="tableWinGroup">
- <property name="title">
- <string>Table windows</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_18">
- <item>
- <widget class="QCheckBox" name="openTablesOnDataCheck">
- <property name="toolTip">
- <string>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</string>
- </property>
- <property name="text">
- <string>Open Table Windows with the data tab for start</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.OpenTablesOnData</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="viewWinGroup">
- <property name="title">
- <string>View windows</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_19">
- <item>
- <widget class="QCheckBox" name="openViewsOnDataCheck">
- <property name="toolTip">
- <string>When enabled, View Windows will show up with the data tab, instead of the structure tab.</string>
- </property>
- <property name="text">
- <string>Open View Windows with the data tab for start</string>
- </property>
- <property name="cfg" stdset="0">
- <string notr="true">General.OpenViewsOnData</string>
+ <string notr="true">General.CompactLayout</string>
</property>
</widget>
</item>
@@ -966,6 +1100,19 @@
</layout>
</widget>
</item>
+ <item>
+ <spacer name="verticalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
</widget>
</widget>
@@ -1275,7 +1422,7 @@
<string notr="true">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'.Helvetica Neue DeskInterface'; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;Abcdefgh&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
@@ -1366,8 +1513,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
- <width>249</width>
- <height>322</height>
+ <width>290</width>
+ <height>323</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@@ -1488,8 +1635,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
- <width>329</width>
- <height>813</height>
+ <width>352</width>
+ <height>806</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -2012,6 +2159,16 @@ p, li { white-space: pre-wrap; }
</layout>
</widget>
</item>
+ <item row="4" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
</layout>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
index a3d0e65..6bdf41f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
@@ -102,6 +102,9 @@ void DbDialog::showEvent(QShowEvent *e)
updateOptions();
updateState();
+ if (doAutoTest)
+ testConnectionClicked();
+
QDialog::showEvent(e);
}
@@ -133,6 +136,9 @@ void DbDialog::init()
generateNameSwitched(true);
layout()->setSizeConstraint(QLayout::SetFixedSize);
+
+ if (mode == Mode::ADD && CFG_UI.General.NewDbNotPermanentByDefault.get())
+ ui->permamentCheckBox->setChecked(false);
}
void DbDialog::updateOptions()
@@ -396,32 +402,11 @@ void DbDialog::updateType()
if (disableTypeAutodetection)
return;
- QFileInfo file(ui->fileEdit->text());
- if (!file.exists() || file.isDir())
+ DbPlugin* validPlugin = SQLITESTUDIO->getDbManager()->getPluginForDbFile(ui->fileEdit->text());
+ if (!validPlugin || validPlugin->getLabel() == ui->typeCombo->currentText())
return;
- QString currentPluginLabel = ui->typeCombo->currentText();
- QList<DbPlugin*> validPlugins;
- QHash<QString,QVariant> options;
- QString path = ui->fileEdit->text();
- Db* probeDb = nullptr;
- for (DbPlugin* plugin : dbPlugins)
- {
- probeDb = plugin->getInstance("", path, options);
- if (probeDb)
- {
- delete probeDb;
- probeDb = nullptr;
-
- if (plugin->getLabel() == currentPluginLabel)
- return; // current plugin is among valid plugins, no need to change anything
-
- validPlugins << plugin;
- }
- }
-
- if (validPlugins.size() > 0)
- ui->typeCombo->setCurrentText(validPlugins.first()->getLabel());
+ ui->typeCombo->setCurrentText(validPlugin->getLabel());
}
QHash<QString, QVariant> DbDialog::collectOptions()
@@ -486,10 +471,9 @@ bool DbDialog::validate()
}
}
- Db* registeredDb = DBLIST->getByName(ui->nameEdit->text());
+ Db* registeredDb = DBLIST->getByName(ui->nameEdit->text(), Qt::CaseInsensitive);
if (registeredDb && (mode == Mode::ADD || registeredDb != db))
{
- qDebug() << ui->generateCheckBox->isChecked();
setValidState(ui->nameEdit, false, tr("This name is already in use. Please enter unique name."));
return false;
}
@@ -534,6 +518,11 @@ void DbDialog::updateState()
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(validate());
}
+void DbDialog::setDoAutoTest(bool value)
+{
+ doAutoTest = value;
+}
+
void DbDialog::propertyChanged()
{
ui->testConnIcon->setVisible(false);
@@ -543,7 +532,7 @@ void DbDialog::typeChanged(int index)
{
UNUSED(index);
updateOptions();
- updateState();
+ valueForNameGenerationChanged();
}
void DbDialog::valueForNameGenerationChanged()
@@ -552,13 +541,16 @@ void DbDialog::valueForNameGenerationChanged()
if (!ui->generateCheckBox->isChecked())
return;
+ QString generatedName;
if (dbPlugins.count() > 0)
{
DbPlugin* plugin = dbPlugins[ui->typeCombo->currentText()];
- QString generatedName = plugin->generateDbName(ui->fileEdit->text());
- generatedName = generateUniqueName(generatedName, existingDatabaseNames);
- ui->nameEdit->setText(generatedName);
+ generatedName = DBLIST->generateUniqueDbName(plugin, ui->fileEdit->text());
}
+ else
+ generatedName = DBLIST->generateUniqueDbName(ui->fileEdit->text());
+
+ ui->nameEdit->setText(generatedName);
}
void DbDialog::browseForFile()
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
index ce73b11..2beea3e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h
@@ -39,6 +39,7 @@ class GUI_API_EXPORT DbDialog : public QDialog
QString getName();
QHash<QString,QVariant> collectOptions();
bool isPermanent();
+ void setDoAutoTest(bool value);
protected:
void changeEvent(QEvent *e);
@@ -68,6 +69,7 @@ class GUI_API_EXPORT DbDialog : public QDialog
QWidget* lastWidgetInTabOrder = nullptr;
DbPluginOption::CustomBrowseHandler customBrowseHandler = nullptr;
bool disableTypeAutodetection = false;
+ bool doAutoTest = false;
static const constexpr int ADDITIONAL_ROWS_BEGIN_INDEX = 1;
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.ui
index 333d887..186114b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>515</width>
- <height>414</height>
+ <width>614</width>
+ <height>493</height>
</rect>
</property>
<property name="windowTitle">
@@ -289,8 +289,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>483</width>
- <height>318</height>
+ <width>308</width>
+ <height>267</height>
</rect>
</property>
<property name="styleSheet">
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
index cdae91d..c5da317 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
@@ -1,7 +1,6 @@
#include "indexdialog.h"
#include "ui_indexdialog.h"
#include "schemaresolver.h"
-#include "parser/ast/sqliteindexedcolumn.h"
#include "services/notifymanager.h"
#include "common/utils_sql.h"
#include "db/chainexecutor.h"
@@ -11,6 +10,7 @@
#include "services/config.h"
#include "uiutils.h"
#include "sqlite3.h"
+#include "indexexprcolumndialog.h"
#include "windows/editorwindow.h"
#include "services/codeformatter.h"
#include <QDebug>
@@ -40,6 +40,7 @@ IndexDialog::IndexDialog(Db* db, const QString& index, QWidget* parent) :
IndexDialog::~IndexDialog()
{
+ clearColumns();
delete ui;
}
@@ -67,20 +68,34 @@ void IndexDialog::init()
return;
}
+ ui->moveUpButton->setIcon(ICONS.MOVE_UP);
+ ui->moveDownButton->setIcon(ICONS.MOVE_DOWN);
+ ui->addExprColumnButton->setIcon(ICONS.INDEX_EXPR_ADD);
+ ui->editExprColumnButton->setIcon(ICONS.INDEX_EXPR_EDIT);
+ ui->delExprColumnButton->setIcon(ICONS.INDEX_EXPR_DEL);
+ connect(ui->moveUpButton, SIGNAL(clicked()), this, SLOT(moveColumnUp()));
+ connect(ui->moveDownButton, SIGNAL(clicked()), this, SLOT(moveColumnDown()));
+ connect(ui->addExprColumnButton, SIGNAL(clicked()), this, SLOT(addExprColumn()));
+ connect(ui->editExprColumnButton, SIGNAL(clicked()), this, SLOT(editExprColumn()));
+ connect(ui->delExprColumnButton, SIGNAL(clicked()), this, SLOT(delExprColumn()));
+ connect(ui->columnsTable, SIGNAL(cellDoubleClicked(int,int)), this, SLOT(editExprColumn(int)));
+
ui->columnsTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
+ connect(ui->columnsTable->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(updateToolBarButtons(QModelIndex)));
ui->partialIndexEdit->setDb(db);
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)));
columnStateSignalMapping = new QSignalMapper(this);
- connect(columnStateSignalMapping, SIGNAL(mapped(int)), this, SLOT(updateColumnState(int)));
+ connect(columnStateSignalMapping, SIGNAL(mapped(QString)), this, SLOT(updateColumnState(QString)));
SchemaResolver resolver(db);
ui->tableCombo->addItem(QString::null);
ui->tableCombo->addItems(resolver.getTables());
connect(ui->tableCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(updateTable(QString)));
connect(ui->tableCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(updateValidation()));
+ connect(ui->uniqueCheck, SIGNAL(toggled(bool)), this, SLOT(updateValidation()));
if (existingIndex)
ui->tableCombo->setEnabled(false);
@@ -98,6 +113,9 @@ void IndexDialog::init()
ui->partialIndexCheck->setVisible(false);
ui->partialIndexEdit->setVisible(false);
ui->columnsTable->setColumnHidden(1, true);
+ ui->addExprColumnButton->setVisible(false);
+ ui->editExprColumnButton->setVisible(false);
+ ui->delExprColumnButton->setVisible(false);
}
readCollations();
@@ -139,17 +157,17 @@ void IndexDialog::readIndex()
void IndexDialog::buildColumns()
{
// Clean up
+ clearColumns();
ui->columnsTable->setRowCount(0);
- columnCheckBoxes.clear();
- sortComboBoxes.clear();
- collateComboBoxes.clear();
totalColumns = tableColumns.size();
ui->columnsTable->setRowCount(totalColumns);
int row = 0;
- foreach (const QString& column, tableColumns)
+ for (const QString& column : tableColumns)
buildColumn(column, row++);
+
+ updateToolBarButtons();
}
void IndexDialog::updateTable(const QString& value)
@@ -166,15 +184,16 @@ void IndexDialog::updateValidation()
{
bool tableOk = ui->tableCombo->currentIndex() > 0;
bool colSelected = false;
+ bool hasExprColumn = false;
if (tableOk)
{
- foreach (QCheckBox* cb, columnCheckBoxes)
+ for (Column* col : columns.values())
{
- if (cb->isChecked())
+ if (col->getCheck()->isChecked())
{
colSelected = true;
- break;
+ hasExprColumn |= col->isExpr();
}
}
}
@@ -182,11 +201,14 @@ void IndexDialog::updateValidation()
bool partialConditionOk = (!ui->partialIndexCheck->isChecked() ||
(ui->partialIndexEdit->isSyntaxChecked() && !ui->partialIndexEdit->haveErrors()));
+ bool uniqueAndExprOk = !(ui->uniqueCheck->isChecked() && hasExprColumn);
+
+ setValidState(ui->uniqueCheck, uniqueAndExprOk, tr("Unique index cannot have indexed expressions. Either remove expressions from list below, or uncheck this option."));
setValidState(ui->tableCombo, tableOk, tr("Pick the table for the index."));
setValidState(ui->columnsTable, colSelected, tr("Select at least one column."));
setValidState(ui->partialIndexCheck, partialConditionOk, tr("Enter a valid condition."));
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(colSelected && partialConditionOk);
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(colSelected && partialConditionOk && uniqueAndExprOk);
}
void IndexDialog::setTable(const QString& value)
@@ -207,9 +229,30 @@ void IndexDialog::readCollations()
void IndexDialog::buildColumn(const QString& name, int row)
{
- int col = 0;
+ Column* column = new Column(name, ui->columnsTable);
+ buildColumn(column, row);
+}
+
+IndexDialog::Column* IndexDialog::buildColumn(SqliteOrderBy* orderBy, int row)
+{
+ SqliteExpr* expr = dynamic_cast<SqliteExpr*>(orderBy->expr->clone());
+ return buildColumn(expr, row);
+}
+
+IndexDialog::Column* IndexDialog::buildColumn(SqliteExpr* expr, int row)
+{
+ Column* column = new Column(expr, ui->columnsTable);
+ buildColumn(column, row);
+ return column;
+}
- QWidget* checkParent = new QWidget();
+void IndexDialog::buildColumn(Column* column, int row)
+{
+ QString key = column->getKey();
+ columns[key] = column;
+ columnsByRow << column;
+
+ column->setCheckParent(new QWidget());
QHBoxLayout* layout = new QHBoxLayout();
QMargins margins = layout->contentsMargins();
margins.setTop(0);
@@ -217,51 +260,45 @@ void IndexDialog::buildColumn(const QString& name, int row)
margins.setLeft(4);
margins.setRight(4);
layout->setContentsMargins(margins);
- checkParent->setLayout(layout);
+ column->getCheckParent()->setLayout(layout);
- QCheckBox* check = new QCheckBox(name);
- checkParent->layout()->addWidget(check);
+ column->setCheck(new QCheckBox(key));
+ column->getCheckParent()->layout()->addWidget(column->getCheck());
- ui->columnsTable->setCellWidget(row, col++, checkParent);
- columnStateSignalMapping->setMapping(check, row);
- connect(check, SIGNAL(toggled(bool)), columnStateSignalMapping, SLOT(map()));
- connect(check, SIGNAL(toggled(bool)), this, SLOT(updateValidation()));
- columnCheckBoxes << check;
+ columnStateSignalMapping->setMapping(column->getCheck(), key);
+ connect(column->getCheck(), SIGNAL(toggled(bool)), columnStateSignalMapping, SLOT(map()));
+ connect(column->getCheck(), SIGNAL(toggled(bool)), this, SLOT(updateValidation()));
- QComboBox* collation = nullptr;
if (db->getDialect() == Dialect::Sqlite3)
{
- collation = new QComboBox();
- collation->setEditable(true);
- collation->lineEdit()->setPlaceholderText(tr("default", "index dialog"));
- collation->setModel(&collations);
- ui->columnsTable->setCellWidget(row, col++, collation);
- collateComboBoxes << collation;
- }
- else
- {
- col++;
+ column->setCollation(new QComboBox());
+ column->getCollation()->setEditable(true);
+ column->getCollation()->lineEdit()->setPlaceholderText(tr("default", "index dialog"));
+ column->getCollation()->setModel(&collations);
}
- QComboBox* sortOrder = new QComboBox();
- sortOrder->setToolTip(tr("Sort order", "table constraints"));
- ui->columnsTable->setCellWidget(row, col++, sortOrder);
- sortComboBoxes << sortOrder;
+ column->setSort(new QComboBox());
+ column->getSort()->setToolTip(tr("Sort order", "table constraints"));
QStringList sortList = {"", sqliteSortOrder(SqliteSortOrder::ASC), sqliteSortOrder(SqliteSortOrder::DESC)};
- sortOrder->addItems(sortList);
+ column->getSort()->addItems(sortList);
+
+ column->prepareForNewRow();
+ column->assignToNewRow(row);
totalColumns++;
- updateColumnState(row);
+ updateColumnState(key);
}
-void IndexDialog::updateColumnState(int row)
+void IndexDialog::updateColumnState(const QString& columnKey)
{
- bool enabled = columnCheckBoxes[row]->isChecked();
- sortComboBoxes[row]->setEnabled(enabled);
- if (db->getDialect() == Dialect::Sqlite3)
- collateComboBoxes[row]->setEnabled(enabled);
+ Column* col = columns[columnKey];
+
+ bool enabled = col->getCheck()->isChecked();
+ col->getSort()->setEnabled(enabled);
+ if (col->hasCollation())
+ col->getCollation()->setEnabled(enabled);
}
void IndexDialog::updatePartialConditionState()
@@ -283,26 +320,204 @@ void IndexDialog::tabChanged(int tab)
updateDdl();
}
+void IndexDialog::moveColumnUp()
+{
+ QModelIndex idx = ui->columnsTable->selectionModel()->currentIndex();
+ if (!idx.isValid())
+ return;
+
+ int row = idx.row();
+ if (row <= 0)
+ return;
+
+ columnsByRow.move(row, row - 1);
+ rebuildColumnsByNewOrder();
+
+ idx = ui->columnsTable->model()->index(row - 1, 0);
+ ui->columnsTable->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+}
+
+void IndexDialog::moveColumnDown()
+{
+ QModelIndex idx = ui->columnsTable->selectionModel()->currentIndex();
+ if (!idx.isValid())
+ return;
+
+ int row = idx.row();
+ int cols = tableColumns.size();
+
+ if ((row + 1) >= cols)
+ return;
+
+ columnsByRow.move(row, row + 1);
+ rebuildColumnsByNewOrder();
+
+ idx = ui->columnsTable->model()->index(row + 1, 0);
+ ui->columnsTable->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+}
+
+void IndexDialog::updateToolBarButtons(const QModelIndex& idx)
+{
+ if (!idx.isValid())
+ {
+ ui->editExprColumnButton->setEnabled(false);
+ ui->delExprColumnButton->setEnabled(false);
+ ui->moveUpButton->setEnabled(false);
+ ui->moveDownButton->setEnabled(false);
+ return;
+ }
+
+ int row = idx.row();
+ int cols = tableColumns.size();
+ ui->moveUpButton->setEnabled(row > 0);
+ ui->moveDownButton->setEnabled((row + 1) < cols);
+
+ bool isExpr = columnsByRow[row]->isExpr();
+ ui->editExprColumnButton->setEnabled(isExpr);
+ ui->delExprColumnButton->setEnabled(isExpr);
+}
+
+void IndexDialog::addExprColumn()
+{
+ IndexExprColumnDialog dialog(db, this);
+ dialog.setExistingExprColumnKeys(getExistingColumnExprs());
+ dialog.setTableColumns(getTableColumns());
+ if (!dialog.exec())
+ return;
+
+ SqliteExpr* expr = dialog.getColumn();
+ if (!expr)
+ {
+ qCritical() << "Null expr in IndexDialog::addExprColumn(). Aborting.";
+ return;
+ }
+
+ int row = columnsByRow.size();
+ ui->columnsTable->insertRow(row);
+
+ Column* col = buildColumn(expr, row);
+ col->getCheck()->setChecked(true);
+ rebuildColumnsByNewOrder();
+
+ ui->columnsTable->scrollToBottom();
+ updateValidation();
+}
+
+void IndexDialog::editExprColumn(int row)
+{
+ if (row < 0)
+ row = ui->columnsTable->currentRow();
+
+ if (row < 0 || row >= columnsByRow.size())
+ {
+ qWarning() << "IndexDialog::editExprColumn() called for row out of bounds:" << row << "while there are" << columnsByRow.size() << "rows.";
+ return;
+ }
+
+ Column* col = columnsByRow[row];
+ if (!col->isExpr())
+ {
+ qWarning() << "IndexDialog::editExprColumn() called for non-expr index column.";
+ return;
+ }
+
+ IndexExprColumnDialog dialog(db, col->getExpr(), this);
+ dialog.setExistingExprColumnKeys(getExistingColumnExprs(col->getKey()));
+ dialog.setTableColumns(getTableColumns());
+ if (!dialog.exec())
+ return;
+
+ SqliteExpr* expr = dialog.getColumn();
+ if (!expr)
+ {
+ qCritical() << "Null expr in IndexDialog::editExprColumn(). Aborting.";
+ return;
+ }
+
+ QString oldKey = col->getKey();
+ col->setExpr(expr);
+ QString newKey = col->getKey();
+
+ columns.remove(oldKey);
+ columns[newKey] = col;
+
+ col->getCheck()->setText(newKey);
+ col->getCheck()->setChecked(true);
+ rebuildColumnsByNewOrder();
+ updateValidation();
+}
+
+void IndexDialog::delExprColumn()
+{
+ int row = ui->columnsTable->currentRow();
+
+ if (row < 0 || row >= columnsByRow.size())
+ {
+ qWarning() << "IndexDialog::delExprColumn() called for row out of bounds:" << row << "while there are" << columnsByRow.size() << "rows.";
+ return;
+ }
+
+ Column* col = columnsByRow[row];
+ if (!col->isExpr())
+ {
+ qWarning() << "IndexDialog::delExprColumn() called for non-expr index column.";
+ return;
+ }
+
+ // Removes all widgets in the row
+ ui->columnsTable->removeRow(row);
+
+ columnsByRow.removeOne(col);
+ columns.remove(col->getKey());
+ delete col;
+
+ rebuildColumnsByNewOrder();
+ updateValidation();
+}
+
void IndexDialog::applyColumnValues()
{
- Dialect dialect = db->getDialect();
- int row;
- foreach (SqliteIndexedColumn* idxCol, createIndex->indexedColumns)
+ Column* column = nullptr;
+ QString key;
+ int row = 0;
+ int totalRows = tableColumns.size();
+ bool orderChanged = false;
+ for (SqliteOrderBy* idxCol : createIndex->indexedColumns)
{
- row = indexOf(tableColumns, idxCol->name, Qt::CaseInsensitive);
- if (row == -1)
+ key = getKey(idxCol);
+
+ if (idxCol->isSimpleColumn())
{
- qCritical() << "Cannot find column from index in the table columns! Indexed column:" << idxCol->name
- << ", table columns:" << tableColumns << ", index name:" << index << ", table name:" << table;
- continue;
+ column = columns[key];
+ if (!column)
+ {
+ qCritical() << "Cannot find column by name or expression! Column name/expression:" << key
+ << ", available columns:" << columns.keys() << ", index name:" << index;
+ continue;
+ }
+ }
+ else
+ column = buildColumn(idxCol, totalRows++);
+
+ column->getCheck()->setChecked(true);
+ updateColumnState(key);
+ column->getSort()->setCurrentText(sqliteSortOrder(idxCol->order));
+ if (column->hasCollation())
+ column->getCollation()->setCurrentText(idxCol->getCollation());
+
+ // Setting proper order
+ int currentRow = columnsByRow.indexOf(column);
+ if (currentRow != row)
+ {
+ columnsByRow.move(currentRow, row);
+ orderChanged = true;
}
- columnCheckBoxes[row]->setChecked(true);
- updateColumnState(row);
- sortComboBoxes[row]->setCurrentText(sqliteSortOrder(idxCol->sortOrder));
- if (dialect == Dialect::Sqlite3)
- collateComboBoxes[row]->setCurrentText(idxCol->collate);
+ row++;
}
+
+ if (orderChanged)
+ rebuildColumnsByNewOrder();
}
void IndexDialog::applyIndex()
@@ -315,15 +530,43 @@ void IndexDialog::applyIndex()
ui->partialIndexEdit->setPlainText(createIndex->where->detokenize());
}
-SqliteIndexedColumn* IndexDialog::addIndexedColumn(const QString& name)
+SqliteOrderBy* IndexDialog::addIndexedColumn(const QString& name)
+{
+ SqliteOrderBy* idxCol = new SqliteOrderBy();
+ idxCol->setParent(createIndex.data());
+
+ SqliteExpr* expr = new SqliteExpr();
+ expr->initId(name);
+ idxCol->expr = expr;
+ expr->setParent(idxCol);
+
+ createIndex->indexedColumns << idxCol;
+ return idxCol;
+}
+
+SqliteOrderBy* IndexDialog::addIndexedColumn(SqliteExpr* expr)
{
- SqliteIndexedColumn* idxCol = new SqliteIndexedColumn();
- idxCol->name = name;
+ SqliteOrderBy* idxCol = new SqliteOrderBy();
idxCol->setParent(createIndex.data());
+
+ SqliteExpr* clonedExpr = dynamic_cast<SqliteExpr*>(expr->clone());
+ idxCol->expr = clonedExpr;
+ clonedExpr->setParent(idxCol);
+
createIndex->indexedColumns << idxCol;
return idxCol;
}
+void IndexDialog::addCollation(SqliteOrderBy* col, const QString& name)
+{
+ SqliteExpr* expr = new SqliteExpr();
+ col->expr->setParent(expr);
+ expr->initCollate(col->expr, name);
+ expr->setParent(col);
+
+ col->expr = expr;
+}
+
void IndexDialog::rebuildCreateIndex()
{
createIndex = SqliteCreateIndexPtr::create();
@@ -333,22 +576,22 @@ void IndexDialog::rebuildCreateIndex()
createIndex->uniqueKw = ui->uniqueCheck->isChecked();
- Dialect dialect = db->getDialect();
- SqliteIndexedColumn* idxCol = nullptr;
- int i = -1;
- for (const QString& column : tableColumns)
+ SqliteOrderBy* idxCol = nullptr;
+ for (Column* column : columnsByRow)
{
- i++;
-
- if (!columnCheckBoxes[i]->isChecked())
+ if (!column->getCheck()->isChecked())
continue;
- idxCol = addIndexedColumn(column);
- if (dialect == Dialect::Sqlite3 && !collateComboBoxes[i]->currentText().isEmpty())
- idxCol->collate = collateComboBoxes[i]->currentText();
+ if (column->isExpr())
+ idxCol = addIndexedColumn(column->getExpr());
+ else
+ idxCol = addIndexedColumn(column->getName());
+
+ if (column->hasCollation() && !column->getCollation()->currentText().isEmpty())
+ addCollation(idxCol, column->getCollation()->currentText());
- if (sortComboBoxes[i]->currentIndex() > 0)
- idxCol->sortOrder = sqliteSortOrder(sortComboBoxes[i]->currentText());
+ if (column->getSort()->currentIndex() > 0)
+ idxCol->order = sqliteSortOrder(column->getSort()->currentText());
}
if (ui->partialIndexCheck->isChecked())
@@ -388,10 +631,9 @@ void IndexDialog::queryDuplicates()
QStringList countCols;
QString wrappedCol;
QString countColName;
- int i = 0;
for (const QString& column : tableColumns)
{
- if (!columnCheckBoxes[i++]->isChecked())
+ if (!columns[column]->getCheck()->isChecked())
continue;
wrappedCol = wrapObjIfNeeded(column, dialect);
@@ -413,6 +655,62 @@ void IndexDialog::queryDuplicates()
editor->execute();
}
+void IndexDialog::clearColumns()
+{
+ for (Column* c : columns.values())
+ delete c;
+
+ columns.clear();
+ columnsByRow.clear();
+}
+
+void IndexDialog::rebuildColumnsByNewOrder()
+{
+ int row = 0;
+ for (Column* column : columnsByRow)
+ {
+ column->prepareForNewRow();
+ column->assignToNewRow(row++);
+ }
+}
+
+QString IndexDialog::getKey(SqliteOrderBy* col) const
+{
+ if (col->isSimpleColumn())
+ return col->getColumnName();
+
+ return col->expr->tokens.filterWhiteSpaces(false).detokenize();
+}
+
+QStringList IndexDialog::getExistingColumnExprs(const QString& exceptThis) const
+{
+ QString key;
+ QStringList exprs;
+ for (Column* col : columnsByRow)
+ {
+ if (col->isExpr())
+ {
+ key = col->getKey();
+ if (!exceptThis.isNull() && key == exceptThis)
+ continue;
+
+ exprs << key;
+ }
+ }
+ return exprs;
+}
+
+QStringList IndexDialog::getTableColumns() const
+{
+ QStringList cols;
+ for (Column* col : columnsByRow)
+ {
+ if (!col->isExpr())
+ cols << col->getKey();
+ }
+ return cols;
+}
+
void IndexDialog::accept()
{
rebuildCreateIndex();
@@ -468,3 +766,125 @@ void IndexDialog::accept()
.arg(executor.getErrorsMessages().join(",\n")), QMessageBox::Ok);
}
}
+
+IndexDialog::Column::Column(const QString& name, QTableWidget* table)
+{
+ this->name = name;
+ this->table = table;
+}
+
+IndexDialog::Column::Column(SqliteExpr* expr, QTableWidget* table)
+{
+ this->expr = expr;
+ this->table = table;
+}
+
+IndexDialog::Column::~Column()
+{
+ safe_delete(expr);
+}
+
+void IndexDialog::Column::assignToNewRow(int row)
+{
+ table->setCellWidget(row, 0, column1Contrainer);
+ table->setCellWidget(row, 1, column2Contrainer);
+ table->setCellWidget(row, 2, column3Contrainer);
+}
+
+void IndexDialog::Column::prepareForNewRow()
+{
+ column1Contrainer = defineContainer(checkParent);
+ column2Contrainer = defineContainer(sort);
+ if (collation)
+ column3Contrainer = defineContainer(collation);
+}
+
+QCheckBox* IndexDialog::Column::getCheck() const
+{
+ return check;
+}
+
+void IndexDialog::Column::setCheck(QCheckBox* cb)
+{
+ check = cb;
+}
+
+QWidget* IndexDialog::Column::getCheckParent() const
+{
+ return checkParent;
+}
+
+void IndexDialog::Column::setCheckParent(QWidget* w)
+{
+ checkParent = w;
+}
+
+QComboBox* IndexDialog::Column::getSort() const
+{
+ return sort;
+}
+
+void IndexDialog::Column::setSort(QComboBox* cb)
+{
+ sort = cb;
+}
+
+QComboBox* IndexDialog::Column::getCollation() const
+{
+ return collation;
+}
+
+void IndexDialog::Column::setCollation(QComboBox* cb)
+{
+ collation = cb;
+}
+
+bool IndexDialog::Column::hasCollation() const
+{
+ return collation != nullptr;
+}
+
+QString IndexDialog::Column::getName() const
+{
+ return name;
+}
+
+SqliteExpr* IndexDialog::Column::getExpr() const
+{
+ return expr;
+}
+
+void IndexDialog::Column::setExpr(SqliteExpr* expr)
+{
+ safe_delete(this->expr);
+ this->expr = expr;
+}
+
+bool IndexDialog::Column::isExpr() const
+{
+ return expr != nullptr;
+}
+
+QString IndexDialog::Column::getKey() const
+{
+ if (expr)
+ return expr->tokens.filterWhiteSpaces(false).detokenize();
+ else
+ return name;
+}
+
+QWidget* IndexDialog::Column::defineContainer(QWidget* w)
+{
+ QHBoxLayout* layout = new QHBoxLayout();
+ QMargins margins = layout->contentsMargins();
+ margins.setTop(0);
+ margins.setBottom(0);
+ margins.setLeft(0);
+ margins.setRight(0);
+ layout->setContentsMargins(margins);
+
+ QWidget* container = new QWidget();
+ container->setLayout(layout);
+ container->layout()->addWidget(w);
+ return container;
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.h
index 1f9d1f8..f29b651 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.h
@@ -4,6 +4,7 @@
#include "db/db.h"
#include "guiSQLiteStudio_global.h"
#include "parser/ast/sqlitecreateindex.h"
+#include "common/strhash.h"
#include <QDialog>
#include <QStringListModel>
@@ -15,6 +16,7 @@ class QGridLayout;
class QSignalMapper;
class QCheckBox;
class QComboBox;
+class QTableWidget;
class GUI_API_EXPORT IndexDialog : public QDialog
{
@@ -31,15 +33,65 @@ class GUI_API_EXPORT IndexDialog : public QDialog
void changeEvent(QEvent *e);
private:
+ class Column
+ {
+ public:
+ Column(const QString& name, QTableWidget* table);
+ Column(SqliteExpr* expr, QTableWidget* table);
+ ~Column();
+
+ void assignToNewRow(int row);
+ void prepareForNewRow();
+ QCheckBox* getCheck() const;
+ void setCheck(QCheckBox* cb);
+ QWidget* getCheckParent() const;
+ void setCheckParent(QWidget* w);
+ QComboBox* getSort() const;
+ void setSort(QComboBox* cb);
+ QComboBox* getCollation() const;
+ void setCollation(QComboBox* cb);
+ bool hasCollation() const;
+
+ QString getName() const;
+ SqliteExpr* getExpr() const;
+ void setExpr(SqliteExpr* expr);
+ bool isExpr() const;
+ QString getKey() const;
+
+ private:
+ QWidget* defineContainer(QWidget* w);
+
+ QWidget* column1Contrainer = nullptr;
+ QWidget* column2Contrainer = nullptr;
+ QWidget* column3Contrainer = nullptr;
+ QWidget* checkParent = nullptr;
+ QCheckBox* check = nullptr;
+ QComboBox* sort = nullptr;
+ QComboBox* collation = nullptr;
+ QTableWidget* table = nullptr;
+ QString name;
+ SqliteExpr* expr = nullptr;
+ };
+
void init();
void readIndex();
void readCollations();
void buildColumn(const QString& name, int row);
+ Column* buildColumn(SqliteOrderBy* orderBy, int row);
+ Column* buildColumn(SqliteExpr* expr, int row);
+ void buildColumn(Column* column, int row);
void applyColumnValues();
void applyIndex();
- SqliteIndexedColumn* addIndexedColumn(const QString& name);
+ SqliteOrderBy* addIndexedColumn(const QString& name);
+ SqliteOrderBy* addIndexedColumn(SqliteExpr* expr);
+ void addCollation(SqliteOrderBy* col, const QString& name);
void rebuildCreateIndex();
void queryDuplicates();
+ void clearColumns();
+ void rebuildColumnsByNewOrder();
+ QString getKey(SqliteOrderBy* col) const;
+ QStringList getExistingColumnExprs(const QString& exceptThis = QString()) const;
+ QStringList getTableColumns() const;
bool existingIndex = false;
Db* db = nullptr;
@@ -50,9 +102,8 @@ class GUI_API_EXPORT IndexDialog : public QDialog
QStringList tableColumns;
QSignalMapper* columnStateSignalMapping = nullptr;
QStringListModel collations;
- QList<QCheckBox*> columnCheckBoxes;
- QList<QComboBox*> sortComboBoxes;
- QList<QComboBox*> collateComboBoxes;
+ StrHash<Column*> columns;
+ QList<Column*> columnsByRow;
int totalColumns = 0;
Ui::IndexDialog *ui = nullptr;
@@ -60,10 +111,16 @@ class GUI_API_EXPORT IndexDialog : public QDialog
void updateValidation();
void buildColumns();
void updateTable(const QString& value);
- void updateColumnState(int row);
+ void updateColumnState(const QString& columnKey);
void updatePartialConditionState();
void updateDdl();
void tabChanged(int tab);
+ void moveColumnUp();
+ void moveColumnDown();
+ void updateToolBarButtons(const QModelIndex& idx = QModelIndex());
+ void addExprColumn();
+ void editExprColumn(int row = -1);
+ void delExprColumn();
public slots:
void accept();
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui
index 4e2cbac..36066c5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.ui
@@ -30,45 +30,10 @@
<string>Index</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="0">
- <widget class="QLabel" name="tableLabel">
- <property name="text">
- <string>On table:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="nameLabel">
- <property name="text">
- <string>Index name:</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2">
- <widget class="QCheckBox" name="partialIndexCheck">
- <property name="text">
- <string>Partial index condition</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0" colspan="2">
- <widget class="SqlEditor" name="partialIndexEdit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>1</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2">
- <widget class="QCheckBox" name="uniqueCheck">
- <property name="text">
- <string>Unique index</string>
- </property>
- </widget>
+ <item row="0" column="1" colspan="6">
+ <widget class="QLineEdit" name="nameEdit"/>
</item>
- <item row="3" column="0" colspan="2">
+ <item row="3" column="0" colspan="7">
<widget class="QTableWidget" name="columnsTable">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@@ -76,8 +41,23 @@
<verstretch>2</verstretch>
</sizepolicy>
</property>
+ <property name="dragEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="dragDropOverwriteMode">
+ <bool>true</bool>
+ </property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::NoDragDrop</enum>
+ </property>
+ <property name="defaultDropAction">
+ <enum>Qt::IgnoreAction</enum>
+ </property>
<property name="selectionMode">
- <enum>QAbstractItemView::NoSelection</enum>
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
@@ -102,12 +82,97 @@
</column>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QLineEdit" name="nameEdit"/>
+ <item row="1" column="0">
+ <widget class="QLabel" name="tableLabel">
+ <property name="text">
+ <string>On table:</string>
+ </property>
+ </widget>
</item>
- <item row="1" column="1">
+ <item row="1" column="1" colspan="6">
<widget class="QComboBox" name="tableCombo"/>
</item>
+ <item row="2" column="4">
+ <widget class="QToolButton" name="delExprColumnButton">
+ <property name="toolTip">
+ <string>Delete selected indexed expression</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="5">
+ <widget class="QToolButton" name="moveUpButton">
+ <property name="toolTip">
+ <string>Moves selected index column up in the order, making it more significant in the index.</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="6">
+ <widget class="QToolButton" name="moveDownButton">
+ <property name="toolTip">
+ <string>Moves selected index column down in the order, making it less significant in the index.</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="7">
+ <widget class="QCheckBox" name="partialIndexCheck">
+ <property name="text">
+ <string>Partial index condition</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="uniqueCheck">
+ <property name="text">
+ <string>Unique index</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="nameLabel">
+ <property name="text">
+ <string>Index name:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QToolButton" name="editExprColumnButton">
+ <property name="toolTip">
+ <string>Edit selected indexed expression</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="7">
+ <widget class="SqlEditor" name="partialIndexEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QToolButton" name="addExprColumnButton">
+ <property name="toolTip">
+ <string>Add indexed expression</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="ddlTab">
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.cpp
new file mode 100644
index 0000000..f041294
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.cpp
@@ -0,0 +1,151 @@
+#include "indexexprcolumndialog.h"
+#include "ui_indexexprcolumndialog.h"
+#include "parser/ast/sqliteexpr.h"
+#include "db/db.h"
+#include "uiutils.h"
+#include "parser/parser.h"
+#include "parser/ast/sqliteselect.h"
+#include <QPushButton>
+
+IndexExprColumnDialog::IndexExprColumnDialog(Db* db, QWidget* parent) :
+ QDialog(parent),
+ ui(new Ui::IndexExprColumnDialog)
+{
+ ui->setupUi(this);
+
+ this->db = db;
+ ui->sqlEditor->setDb(db);
+ ui->sqlEditor->setVirtualSqlExpression("CREATE INDEX idx ON tab (%1 COLLATE NOCASE ASC)");
+
+ connect(ui->sqlEditor, SIGNAL(textChanged()), this, SLOT(validate()));
+ connect(ui->sqlEditor, SIGNAL(errorsChecked(bool)), this, SLOT(validate()));
+}
+
+IndexExprColumnDialog::IndexExprColumnDialog(Db* db, SqliteExpr* col, QWidget *parent) :
+ IndexExprColumnDialog(db, parent)
+{
+ readColumn(col);
+}
+
+IndexExprColumnDialog::~IndexExprColumnDialog()
+{
+ delete ui;
+}
+
+void IndexExprColumnDialog::readColumn(SqliteExpr* col)
+{
+ ui->sqlEditor->setPlainText(col->tokens.detokenize());
+}
+
+void IndexExprColumnDialog::setOkEnabled(bool enabled)
+{
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enabled);
+}
+
+SqliteExpr* IndexExprColumnDialog::parseExpr()
+{
+ Parser parser(db->getDialect());
+ return parser.parseExpr(ui->sqlEditor->toPlainText());
+}
+
+bool IndexExprColumnDialog::checkRestrictions(QString& errorMsg)
+{
+ SqliteExprPtr expr = SqliteExprPtr(parseExpr());
+ if (!expr)
+ return false;
+
+ QString key = expr->tokens.filterWhiteSpaces(false).detokenize();
+ if (existingExprColumnKeys.contains(key))
+ {
+ errorMsg = tr("This expression is already indexed by the index.");
+ return false;
+ }
+
+ if (tableColumns.contains(key))
+ {
+ errorMsg = tr("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.");
+ return false;
+ }
+
+ QStringList usedColumns = expr->getContextColumns(false, true);
+ for (const QString& col : usedColumns)
+ {
+ if (!tableColumns.contains(col))
+ {
+ errorMsg = tr("Column '%1' does not belong to the table covered by this index. Indexed expressions can refer only to columns from the indexed table.").arg(col);
+ return false;
+ }
+ }
+
+ QList<SqliteSelect*> selects = expr->getAllTypedStatements<SqliteSelect>();
+ if (!selects.isEmpty())
+ {
+ errorMsg = tr("It's forbidden to use 'SELECT' statements in indexed expressions.");
+ return false;
+ }
+
+ return true;
+}
+
+void IndexExprColumnDialog::setExistingExprColumnKeys(const QStringList& value)
+{
+ existingExprColumnKeys = value;
+}
+
+void IndexExprColumnDialog::setTableColumns(const QStringList& value)
+{
+ tableColumns = value;
+}
+
+void IndexExprColumnDialog::validate()
+{
+ if (!ui->sqlEditor->isSyntaxChecked())
+ {
+ setValidState(ui->sqlEditor, false, tr("Enter an indexed expression."));
+ setOkEnabled(false);
+ return;
+ }
+
+ // First check if we already validated this text.
+ // This method is called twice, by both errorsChecked() and textChanged().
+ QString text = ui->sqlEditor->toPlainText();
+ if (!lastValidatedText.isNull() && lastValidatedText == text)
+ return;
+
+ lastValidatedText = text;
+
+ bool exprOk = !ui->sqlEditor->toPlainText().trimmed().isEmpty() && !ui->sqlEditor->haveErrors();
+ QString errorMsg = tr("Invalid expression.");
+ if (exprOk)
+ exprOk = checkRestrictions(errorMsg);
+
+ setValidState(ui->sqlEditor, exprOk, errorMsg);
+ setOkEnabled(exprOk);
+}
+
+SqliteExpr* IndexExprColumnDialog::getColumn() const
+{
+ return theColumn;
+}
+
+void IndexExprColumnDialog::accept()
+{
+ SqliteExpr* expr = parseExpr();
+ if (expr)
+ {
+ expr->rebuildTokens();
+ theColumn = expr;
+ }
+ else
+ qCritical() << "Accepted IndexExprColumnDialog with unparsable expr! This should not happen. IndexDialog will get null expr.";
+
+ QDialog::accept();
+}
+
+
+int IndexExprColumnDialog::exec()
+{
+ ui->sqlEditor->checkSyntaxNow();
+ return QDialog::exec();
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.h
new file mode 100644
index 0000000..5e4fde5
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.h
@@ -0,0 +1,47 @@
+#ifndef INDEXEXPRCOLUMNDIALOG_H
+#define INDEXEXPRCOLUMNDIALOG_H
+
+#include <QDialog>
+
+class SqliteExpr;
+class Db;
+
+namespace Ui {
+ class IndexExprColumnDialog;
+}
+
+class IndexExprColumnDialog : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ explicit IndexExprColumnDialog(Db* db, QWidget *parent = 0);
+ IndexExprColumnDialog(Db* db, SqliteExpr* col, QWidget *parent = 0);
+ ~IndexExprColumnDialog();
+
+ SqliteExpr* getColumn() const;
+ void setTableColumns(const QStringList& value);
+ void setExistingExprColumnKeys(const QStringList& value);
+
+ private:
+ void readColumn(SqliteExpr* col);
+ void setOkEnabled(bool enabled);
+ SqliteExpr* parseExpr();
+ bool checkRestrictions(QString& errorMsg);
+
+ Ui::IndexExprColumnDialog *ui;
+ SqliteExpr* theColumn = nullptr;
+ QString lastValidatedText;
+ Db* db = nullptr;
+ QStringList tableColumns;
+ QStringList existingExprColumnKeys;
+
+ public slots:
+ void accept();
+ int exec();
+
+ private slots:
+ void validate();
+};
+
+#endif // INDEXEXPRCOLUMNDIALOG_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.ui
new file mode 100644
index 0000000..4df8486
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexexprcolumndialog.ui
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IndexExprColumnDialog</class>
+ <widget class="QDialog" name="IndexExprColumnDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Indexed expression</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QGroupBox" name="indexExprGroup">
+ <property name="title">
+ <string>Expression to index</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="SqlEditor" name="sqlEditor"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <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>
+ <customwidgets>
+ <customwidget>
+ <class>SqlEditor</class>
+ <extends>QPlainTextEdit</extends>
+ <header>sqleditor.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>IndexExprColumnDialog</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>IndexExprColumnDialog</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/guiSQLiteStudio.pro b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
index ff07990..be3e876 100644
--- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
+++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
@@ -182,7 +182,12 @@ SOURCES +=\
dialogs/languagedialog.cpp \
common/ipvalidator.cpp \
dialogs/cssdebugdialog.cpp \
- themetuner.cpp
+ themetuner.cpp \
+ dialogs/indexexprcolumndialog.cpp \
+ common/centerediconitemdelegate.cpp \
+ datagrid/sqlviewmodel.cpp \
+ common/exttableview.cpp \
+ common/exttablewidget.cpp
HEADERS += mainwindow.h \
iconmanager.h \
@@ -329,7 +334,12 @@ HEADERS += mainwindow.h \
dialogs/languagedialog.h \
common/ipvalidator.h \
dialogs/cssdebugdialog.h \
- themetuner.h
+ themetuner.h \
+ dialogs/indexexprcolumndialog.h \
+ common/centerediconitemdelegate.h \
+ datagrid/sqlviewmodel.h \
+ common/exttableview.h \
+ common/exttablewidget.h
FORMS += mainwindow.ui \
dbtree/dbtree.ui \
@@ -378,7 +388,8 @@ FORMS += mainwindow.ui \
dialogs/newversiondialog.ui \
dialogs/quitconfirmdialog.ui \
dialogs/languagedialog.ui \
- dialogs/cssdebugdialog.ui
+ dialogs/cssdebugdialog.ui \
+ dialogs/indexexprcolumndialog.ui
RESOURCES += \
icons.qrc \
diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp b/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp
index 63dde26..3d6c5f2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.cpp
@@ -87,6 +87,7 @@ void IconManager::rescanResources(const QString& pluginName)
loadRecurently(":/icons", "", false);
Icon::reloadAll();
+ emit rescannedFor(pluginName);
}
void IconManager::rescanResources(Plugin* plugin, PluginType* pluginType)
diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
index 648e173..7547712 100644
--- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
+++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h
@@ -118,6 +118,8 @@ class GUI_API_EXPORT IconManager : public QObject
DEF_ICON(FUNCTION, "function")
DEF_ICON(GET_UPDATE, "get_update")
DEF_ICON(GO_BACK, "go_back")
+ DEF_ICON(GENERATE_COLUMNS, "wand")
+ DEF_ICO3(GENERATE_QUERY, GENERATE_COLUMNS)
DEF_ICON(HELP, "help")
DEF_ICON(HOMEPAGE, "homepage")
DEF_ICON(IMPORT, "import")
@@ -131,6 +133,9 @@ class GUI_API_EXPORT IconManager : public QObject
DEF_ICON(INDICATOR_INFO, "indicator_info")
DEF_ICON(INDICATOR_WARN, "indicator_warn")
DEF_ICON(INFO_BALLOON, "info_balloon")
+ DEF_ICON(INDEX_EXPR_ADD, "tag_hash_add")
+ DEF_ICON(INDEX_EXPR_EDIT, "tag_hash_edit")
+ DEF_ICON(INDEX_EXPR_DEL, "tag_hash_del")
DEF_ICON(INSERT_ROW, "insert_row")
DEF_ICON(INSERT_ROWS, "insert_rows")
DEF_ICO3(INSERT_FN_ARG, INSERT_ROW)
@@ -274,6 +279,9 @@ class GUI_API_EXPORT IconManager : public QObject
public slots:
void rescanResources(const QString& pluginName = QString());
+
+ signals:
+ void rescannedFor(const QString& pluginName);
};
#define ICONMANAGER IconManager::getInstance()
diff --git a/SQLiteStudio3/guiSQLiteStudio/icons.qrc b/SQLiteStudio3/guiSQLiteStudio/icons.qrc
index 015e68a..6c08cc6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/icons.qrc
+++ b/SQLiteStudio3/guiSQLiteStudio/icons.qrc
@@ -195,5 +195,9 @@
<file>img/delete.png</file>
<file>img/dock_layout_horizontal.png</file>
<file>img/dock_layout_vertical.png</file>
+ <file>img/tag_hash_add.png</file>
+ <file>img/tag_hash_del.png</file>
+ <file>img/tag_hash_edit.png</file>
+ <file>img/wand.png</file>
</qresource>
</RCC>
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_add.png b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_add.png
new file mode 100644
index 0000000..032c353
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_add.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_del.png b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_del.png
new file mode 100644
index 0000000..5f43fcc
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_del.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_edit.png b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_edit.png
new file mode 100644
index 0000000..31916c8
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/tag_hash_edit.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/img/wand.png b/SQLiteStudio3/guiSQLiteStudio/img/wand.png
new file mode 100644
index 0000000..1e2724e
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/img/wand.png
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
index fb5c7b5..8d80277 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
@@ -39,6 +39,7 @@
#include "common/widgetcover.h"
#include "dialogs/cssdebugdialog.h"
#include "themetuner.h"
+#include "services/codeformatter.h"
#include <QMdiSubWindow>
#include <QDebug>
#include <QStyleFactory>
@@ -580,6 +581,20 @@ QString MainWindow::currentStyle() const
return QApplication::style()->objectName();
}
+EditorWindow* MainWindow::openSqlEditor(Db* dbToSet, const QString& sql)
+{
+ EditorWindow* win = openSqlEditor();
+ if (!win->setCurrentDb(dbToSet))
+ {
+ qCritical() << "Created EditorWindow had not got requested database:" << dbToSet->getName();
+ win->close();
+ return nullptr;
+ }
+
+ win->setContents(FORMATTER->format("sql", sql, dbToSet));
+ return win;
+}
+
void MainWindow::closeNonSessionWindows()
{
foreach (MdiWindow* window, ui->mdiArea->getWindows())
@@ -605,8 +620,18 @@ void MainWindow::refreshMdiWindows()
{
mdiMenu->clear();
- foreach (QAction* action, getMdiArea()->getTaskBar()->getTasks())
- mdiMenu->addAction(action);
+ QStringList actionNames;
+ QHash<QString, QAction*> nameToAction;
+ for (QAction* action : getMdiArea()->getTaskBar()->getTasks())
+ {
+ actionNames << action->text();
+ nameToAction[action->text()] = action;
+ }
+
+ qSort(actionNames);
+
+ for (const QString& name : actionNames)
+ mdiMenu->addAction(nameToAction[name]);
updateWindowActions();
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
index 10d7a9d..be96af1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
@@ -120,6 +120,7 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer
QMenu* getSQLiteStudioMenu() const;
QString currentStyle() const;
ThemeTuner* getThemeTuner() const;
+ EditorWindow* openSqlEditor(Db* dbToSet, const QString& sql);
protected:
void closeEvent(QCloseEvent *event);
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
index 4b0628b..9dc85f7 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
@@ -139,6 +139,7 @@ void SqlEditor::createActions()
createAction(FIND_NEXT, tr("Find next", "sql editor"), this, SLOT(findNext()), this);
createAction(FIND_PREV, tr("Find previous", "sql editor"), this, SLOT(findPrevious()), this);
createAction(REPLACE, tr("Replace", "sql editor"), this, SLOT(replace()), this);
+ createAction(TOGGLE_COMMENT, tr("Toggle comment", "sql editor"), this, SLOT(toggleComment()), this);
actionMap[CUT]->setEnabled(false);
actionMap[COPY]->setEnabled(false);
@@ -255,6 +256,21 @@ void SqlEditor::saveToFile(const QString &fileName)
notifyInfo(tr("Saved SQL contents to file: %1").arg(fileName));
}
+void SqlEditor::toggleLineCommentForLine(const QTextBlock& block)
+{
+ QTextCursor cur = textCursor();
+ QString line = block.text();
+ cur.setPosition(block.position());
+ if (line.startsWith("--"))
+ {
+ cur.deleteChar();
+ cur.deleteChar();
+ }
+ else
+ cur.insertText("--");
+
+}
+
void SqlEditor::updateUndoAction(bool enabled)
{
actionMap[UNDO]->setEnabled(enabled);
@@ -1298,6 +1314,91 @@ void SqlEditor::configModified()
highlighter->rehighlight();
}
+void SqlEditor::toggleComment()
+{
+ // Handle no selection - toggle single line
+ QTextCursor cur = textCursor();
+ int start = cur.selectionStart();
+ int end = cur.selectionEnd();
+
+ if (start == end)
+ {
+ toggleLineCommentForLine(cur.block());
+ return;
+ }
+
+ // Handle multiline selection - from begin of the line to begin of the line
+ QTextDocument* doc = document();
+
+ QTextBlock startBlock = doc->findBlock(start);
+ bool startAtLineBegining = startBlock.position() == start;
+
+ QTextBlock endBlock = doc->findBlock(end);
+ bool endAtLineBegining = endBlock.position() == end;
+
+ if (startAtLineBegining && endAtLineBegining)
+ {
+ // Check if all lines where commented previously
+ bool allCommented = true;
+ for (QTextBlock theBlock = startBlock; theBlock != endBlock; theBlock = theBlock.next())
+ {
+ if (!theBlock.text().startsWith("--"))
+ {
+ allCommented = false;
+ break;
+ }
+ }
+
+ // Apply comment toggle
+ cur.beginEditBlock();
+ for (QTextBlock theBlock = startBlock; theBlock != endBlock; theBlock = theBlock.next())
+ {
+ cur.setPosition(theBlock.position());
+ if (allCommented)
+ {
+ cur.deleteChar();
+ cur.deleteChar();
+ }
+ else
+ cur.insertText("--");
+ }
+
+ cur.setPosition(start);
+ cur.setPosition(endBlock.position(), QTextCursor::KeepAnchor);
+ cur.endEditBlock();
+ setTextCursor(cur);
+ return;
+ }
+
+ // Handle custom selection
+ QString txt = cur.selectedText().trimmed();
+ cur.beginEditBlock();
+ if (txt.startsWith("/*") && txt.endsWith("*/"))
+ {
+ cur.setPosition(end);
+ cur.deletePreviousChar();
+ cur.deletePreviousChar();
+ cur.setPosition(start);
+ cur.deleteChar();
+ cur.deleteChar();
+
+ cur.setPosition(start);
+ cur.setPosition(end - 4, QTextCursor::KeepAnchor);
+ }
+ else
+ {
+ cur.setPosition(end);
+ cur.insertText("*/");
+ cur.setPosition(start);
+ cur.insertText("/*");
+
+ cur.setPosition(start);
+ cur.setPosition(end + 4, QTextCursor::KeepAnchor);
+ }
+ cur.endEditBlock();
+ setTextCursor(cur);
+}
+
void SqlEditor::keyPressEvent(QKeyEvent* e)
{
switch (e->key())
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
index 28fbb39..1c98682 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
+++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
@@ -40,6 +40,7 @@ CFG_KEY_LIST(SqlEditor, QObject::tr("SQL editor input field"),
CFG_KEY_ENTRY(MOVE_BLOCK_UP, Qt::ALT + Qt::Key_Up, QObject::tr("Move selected block of text one line up"))
CFG_KEY_ENTRY(COPY_BLOCK_DOWN, Qt::ALT + Qt::CTRL + Qt::Key_Down, QObject::tr("Copy selected block of text and paste it a line below"))
CFG_KEY_ENTRY(COPY_BLOCK_UP, Qt::ALT + Qt::CTRL + Qt::Key_Up, QObject::tr("Copy selected block of text and paste it a line above"))
+ CFG_KEY_ENTRY(TOGGLE_COMMENT, Qt::CTRL + Qt::Key_Slash, QObject::tr("Toggle comment"))
)
class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContainer
@@ -70,7 +71,8 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine
FIND,
FIND_NEXT,
FIND_PREV,
- REPLACE
+ REPLACE,
+ TOGGLE_COMMENT
};
enum ToolBar
@@ -190,6 +192,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine
void handleValidObjectCursor(const QPoint& point);
bool handleValidObjectContextMenu(const QPoint& pos);
void saveToFile(const QString& fileName);
+ void toggleLineCommentForLine(const QTextBlock& block);
SqliteSyntaxHighlighter* highlighter = nullptr;
QMenu* contextMenu = nullptr;
@@ -280,6 +283,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine
void reachedEnd();
void changeFont(const QVariant& font);
void configModified();
+ void toggleComment();
signals:
void errorsChecked(bool haveErrors);
diff --git a/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp b/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp
index 7fb746c..4acd1a6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/statusfield.cpp
@@ -123,11 +123,11 @@ void StatusField::addEntry(const QIcon &icon, const QString &text, const QColor&
item->setText(text);
}
- setVisible(true);
+ if (CFG_UI.General.AutoOpenStatusField.get())
+ setVisible(true);
ui->tableWidget->scrollToBottom();
-
- if (!noFlashing)
+ if (isVisible() && !noFlashing)
flashItems(itemsCreated, color);
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
index 9dad8df..597e95f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
index f3822d6..ba0392e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
@@ -67,13 +67,13 @@
<location filename="../dialogs/aboutdialog.cpp" line="39"/>
<source>Portable distribution.</source>
<translatorcomment>Sollte hier vermutlich &quot;Portable Version&quot; heißen?</translatorcomment>
- <translation>Portable Version</translation>
+ <translation>Portable Version.</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="42"/>
<source>MacOS X application boundle distribution.</source>
<translatorcomment>Das müsste mal genauer übersetzt werden.</translatorcomment>
- <translation>MacOS X Programmbundle-Version</translation>
+ <translation>MacOS X Programmbundle-Version.</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="45"/>
@@ -215,12 +215,12 @@
<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>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>Versenden als registrierter Benutzer.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="131"/>
@@ -286,7 +286,7 @@
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="90"/>
<source>Invalid response from server.</source>
- <translation>Ungültige Antwort vom Server</translation>
+ <translation>Ungültige Antwort vom Server.</translation>
</message>
</context>
<context>
@@ -335,12 +335,12 @@
<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>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>Ein Passwort muss mindestens 5 Zeichen lang sein.</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.cpp" line="91"/>
@@ -363,7 +363,7 @@
<message>
<location filename="../windows/collationseditor.ui" line="204"/>
<source>Implementation language:</source>
- <translation>Sprache</translation>
+ <translation type="unfinished">Sprache:</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="132"/>
@@ -378,12 +378,12 @@
<message>
<location filename="../windows/collationseditor.ui" line="145"/>
<source>Register in following databases:</source>
- <translation>In den folgenden Datenbanken registrieren</translation>
+ <translation>In den folgenden Datenbanken registrieren:</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="166"/>
<source>Implementation code:</source>
- <translation>Anweisungen</translation>
+ <translation type="unfinished">Anweisungen:</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="52"/>
@@ -441,7 +441,7 @@
<message>
<location filename="../common/colorbutton.cpp" line="29"/>
<source>Pick a color</source>
- <translation>Wählen Sie eine Farbe aus.</translation>
+ <translation>Wählen Sie eine Farbe aus</translation>
</message>
</context>
<context>
@@ -482,12 +482,12 @@
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="39"/>
<source>Enter a default value expression.</source>
- <translation>Geben Sie einen Standardwert für den Ausdruck an</translation>
+ <translation type="unfinished">Geben Sie einen Standardwert an.</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="78"/>
<source>Invalid default value expression: %1</source>
- <translation>Ungültiger Standardwert für Ausdruck: %1</translation>
+ <translation type="unfinished">Ungültiger Standardwert für Ausdruck: %1</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="90"/>
@@ -589,95 +589,110 @@
<translation>Erweiterter Modus</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>Bedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>Bedingung editieren</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation>Bedingung löschen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>Bedingung nach oben verschieben</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>Bedingung nach unten verschieben</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
<translation>Primärschlüssel zufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
<translation>Fremdschlüssel zufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>Eindeutige Bedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
<source>Add a check constraint</source>
<comment>column dialog</comment>
<translation>Prüfungsbedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="93"/>
+ <location filename="../dialogs/columndialog.cpp" line="96"/>
<source>Add a not null constraint</source>
<comment>column dialog</comment>
<translation>Nicht-NULL Bedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <location filename="../dialogs/columndialog.cpp" line="97"/>
<source>Add a collate constraint</source>
<comment>column dialog</comment>
<translation>Kollationsbedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <location filename="../dialogs/columndialog.cpp" line="98"/>
<source>Add a default constraint</source>
<comment>column dialog</comment>
<translation>Standardbedingung hinzufügen</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation>Sind Sie sicher, dass Sie die folgende Bedingung löschen wollen: &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation>Korrigiert die Konfiguration der Bedingung.</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;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"/>
+ <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"/>
+ <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"/>
+ <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>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -891,530 +906,629 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation>Konfiguration</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>Allgemein</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>Tastaturkürzel</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
- <translation>Aussehen</translation>
+ <translatorcomment>Kurz und knackig</translatorcomment>
+ <translation>Layout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>Stil</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>Schriftarten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>Farben</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>Plugins</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>Codeformatierer</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>Datenbearbeitung</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation>Dateneditoren</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <location filename="../dialogs/configdialog.ui" line="351"/>
+ <source>Database dialog window</source>
+ <translation>Dialogfenster der Datenbank</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="357"/>
+ <source>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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>Datenbearbeitung</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation>Anzahl an Datenzeilen pro Seite:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<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="328"/>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <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>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="501"/>
+ <source>Before currently selected row</source>
+ <translation>Vor der derzeitig ausgewählten Zeile</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
+ <source>After currently selected row</source>
+ <translation>Nach der derzeitig ausgewählten Zeile</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
+ <source>At the end of data view</source>
+ <translation>Am Ende der Datenfensters</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Wenn aktiviert, wird der Reiter &quot;Daten&quot; anstelle des Reiters &quot;Struktur&quot; angezeigt beim öffnen eines Tabellenfensters angezeigt.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Wenn aktiviert, wird der Reiter &quot;Daten&quot; als erster Reiter angezeigt für jedes Tabellenfenster, anstelle an zweiter Stelle.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <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="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <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="647"/>
<source>Data types</source>
<translation>Datentypen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation>Verfügbare Editoren:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<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="418"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation>Schema</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<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="443"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
- <translation>DDL Verlaufsgröße</translation>
+ <translation>DDL Verlaufsgröße:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden.</translation>
+ <translation>Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation>SQL Abfragen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<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="491"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
- <translation>Verlaufsgröße</translation>
+ <translation>Verlaufsgröße:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
- <translation>Führt nur die Abfrage unter dem Cursor aus.</translation>
+ <translation>Führt nur die Abfrage unter dem Cursor aus</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation>Updates</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<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="533"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation>Sitzung</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<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="581"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation>Statusfeld</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <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="922"/>
<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="622"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation>Aktion</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation>Tastenkombination</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation>Sprache</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<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="694"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation>Kompaktes Layout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation>Benutze kompaktes Layout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
<source>General.CompactLayout</source>
- <translation>Standard.KompaktesLayout</translation>
+ <translation type="obsolete">Standard.KompaktesLayout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>Liste der Datenbanken</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <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>Wenn die Option deaktiviert ist, werden die Spalten in der Reihenfolge sortiert in der sie im CREATE TABLE Statement angegeben wurden.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>Tabellenspalten alphabetisch sortieren</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>Tabellenknoten aufklappen, wenn eine Datenbank verbunden ist</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation>&lt;p&gt;Zusätzliche Bezeichnungen sind jene, die neben den Namen der Datenbankliste angezeigt werden (sie sind normalerweise blau gefärbt, es sei denn dies wurde umkonfiguriert). Ist diese Option aktiviert, dann werden diese Bezeichnungen angezeigt für Datenbanken, ungültige Datenbanken und zusammengefasste Knoten (Spalten-, Index- und Triggergruppen). Für mehr Details siehe die folgenden optionen.&lt;p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="271"/>
<source>Display additional labels on the list</source>
<translation>Zeige zusätzliche Bezeichnungen in der Liste an</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <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>Für normale Tabellen enthält die Bezeichnung die Anzahl der Spalten, Indizes und Trigger einer jeden Tabelle.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="289"/>
<source>Display labels for regular tables</source>
<translation>Zeigt Bezeichnungen für normale Tabellen an</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Virtuelle Tabellen werden mit einem &apos;virtuell&apos; Kürzel versehen.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="302"/>
<source>Display labels for virtual tables</source>
<translation>Zeige Bezeichnungen für virtuelle Tabellen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="315"/>
<source>Expand views node when connected to a database</source>
<translation>Knoten aufklappen, wenn eine Datenbank verbunden ist</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <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>Wenn die Option deaktiviert ist, werden die Objekte in der Reihenfolge sortiert in der sie in der sqlite_master Tabelle angezeigt werden (entspricht der Reihenfolge in der sie angelegt worden sind)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="328"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Objekte alphabetisch sortieren</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="338"/>
<source>Display system tables and indexes on the list</source>
<translation>Zeige Systemtabellen und Indizes in der Liste an</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation>Tabellenfenster</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Wenn die Option aktiviert ist, dann wird im Tabellenfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
+ <translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Tabellenfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Öffnet das Tabellenfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation>Viewfenster</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Wenn die Option aktiviert ist, dann wird im Viewfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
+ <translation type="obsolete">Wenn die Option aktiviert ist, dann wird im Viewfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation>Öffnet das Viewfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation>Dockingbereiche des Hauptfensters</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<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="901"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<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="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation>Verberge eingebaute Plugins</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation>Aktueller Stil:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation>Vorschau</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation>Aktiviert</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation>Aktives Formatierungsplugin</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation>Schriftart des SQL Editors</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation>Schriftart der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation>Zusätzliche Bezeichnungen in der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation>Schriftart der Ergebnisansicht</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation>Schriftart des Statusfelds</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation>Farben des SQL Editors</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation>Hintergrundfarbe der aktuellen Zeile</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;SQL Zeichenketten sind mit einfachen Anführungszeichen umschlossen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation>Vordergrundfarbe von Zeichenketten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Bind Parameter sind Platzhalter für Werte, die der Anwender eingibt. Sie haben dabei eine der folgenden Formen:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation>Vordergrundfarbe von Bind Parametern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation>Hintergrundfarbe von hervorgehobener Klammern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;BLOB Werte sind hexadezimale Werte wie z.B.:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation>Vordergrundfarbe von BLOB Werten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation>Reguläre Vordergrundfarbe</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation>Hintergrundfarbe der Zeilennummernleiste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation>Vordergrundfarbe von Schlüsselwörtern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation>Vordergrundfarbe von Ziffern</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation>Vordergrundfarbe von Kommentaren</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Gültige Objekte sind Namen von Tabellen, Indizes, Triggern oder Views die in der SQLite Datenbank existieren.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation>Vordergrundfarbe von gültigen Objekten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation>Farben der Ergebnisansicht</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Jede Datenänderung wird mit dieser Farbe kenntlich gemacht, bis die geänderten Daten in die Datenbank zurückgeschrieben worden sind.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation>Rahmenfarbe von nicht gespeicherten Daten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;Tritt beim Speichern einer Änderung ein Problem auf, dann wird die problematische Zelle mit dieser Farbe markiert.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation>Rahmenfarbe für fehlerhafte Daten</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation>Vordergrundfarbe für NULL Werte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation>Hintergrundfarbe von gelöschten Zeilen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation>Farben der Datenbankliste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Zusätzliche Bezeichnungen sind solche, die z.B. die SQLite Version oder die Anzahl an Einträgen in einer Baumliste usw. anzeigen.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation>Vordergrundfarbe für zusätzliche Bezeichnungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation>Farben des Statusfelds</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation>Vordergrundfarbe für Infomeldungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation>Vordergrundfarbe für Warnmeldungen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation>Vordergrundfarbe für Fehlermeldungen</translation>
</message>
@@ -1466,43 +1580,43 @@ but it&apos;s okay to use it.</source>
<translation>Plugin Details</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (eingebaut)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>Details</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation>Keine Plugins in dieser Kategorie.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation>Neuen Datentypen zufügen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>Markierten Datentypen umbenennen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>Markierten Datentypen löschen</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation>Hilfe zur Konfiguration des Datentypen Editors</translation>
</message>
@@ -1654,120 +1768,138 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation>Daten filtern</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation>Gitteransicht</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation>Formularansicht</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation>Aktualisiere Tabellendaten</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>Erste Seite</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Vorherige Seite</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Nächste Seite</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Letzte Seite</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Filter anwenden</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="207"/>
<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="204"/>
+ <location filename="../dataview.cpp" line="208"/>
<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="205"/>
+ <location filename="../dataview.cpp" line="209"/>
<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="206"/>
+ <location filename="../dataview.cpp" line="210"/>
<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="275"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Nach Text filtern</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="285"/>
<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="277"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Nach einem SQL Ausdruck filtern</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Reiterleiste oben</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Reiterleiste unten</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="343"/>
+ <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"/>
+ <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"/>
+ <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"/>
<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="566"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation>Zeile: %1</translation>
</message>
@@ -1837,7 +1969,7 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<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>Geben Sie einen eindeutigen Namen an (so wie links in der Datenbankliste)</translation>
+ <translation>Geben Sie einen eindeutigen Namen an (so wie links in der Datenbankliste).</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="140"/>
@@ -1914,7 +2046,7 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation>Datei</translation>
</message>
@@ -1935,47 +2067,47 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
<translation>&lt;p&gt;Wenn diese Option aktiviert ist, wird die Datenbank in der Konfiguration gespeichert und bei jedem Start von SQLiteStudio wieder hergestellt.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation>Lokalen Computer nach Datenbankdateien durchsuchen</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation>Durchsuchen</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation>Geben Sie einen eindeutigen Datenbanknamen ein.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="477"/>
<source>This name is already in use. Please enter unique name.</source>
<translation>Der Name wird bereits benutzt, bitte geben Sie einen freien, eindeutigen Namen ein.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation>Geben Sie einen Dateipfad für die Datenbank ein.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This database is already on the list under name: %1</source>
<translation>Die Datenbank ist bereits unter folgendem Namen in der Liste enthalten: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation>Wählen Sie einen Datebanktypen aus.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation>Automatisch generiert</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation>Geben Sie den Namen ein</translation>
</message>
@@ -2024,9 +2156,32 @@ Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</tran
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
+ <location filename="../dbobjectdialogs.cpp" line="315"/>
<source>Error while dropping %1: %2</source>
<translation>Fehler beim Löschen: %1 %2</translation>
</message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="282"/>
+ <source>Delete objects</source>
+ <translation>Objekte löschen</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="283"/>
+ <source>Are you sure you want to delete following objects:
+%1</source>
+ <translation>Sind Sie sicher, dass Sie die folgenden Objekte löschen möchten:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="290"/>
+ <source>Cannot start transaction. Details: %1</source>
+ <translation>Kann Transaktion nicht starten. Details: %1</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="327"/>
+ <source>Cannot commit transaction. Details: %1</source>
+ <translation>Kann Transaktion nicht ausführen. Details: %1</translation>
+ </message>
</context>
<context>
<name>DbTree</name>
@@ -2041,345 +2196,369 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>Einfügen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>Alles auswählen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation>Gruppe erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation>Diese Gruppe löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation>Gruppe umbenennen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation>Datenbank hinzufügen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>Datenbank editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation>Datenbank entfernen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation>Mit der Datenbank verbinden</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>Verbindung zur Datenbank trennen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>Import</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>Datenbank exportieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>Datenbanktyp konvertieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translatorcomment>???</translatorcomment>
<translation>Vakuum</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation>Integritätsprüfung</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>Tabelle erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
- <translation>Datenbank editieren</translation>
+ <translation>Tabelle editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation>Tabelle löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation>Tabelle exportieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation>In die Tabelle importieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>Tabelle füllen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>Erzeuge identische Tabelle</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation>Automatischen Zähler zurücksetzen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>Index erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation>Index editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation>Index löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>Trigger erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation>Trigger editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation>Trigger löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>View erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation>View editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation>View löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>Spalte zufügen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation>Spalte editieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation>Spalte löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>Gewählte Einträge löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>Filter zurücksetzen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation>Alle Datenbankschemen aktualisieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation>Alle markierten Datenbankschemen aktualisieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation>Tabellendaten löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>Datenbank</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>Gruppieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation>Abfrage für Tabelle generieren</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation>Gruppe erstellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation>Gruppenname</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
- <translation>Der Eintrag mit Namen %1 existiert bereits in der Gruppe %2</translation>
+ <translation>Der Eintrag mit Namen %1 existiert bereits in der Gruppe %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation>Gruppe löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation>Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; aus der Liste entfernen möchten?</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1136"/>
+ <source>Remove database</source>
+ <translation>Datenbank entfernen</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
+ <translation>Vacuum (%1)</translation>
+ </message>
+ <message>
<source>Delete database</source>
- <translation>Datenbank löschen</translation>
+ <translation type="obsolete">Datenbank löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; löschen möchten?</translation>
+ <translatorcomment>http://bugs.sqlitestudio.pl/?id=3066 changed according to this</translatorcomment>
+ <translation type="obsolete">Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; entfernen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
<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="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Export fehlgeschlagen, da kein Export Plugins geladen sind.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Fehler beim Ausführen des VACUUM-Befehls auf die Datenbank %1: %2</translation>
+ <translation type="obsolete">Fehler beim Ausführen des VACUUM-Befehls auf die Datenbank %1: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>VACUUM erfolgreich abgeschlossen.</translation>
+ <translation type="obsolete">VACUUM erfolgreich abgeschlossen.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation>Integritätsprüfung (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation>Autoincrement zurücksetzen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle &apos;%1&apos; zurücksetzen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation>Sind Sie sicher, dass Sie alle Daten aus Tabelle &apos;%1&apos; löschen möchten?</translation>
+ <translation>Sind Sie sicher, dass Sie alle Daten der Tabelle &apos;%1&apos; löschen möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
- <translation>Beim Löschen von Daten aus Tabelle &apos;%1&apos; ist folgender Fehelr aufgetreten: %2</translation>
+ <translation>Beim Löschen der Daten aus Tabelle &apos;%1&apos; ist folgender Fehler aufgetreten: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Es wurden alle Daten aus Tabelle &apos;%1&apos; gelöscht.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation>Folgende Objekte werden gelöscht: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<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="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Sind Sie sicher, dass Sie fortfahren möchten?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation>Objekte löschen</translation>
</message>
@@ -2414,124 +2593,129 @@ Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</t
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
<translation>Datenbank: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
<translation>Version:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
<translation>Dateigröße:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
<translation>Kodierung:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="439"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
<translation>Fehlerbeschreibung:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
<translation>Tabelle: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Spalten (%1)</translation>
+ <translation>Spalten (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Indizes (%1)</translation>
+ <translation>Indizes (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
- <translation>Trigger (%1)</translation>
+ <translation>Trigger (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation>Verschieben</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation>Inklusive Daten</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation>Inklusive Indizes</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation>Inklusive Trigger</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation>Referenzierte Tabellen</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation>Namenskonflikt</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; 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="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation>SQL Statement Konvertierung</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation>Möchten Sie diese Fehler ignorieren und fortfahren?</translation>
</message>
@@ -2541,7 +2725,7 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../windows/ddlhistorywindow.ui" line="35"/>
<source>Filter by database:</source>
- <translation>Nach Datenbank filtern</translation>
+ <translation>Nach Datenbank filtern:</translation>
</message>
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="73"/>
@@ -2808,7 +2992,7 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../dialogs/exportdialog.ui" line="189"/>
<source>Select database objects to export</source>
- <translation>Wählen Sie die zu exportierenden Datebankobjekte aus.</translation>
+ <translation>Wählen Sie die zu exportierenden Datebankobjekte aus</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="202"/>
@@ -2876,7 +3060,7 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../dialogs/exportdialog.ui" line="382"/>
<source>Exported text encoding:</source>
- <translation>Exportierte Textkodierung</translation>
+ <translation>Exportierte Textkodierung:</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="398"/>
@@ -2939,7 +3123,7 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../dialogs/exportdialog.cpp" line="420"/>
<source>Pick file to export to</source>
- <translation>Wählen Sie eine Datei aus in die exportiert werden soll.</translation>
+ <translation>Wählen Sie eine Datei aus in die exportiert werden soll</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="709"/>
@@ -3076,7 +3260,7 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../windows/functionseditor.ui" line="325"/>
<source>Final step implementation code:</source>
- <translation>Abschlussanweisungen</translation>
+ <translation>Abschlussanweisungen:</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="54"/>
@@ -3156,8 +3340,8 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Per step code:</source>
- <translatorcomment>evtl. Einzelschrittanweisung???</translatorcomment>
- <translation>Pro Schritt Anweisung</translation>
+ <translatorcomment>evtl. Einzelschrittanweisung??? (Artur: hört sich gut an)</translatorcomment>
+ <translation>Einzelschrittanweisung:</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="432"/>
@@ -3239,42 +3423,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="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;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="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation>Datenbankname eingeben</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation>Importplugin auswählen</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<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="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation>Die Datei &apos;%1&apos; existiert nicht.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation>Wählen Sie eine Datei aus von der importiert werden soll.</translation>
</message>
@@ -3288,96 +3472,126 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<translation>Index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation>Auf Tabelle:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation>Indexname:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation>Partieller Indexzustand</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>Einzigartiger Index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation>Spalte</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation>Kollation</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>Sortierung</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <location filename="../dialogs/indexdialog.cpp" line="66"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
<translation>Es wurde versucht den Index-Dialog für eine geschlossene oder nicht existente Datenbank zu öffnen.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="131"/>
+ <location filename="../dialogs/indexdialog.cpp" line="149"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
<translation>Der Index %1 kann nicht vollständig bearbeitet werden, da der Index-Dialog nicht geöffnet werden kann.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="185"/>
+ <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>Tabelle für den Index auswählen.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>Mindestens eine Spalte auswählen.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <location filename="../dialogs/indexdialog.cpp" line="209"/>
<source>Enter a valid condition.</source>
<translation>Geben Sie einen gültigen Zustand ein.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <location filename="../dialogs/indexdialog.cpp" line="276"/>
<source>default</source>
<comment>index dialog</comment>
<translation>Standard</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
<translation>Sortierung</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <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>Der eindeutige Index kann nicht erzeigt werden, da Werte in den selektierten Spalten nicht eundeutig sind. Möchten Sie die zugehörige SELECT Abfrage ausführen, um die uneindeutigen Werte zu sehen?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>Fehler beim Ausführen des folgenden SQL Statments:
@@ -3385,6 +3599,49 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
</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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3425,273 +3682,273 @@ 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="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation>Konfigurationshelfer</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation>Syntaxhervorhebungen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation>Dateneditoren</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation>Ablauf im Debugmodus. Zum Öffnen der Debugkonsole drücken Sie %1 oder wählen Menü &apos;Hilfe&apos; den Eintrag &apos;Debugkonsole öffnen&apos; aus.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="211"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="254"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation>SQL Editor öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation>DDL Verlauf öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation>Editor für Kollationen öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>Importieren</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>Exportieren</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation>Alle Fenster aufteilen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation>Alle Fenster horizontal aufteilen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation>Alle Fenster vertikal aufteilen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>Alle Fenster kaskadiert aufteilen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>Nächstes Fenster</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>Vorheriges Fenster</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation>Statusfeld verbergen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation>Ausgewähltes Fenster schließen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation>Alle anderen Fenster schließen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation>Alle Fenster schließen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation>Zuletzt geöffnetes Fenster wiederherstellen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation>Ausgewähltes Fenster umbenennen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>Debug Konsole öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation>CSS Konsole öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation>Fehler melden</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation>Eine neue Programmfunktion vorschlagen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>Über SQLiteStudio</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>Lizenzen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation>Homepage aufrufen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation>Forum aufrufen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation>Bedienungsanleitung</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation>SQLite Dokumentation</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation>Verlauf gemeldeter Fehler</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation>Auf Updates prüfen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Datenbank</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Struktur</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>Ansicht</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Fensterliste</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Werkzeuge</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<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="642"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<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="658"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<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="691"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>Fenster umbenennen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
- <translation>Geben Sie einen neuen Namen für das Fenster ein.</translation>
+ <translation>Neuen Namen für das Fenster eingeben:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Neues Update verfügbar. &lt;a href=&quot;%1&quot;&gt;Weitere Details&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;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="891"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation>Die Datenbank %1 konnte nicht hinzugefügt werden.</translation>
</message>
@@ -4009,12 +4266,12 @@ Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den V
<message>
<location filename="../dialogs/populatedialog.cpp" line="290"/>
<source>Select database with table to populate</source>
- <translation>Wählen Sie die Datebank und Tabelle zum Auffüllen aus.</translation>
+ <translation>Wählen Sie die Datebank und Tabelle zum Auffüllen aus</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="291"/>
<source>Select table to populate</source>
- <translation>Wählen Sie die Tabelle zum Auffüllen aus.</translation>
+ <translation>Wählen Sie die Tabelle zum Auffüllen aus</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="292"/>
@@ -4092,129 +4349,129 @@ 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="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation>Ergebnisansicht</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation>Kopiert Zelleninhalt(e) in die Zwischenablage</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<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="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<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="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<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="26"/>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Commit changes to cell(s) contents</source>
<translation>Änderungen der Zellenninhalte speichern</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback changes to cell(s) contents</source>
<translation>Änderungen der Zelleninhalte zurücknehmen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="28"/>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Delete selected data row</source>
<translation>Markierte Datenzeile löschen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation>Neue Datenzeile einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<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="532"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation>Verfügbare Gesamtseiten: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation>Insgesamt geladene Zeilen: %1</translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation>Ergebnisansicht (tabellarisch und Formular)</translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation>Daten aktualisieren</translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation>Zur tabellarischen Ergebnisansicht wechseln</translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation>Zur Formularansicht wechseln</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation>Liste der Datenbanken</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation>Gewählten Eintrag löschen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation>Filter zurücksetzen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation>Schema aktualisieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation>Alle Schemas aktualisieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation>Datenbank hinzufügen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation>Alles auswählen</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation>Gewählte Einträge kopieren</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation>Von der Zwischenablage einfügen</translation>
</message>
@@ -4335,110 +4592,115 @@ 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="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<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="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<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="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<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="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation>Rückgängig</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation>Wiederholen</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation>SQL Editor Eingabefeld</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation>Gesamten Editorinhalt auswählen</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation>Inhalte in eine Datei speichern</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation>Inhalte aus einer Datei laden</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation>Suche im Text</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation>Nächster Fund</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation>Vorheriger Fund</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation>Ersetze im Text</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation>Aktuelle Zeile löschen</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation>Code-Assistenten anfordern</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation>Format-Inhalte</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<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="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<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="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<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="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<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"/>
+ <source>Toggle comment</source>
+ <translation>Kommentar umschalten</translation>
+ </message>
+ <message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
<translation>Alle SQLite Datenbanken</translation>
@@ -4511,106 +4773,106 @@ 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/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation>Tabellenfenster</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation>Aktualisiere Tabellenstruktur</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation>Neue Spalte zufügen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation>Gewählte Spalte bearbeiten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation>Gewählte Spalte löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation>Tabellendaten exportieren</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <location filename="../windows/tablewindow.h" line="37"/>
<source>Import data to the table</source>
<translation>Daten in die Tabelle importieren</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="37"/>
+ <location filename="../windows/tablewindow.h" line="38"/>
<source>Add new table constraint</source>
<translation>Neue Tabellenbedingung zufügen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="38"/>
+ <location filename="../windows/tablewindow.h" line="39"/>
<source>Edit selected table constraint</source>
<translation>Markierte Tabellenbedingung bearbeiten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="39"/>
+ <location filename="../windows/tablewindow.h" line="40"/>
<source>Delete selected table constraint</source>
<translation>Markierte Tabellenbedingung löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="40"/>
+ <location filename="../windows/tablewindow.h" line="41"/>
<source>Refresh table index list</source>
<translation>Aktualisiere Tabellenindexliste</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation>Neuen Index zufügen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation>Gewählten Index bearbeiten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation>Gewählten Index löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <location filename="../windows/tablewindow.h" line="45"/>
<source>Refresh table trigger list</source>
<translation>Aktualisiere Tabellentriggerliste</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="45"/>
+ <location filename="../windows/tablewindow.h" line="46"/>
<location filename="../windows/viewwindow.h" line="25"/>
<source>Add new trigger</source>
<translation>Neuen Trigger zufügen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="46"/>
+ <location filename="../windows/tablewindow.h" line="47"/>
<location filename="../windows/viewwindow.h" line="26"/>
<source>Edit selected trigger</source>
<translation>Gewählten Trigger bearbeiten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="47"/>
+ <location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="27"/>
<source>Delete selected trigger</source>
<translation>Gewählten Trigger löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="48"/>
+ <location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
<translation>Springe zum nächsten Reiter</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation>Springe zum vorherigen Reiter</translation>
@@ -4732,174 +4994,180 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Ausschneiden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Einfügen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Alles auswählen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Rückgängig</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Wiederholen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Komplett</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>SQL formatieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>SQL in Datei speichern</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation>SQL aus Datei laden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Zeile löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Zeile löschen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Block nach unten verschieben</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Block nach oben verschieben</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Block nach unten kopieren</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translatorcomment>&quot;up down&quot; ??? Muss geklärt werden!</translatorcomment>
<translation>Kopiere auf ab</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Finden</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Nächster Fund</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Vorheriger Fund</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Ersetzen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation>Kommentar umschalten</translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation>SQL Inhalte in Datei speichern: %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="819"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1054"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation>In Datei speichern</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Die Datei &apos;%1&apos; kann nicht für Schreibzugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>SQL Skripte (*.sql);;Alle Dateien (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation>Datei öffnen</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Die Datei &apos;%1&apos; kann nicht für Lesezugriffe geöffnet werden: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Das Dokumentenende wurde erreicht. Drücken Sie &apos;Nächster Fund&apos;, um die Suche am Dokumentenanfang fortzusetzen.</translation>
</message>
@@ -4907,36 +5175,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
<translation>Spalte:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
<translation>Datentyp:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
<translation>Tabelle:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
<translation>Bedingungen:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation>Diese Zelle kann nicht editiert werden, weil: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Es können keine Daten für eine Zelle dargestellt werden, die eine bereits geschlossene Datenbank referenziert.</translation>
</message>
@@ -4944,83 +5212,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation>Die Zelle kann nicht editiert. Details: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation>Diese Zeile ist zum Löschen markiert.</translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation>Nicht gespeicherte Daten</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation>Es gibt ungespeicherte Änderungen. Möchten Sie wirklich fortfahren? Alle Änderungen werden dann verloren gehen.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation>Fehler beim Committen der Transaktion: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<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="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation>Fehler beim Committen der Daten: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Fehler beim Ausführen der SQL-Abfrage auf der Datenbank &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation>Fehler beim Laden der Abfrageergebnisse: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation>Anzahl an Zeilen zum Einfügen:</translation>
</message>
@@ -5028,92 +5301,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation>Kopieren als...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation>Einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation>Einfügen als...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation>NULL Wert setzen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation>Werte löschen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation>Wert im Editor bearbeiten</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation>Commit</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation>Rollback</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation>Gewählte Zellen speichern</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation>Gewählte Zellen wiederherstellen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation>Sortierspalten definieren</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation>Benutzerdefinierte Sortierung entfernen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation>Zeile einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation>Gewählte Zeile löschen</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<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="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation>Werte editieren</translation>
</message>
@@ -5121,12 +5419,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation>Fehler beim Committen der neuen Zeile: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Fehler beim Löschen der Zeile aus Tabelle %1: %2</translation>
</message>
@@ -5155,19 +5453,19 @@ find next</source>
<location filename="../windows/tableconstraintsmodel.cpp" line="75"/>
<source>Type</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Typ</translation>
</message>
<message>
<location filename="../windows/tableconstraintsmodel.cpp" line="77"/>
<source>Details</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Details</translation>
</message>
<message>
<location filename="../windows/tableconstraintsmodel.cpp" line="79"/>
<source>Name</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name</translation>
</message>
</context>
<context>
@@ -5175,7 +5473,7 @@ find next</source>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="29"/>
<source>Foreign table:</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Fremde Tabelle:</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="48"/>
@@ -5186,7 +5484,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="62"/>
<source>Columns</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalten</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="77"/>
@@ -5201,32 +5499,32 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="126"/>
<source>Reactions</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Reaktionen</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="165"/>
<source>Deferred foreign key</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Verzögerter Fremdschlüssel</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="183"/>
<source>Named constraint</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Benannte Bedingung</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.ui" line="190"/>
<source>Constraint name</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name der Bedingung</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.cpp" line="53"/>
<source>Pick the foreign column.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Wählen Sie die Fremdspalte aus.</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.cpp" line="65"/>
<source>Pick the foreign table.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Wählen Sie die Fremdtabelle aus.</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.cpp" line="66"/>
@@ -5236,7 +5534,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tableforeignkeypanel.cpp" line="67"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
<message>
<location filename="../constraints/tableforeignkeypanel.cpp" line="209"/>
@@ -5250,22 +5548,22 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="32"/>
<source>Columns</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalten</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="59"/>
<source>Column</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalte</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="84"/>
<source>Collation</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Kollation</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="109"/>
<source>Sort</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Sortierung</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="142"/>
@@ -5275,22 +5573,22 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="145"/>
<source>Autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Automatisch hochzählend</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="167"/>
<source>Named constraint</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Benannte Bedingung</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="174"/>
<source>Constraint name</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name der Bedingung</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="199"/>
<source>On conflict</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Bei Konflikt</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/>
@@ -5302,35 +5600,74 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/>
<source>Sort order</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Sortierung</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/>
<source>Select at least one column.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Mindestens eine Spalte auswählen.</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
</context>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Name</source>
<comment>table structure columns</comment>
<translation>Name</translation>
</message>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="303"/>
<source>Data type</source>
<comment>table structure columns</comment>
<translation type="unfinished">Datentyp</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">Prüfung</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>Standardwert</translation>
@@ -5341,7 +5678,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../windows/tablewindow.ui" line="36"/>
<source>Structure</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Struktur</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="60"/>
@@ -5350,420 +5687,431 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="207"/>
<source>Constraints</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Bedingungen</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="221"/>
<source>Indexes</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Indizes</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="250"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Trigger</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="282"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Tabelle füllen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalte nach oben verschieben</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalte nach unten verschieben</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Erzeuge identische Tabelle</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Index löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Trigger Liste aktualisieren</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Trigger löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Autoincrement zurücksetzen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle &apos;%1&apos; zurücksetzen möchten?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Bedingung löschen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Nicht gespeicherte Änderungen</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Spalten</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Partieller Indexzustand</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Details</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
@@ -5792,7 +6140,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/triggerdialog.ui" line="30"/>
<source>On table:</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Auf Tabelle:</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="40"/>
@@ -5848,7 +6196,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/triggerdialog.ui" line="132"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="159"/>
@@ -5863,7 +6211,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/triggerdialog.cpp" line="353"/>
<source>Enter a valid condition.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Geben Sie einen gültigen Zustand ein.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="354"/>
@@ -5874,13 +6222,14 @@ Do you want to commit the structure, or do you want to go back to the structure
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>Error</source>
<comment>trigger dialog</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Fehler</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Fehler beim Ausführen des folgenden SQL Statments:
+%1</translation>
</message>
</context>
<context>
@@ -5911,7 +6260,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../windows/viewwindow.ui" line="36"/>
<source>Query</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Abfrage</translation>
</message>
<message>
<location filename="../windows/viewwindow.ui" line="60"/>
@@ -5919,201 +6268,272 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Trigger</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <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="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
- <source>Refresh trigger list</source>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
- <source>Create new trigger</source>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
- <source>Edit selected trigger</source>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <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="329"/>
+ <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="334"/>
+ <source>Refresh trigger list</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Trigger Liste aktualisieren</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
+ <source>Create new trigger</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Trigger erstellen</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
+ <source>Edit selected trigger</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Trigger editieren</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Trigger löschen</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Nicht gespeicherte Änderungen</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Name</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Details</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<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 78940e4..715333f 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="es_ES">
+<TS version="2.0" language="es_ES">
<context>
<name>AboutDialog</name>
<message>
@@ -586,95 +586,110 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <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="84"/>
+ <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="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <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="87"/>
+ <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="89"/>
+ <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="90"/>
+ <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="91"/>
+ <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="92"/>
+ <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="93"/>
+ <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="94"/>
+ <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="95"/>
+ <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="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -888,557 +903,616 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
- <source>Inserting new row in data grid</source>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
- <source>Before currently selected row</source>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <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="776"/>
+ <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="779"/>
+ <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="789"/>
+ <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="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <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="817"/>
+ <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="820"/>
+ <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="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <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="846"/>
+ <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="856"/>
+ <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="859"/>
+ <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="869"/>
+ <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="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
- <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
- <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -1490,43 +1564,43 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation type="unfinished"></translation>
</message>
@@ -1678,137 +1752,137 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback 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="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<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="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1955,7 +2029,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -1976,47 +2050,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <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="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<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"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation type="unfinished"></translation>
</message>
@@ -2065,9 +2139,31 @@ Browsing other pages will be possible after the row counting is done.</source>
</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>
@@ -2082,343 +2178,349 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
- <source>Delete database</source>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
- <source>Are you sure you want to delete database &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
- <source>Error while executing VACUUM on the database %1: %2</source>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>VACUUM execution finished successfully.</source>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2453,123 +2555,128 @@ All objects from this group will be moved to parent group.</source>
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <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="427"/>
+ <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="430"/>
+ <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="433"/>
+ <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="438"/>
+ <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="448"/>
+ <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="471"/>
+ <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="474"/>
+ <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="477"/>
+ <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="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation type="unfinished"></translation>
</message>
@@ -3320,102 +3427,175 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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="65"/>
+ <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="131"/>
+ <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="185"/>
+ <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="186"/>
+ <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="187"/>
+ <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="236"/>
+ <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="247"/>
+ <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="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <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="455"/>
+ <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="467"/>
+ <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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3456,273 +3636,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
@@ -4122,127 +4302,127 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL 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="27"/>
<source>Commit changes to cell(s) contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback 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="29"/>
<source>Delete selected data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4469,6 +4649,11 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <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>
@@ -4540,106 +4725,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <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="37"/>
+ <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="38"/>
+ <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="39"/>
+ <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="40"/>
+ <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="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <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="45"/>
+ <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="46"/>
+ <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="47"/>
+ <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="48"/>
+ <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="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation type="unfinished"></translation>
@@ -4883,47 +5068,53 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -4931,36 +5122,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <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="252"/>
+ <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="255"/>
+ <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="285"/>
+ <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="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -4968,83 +5159,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5052,92 +5248,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5145,12 +5366,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5342,19 +5563,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <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="301"/>
+ <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>
@@ -5374,6 +5634,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5398,396 +5659,406 @@ but it&apos;s okay to use them anyway.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
@@ -5943,201 +6214,272 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <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="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
index 6ecc9aa..015a070 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
@@ -6,17 +6,17 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="14"/>
<source>About SQLiteStudio and licenses</source>
- <translation>Apropos de SQLiteStudio et licences</translation>
+ <translation>À propos de SQLiteStudio et ses licences</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="24"/>
<source>About</source>
- <translation>Apropos</translation>
+ <translation>À propos de…</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="30"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Free, open-source, cross-platform SQLite database manager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Author and active maintainer:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Libre, open-source, cross-platform SQLite database manager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Auteur et maintenance:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Libre, open-source, cross-platform SQLite database manager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Auteur et maintenance:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="41"/>
@@ -31,7 +31,7 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="61"/>
<source>Icon directories</source>
- <translation>Répertoires d&apos;images</translation>
+ <translation>Répertoires d&rsquo;images</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="81"/>
@@ -46,7 +46,7 @@
<message>
<location filename="../dialogs/aboutdialog.ui" line="121"/>
<source>Application directory</source>
- <translation>Répertoire de l&apos;application</translation>
+ <translation>Répertoire de l&rsquo;application</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="172"/>
@@ -110,7 +110,7 @@
<location filename="../dialogs/bugdialog.ui" line="43"/>
<location filename="../dialogs/bugdialog.cpp" line="121"/>
<source>Log in</source>
- <translation>S&apos;identifier</translation>
+ <translation>S&rsquo;identifier</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="68"/>
@@ -135,7 +135,7 @@
<message>
<location filename="../dialogs/bugdialog.ui" line="131"/>
<source>Operating system</source>
- <translation>Système d&apos;exploitation</translation>
+ <translation>Système d&rsquo;exploitation</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="143"/>
@@ -150,7 +150,7 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="66"/>
<source>You can see all your reported bugs and ideas by selecting menu &apos;%1&apos; and then &apos;%2&apos;.</source>
- <translation>Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu &apos;%1&apos; puis &apos;%2&apos;.</translation>
+ <translation>Vous pouvez voir tous bugs et idées que vous avez rapportées en sélectionnant le menu «&nbsp;%1&nbsp;» puis «&nbsp;%2&nbsp;».</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="74"/>
@@ -161,7 +161,7 @@
<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&apos;envoi du rapport de bug: %1
+ <translation>Une erreur est survenue lors de l&rsquo;envoi du rapport de bug: %1
%2</translation>
</message>
<message>
@@ -173,13 +173,13 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="88"/>
<source>An idea proposal sent successfully.</source>
- <translation>L&apos;idée proposée à été envoyée avec succès.</translation>
+ <translation>L&rsquo;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&apos;envoi de l&apos;idée proposée: %1 %2</translation>
+ <translation>Une erreeur est survenu lors de l&rsquo;envoi de l&rsquo;idée proposée: %1 %2</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="105"/>
@@ -229,7 +229,7 @@
<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 &apos;help&apos; 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 &apos;help&apos;sur le coté droit.</translation>
+ <translation>En fournissant un mail existant il sera possible de vous contacterau sujet du rapport. Pour en savoir plus, clic sur le bouton «&nbsp;help&nbsp;» sur le coté droit.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="146"/>
@@ -275,12 +275,12 @@
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="50"/>
<source>Clear reports history</source>
- <translation>Vider l&apos;historique de rapports</translation>
+ <translation>Vider l&rsquo;historique de rapports</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="51"/>
<source>Delete selected entry</source>
- <translation>Supprimer l&apos;entrée sélectionnée</translation>
+ <translation>Supprimer l&rsquo;entrée sélectionnée</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="90"/>
@@ -361,7 +361,7 @@
<message>
<location filename="../windows/collationseditor.ui" line="204"/>
<source>Implementation language:</source>
- <translation>Language d&apos;implémentation:</translation>
+ <translation>Language d&rsquo;implémentation:</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="132"/>
@@ -381,7 +381,7 @@
<message>
<location filename="../windows/collationseditor.ui" line="166"/>
<source>Implementation code:</source>
- <translation>Code d&apos;inplémentation:</translation>
+ <translation>Code d&rsquo;inplémentation:</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="52"/>
@@ -421,17 +421,17 @@
<message>
<location filename="../windows/collationseditor.cpp" line="291"/>
<source>Pick the implementation language.</source>
- <translation>Prendre le language d&apos;inplémentation.</translation>
+ <translation>Prendre le language d&rsquo;inplé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&apos;implémentation.</translation>
+ <translation>Saississez un nom, non vide, de language d&rsquo;implémentation.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
<source>Collations editor window has uncommited modifications.</source>
- <translation>L&apos;éditeur de regroupement n&apos;as pas enregistré les modifications.</translation>
+ <translation>L&rsquo;éditeur de regroupement n&rsquo;as pas enregistré les modifications.</translation>
</message>
</context>
<context>
@@ -480,12 +480,12 @@
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="39"/>
<source>Enter a default value expression.</source>
- <translation>Saississez l&apos;expression d&apos;une valeur par défaut.</translation>
+ <translation>Saississez l&rsquo;expression d&rsquo;une valeur par défaut.</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="78"/>
<source>Invalid default value expression: %1</source>
- <translation>Invalide expression d&apos;une valeur par défaut: %1</translation>
+ <translation>Invalide expression d&rsquo;une valeur par défaut: %1</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="90"/>
@@ -663,7 +663,7 @@
<location filename="../dialogs/columndialog.cpp" line="228"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
- <translation>Etes-vous sûr de vouloir supprimer la contrainte &apos;%1&apos;?</translation>
+ <translation>Etes-vous sûr de vouloir supprimer la contrainte «&nbsp;%1&nbsp;» ?</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="290"/>
@@ -674,8 +674,8 @@
<location filename="../dialogs/columndialog.cpp" line="293"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
- <translation>Cette contrainte n&apos;est pas supportée officiellement par SQLite 2,
-mais c&apos;est OK pour l&apos;utiliser.</translation>
+ <translation>Cette contrainte n&rsquo;est pas supportée officiellement par SQLite 2,
+mais c&rsquo;est OK pour l&rsquo;utiliser.</translation>
</message>
</context>
<context>
@@ -772,7 +772,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="87"/>
<source>Enter a name of the constraint.</source>
- <translation>Saississez le nom d&apos;une contrainte.</translation>
+ <translation>Saississez le nom d&rsquo;une contrainte.</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="103"/>
@@ -963,7 +963,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<location filename="../dialogs/configdialog.ui" line="269"/>
<location filename="../dialogs/configdialog.ui" line="279"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Lorsque les données sont lues dans le tableau la largeur est automatiquement ajustée. Cette valeur limite la largeur initialepour l&apos;ajustement, mais l&apos;utilisateur peut recadrer les colonnes manuellement audessus de cette limite.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Lorsque les données sont lues dans le tableau la largeur est automatiquement ajustée. Cette valeur limite la largeur initialepour l&rsquo;ajustement, mais l&rsquo;utilisateur peut recadrer les colonnes manuellement audessus de cette limite.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="272"/>
@@ -1020,17 +1020,17 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
- <translation>Nombre de DDL modifiés gardés dans l&apos;historique.</translation>
+ <translation>Nombre de DDL modifiés gardés dans l&rsquo;historique.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
- <translation>Dimension de l&apos;historique DDL:</translation>
+ <translation>Dimension de l&rsquo;historique DDL:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation>Ne pas montrer la présualisation DDL pendant l&apos;enregistrement de schéma modifié</translation>
+ <translation>Ne pas montrer la présualisation DDL pendant l&rsquo;enregistrement de schéma modifié</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="514"/>
@@ -1041,17 +1041,17 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<location filename="../dialogs/configdialog.ui" line="526"/>
<location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
- <translation>Nombre de requêtes gardées dans l&apos;historique.</translation>
+ <translation>Nombre de requêtes gardées dans l&rsquo;historique.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
- <translation>Dimension de l&apos;historique:</translation>
+ <translation>Dimension de l&rsquo;historique:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation>&lt;p&gt;S&apos;il y a plus d&apos;une requête dans l&apos;éditeur d&apos;SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d&apos;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.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;S&rsquo;il y a plus d&rsquo;une requête dans l&rsquo;éditeur d&rsquo;SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d&rsquo;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.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="552"/>
@@ -1102,7 +1102,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
- <translation>Le changement de langage requiére le redemarrage de l&apos;application pour prendre effet.</translation>
+ <translation>Le changement de langage requiére le redemarrage de l&rsquo;application pour prendre effet.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="745"/>
@@ -1132,7 +1132,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
- <translation>Sur off, les colonnes seront triées dans l&apos;ordre de saisie de l&apos;instruction CREATE TABLE. </translation>
+ <translation>Sur off, les colonnes seront triées dans l&rsquo;ordre de saisie de l&rsquo;instruction CREATE TABLE. </translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="779"/>
@@ -1167,7 +1167,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
- <translation>Les tables vituelles seront marquées avec un label virtuel.</translation>
+ <translation>Les tables vituelles seront marquées avec un label «&nbsp;virtuel&nbsp;».</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="833"/>
@@ -1182,12 +1182,12 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="856"/>
<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&apos; ils apparaissent dans la table sqlite_master (dans l&apos;ordre de création)</translation>
+ <translation>Si cette option est déactivée, les objets seront triés pour qu&rsquo; ils apparaissent dans la table sqlite_master (dans l&rsquo;ordre de création)</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
- <translation>Tri d&apos;objets (tables, index, déclancheurs et vues) en alpha</translation>
+ <translation>Tri d&rsquo;objets (tables, index, déclancheurs et vues) en alpha</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="869"/>
@@ -1202,12 +1202,12 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Lorsque c&apos;est permis, la fenêtre des tables sera affichée avec l&apos;onglet des données, à la place de l&apos;onglet structure.</translation>
+ <translation>Lorsque c&rsquo;est permis, la fenêtre des tables sera affichée avec l&rsquo;onglet des données, à la place de l&rsquo;onglet structure.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
- <translation>Ourerture la fenêtre de table avec l&apos;onglet des données au départ</translation>
+ <translation>Ourerture la fenêtre de table avec l&rsquo;onglet des données au départ</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="904"/>
@@ -1217,12 +1217,12 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Lorsque c&apos;est permis, la fenêtre des vues sera affichée avec l&apos;onglet des données, à la place de l&apos;onglet structure.</translation>
+ <translation>Lorsque c&rsquo;est permis, la fenêtre des vues sera affichée avec l&rsquo;onglet des données, à la place de l&rsquo;onglet structure.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
- <translation>Ourerture la fenêtre de vue avec l&apos;onglet des données au départ</translation>
+ <translation>Ourerture la fenêtre de vue avec l&rsquo;onglet des données au départ</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="926"/>
@@ -1272,7 +1272,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
- <translation>Police de l&apos;éditeur SQL</translation>
+ <translation>Police de l&rsquo;éditeur SQL</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1393"/>
@@ -1297,7 +1297,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
- <translation>Couleurs de l&apos;éditeur SQL</translation>
+ <translation>Couleurs de l&rsquo;éditeur SQL</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1505"/>
@@ -1317,7 +1317,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
- <translation>&lt;p&gt;Les paramètres fournis par l&apos;utilisateur sont passés par valeur. Ils ont l&apos;une de ces formes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
+ <translation>&lt;p&gt;Les paramètres fournis par l&rsquo;utilisateur sont passés par valeur. Ils ont l&rsquo;une de ces formes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1621"/>
@@ -1382,7 +1382,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Touts les modifications de données seront écrits avec cette couleur,à l&apos;enregistrement de la base de données.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Touts les modifications de données seront écrits avec cette couleur,à l&rsquo;enregistrement de la base de données.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1782"/>
@@ -1392,12 +1392,12 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation>&lt;p&gt;En cas de l&apos;erreur à l&apos;enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;En cas de l&rsquo;erreur à l&rsquo;enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
- <translation>Erreur d&apos;enregistrement du surlignage</translation>
+ <translation>Erreur d&rsquo;enregistrement du surlignage</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1831"/>
@@ -1417,7 +1417,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
- <translation>&lt;p&gt;Des labels supplémentaires indique la version SQLITE, le nombre d&apos;objets au nieau inférieur, etc.&lt;/p&gt;</translation>
+ <translation>&lt;p&gt;Des labels supplémentaires indique la version SQLITE, le nombre d&rsquo;objets au nieau inférieur, etc.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1889"/>
@@ -1432,7 +1432,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
- <translation>Message d&apos;information devant</translation>
+ <translation>Message d&rsquo;information devant</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1944"/>
@@ -1442,7 +1442,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
- <translation>Message d&apos;erreur devant</translation>
+ <translation>Message d&rsquo;erreur devant</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="785"/>
@@ -1494,7 +1494,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<message>
<location filename="../dialogs/configdialog.cpp" line="1202"/>
<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&apos;enregistrement de la configuration entière.</translation>
+ <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&rsquo;enregistrement de la configuration entière.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1266"/>
@@ -1807,7 +1807,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<location filename="../dataview.cpp" line="596"/>
<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&apos;autres pages à la fin du comptage.</translation>
+ <translation>Le total des lignes en cours de comptage. La navigation d&rsquo;autres pages à la fin du comptage.</translation>
</message>
<message>
<location filename="../dataview.cpp" line="607"/>
@@ -1870,12 +1870,12 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="129"/>
<source>Enter valid and writable file path.</source>
- <translation>Saississez le chemin d&apos;un fichier valide et en écriture.</translation>
+ <translation>Saississez le chemin d&rsquo;un fichier valide et en écriture.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="131"/>
<source>Entered file exists and will be overwritten.</source>
- <translation>Le fichier remplacera l&apos;existant.</translation>
+ <translation>Le fichier remplacera l&rsquo;existant.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="135"/>
@@ -1905,7 +1905,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="214"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation>L&apos;erreur suivante est survenue lors de la conversion des déclarations SQL dans cible version SQLite:</translation>
+ <translation>L&rsquo;erreur suivante est survenue lors de la conversion des déclarations SQL dans cible version SQLite:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="215"/>
@@ -2067,7 +2067,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="180"/>
<source>Are you sure you want to delete index %1?</source>
- <translation>Confirmez la suppression de l&apos;indexe %1?</translation>
+ <translation>Confirmez la suppression de l&rsquo;indexe %1?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="184"/>
@@ -2092,7 +2092,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
<source>Error while dropping %1: %2</source>
- <translation>Erreur à l&apos;abandon %1: %2</translation>
+ <translation>Erreur à l&rsquo;abandon %1: %2</translation>
</message>
</context>
<context>
@@ -2140,7 +2140,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Add a database</source>
- <translation>Ajout d&apos;une base de données</translation>
+ <translation>Ajout d&rsquo;une base de données</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="109"/>
@@ -2185,7 +2185,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Integrity check</source>
- <translation>Contrôle d&apos;intégrité</translation>
+ <translation>Contrôle d&rsquo;intégrité</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="118"/>
@@ -2225,7 +2225,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Reset autoincrement sequence</source>
- <translation>Réinitialise l&apos;autoincrémentation</translation>
+ <translation>Réinitialise l&rsquo;autoincrémentation</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="126"/>
@@ -2338,7 +2338,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="940"/>
<source>Entry with name %1 already exists in group %2.</source>
- <translation>L&apos;entrée nommée %1 existe déjà dans le group %2.</translation>
+ <translation>L&rsquo;entrée nommée %1 existe déjà dans le group %2.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="958"/>
@@ -2360,24 +2360,24 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir supprimer la base de données: %1?</translation>
+ <translation>Etes-vous certain de vouloir supprimer la base de données: «&nbsp;%1&nbsp;» ?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1055"/>
<location filename="../dbtree/dbtree.cpp" line="1265"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Import impossible, car aucun plugin d&apos;import n&apos;est chargé.</translation>
+ <translation>Import impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1075"/>
<location filename="../dbtree/dbtree.cpp" line="1240"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Export impossible, car aucun plugin d&apos;import n&apos;est chargé.</translation>
+ <translation>Export impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Erreur pendant l&apos;exécution de VACCUM sur la base de données %1: %2</translation>
+ <translation>Erreur pendant l&rsquo;exécution de VACCUM sur la base de données %1: %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
@@ -2387,31 +2387,31 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati
<message>
<location filename="../dbtree/dbtree.cpp" line="1358"/>
<source>Integrity check (%1)</source>
- <translation>Contrôle d&apos;intégrité (%1)</translation>
+ <translation>Contrôle d&rsquo;intégrité (%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Reset autoincrement</source>
- <translation>Remise à zéro de l&apos;autoincrément</translation>
+ <translation>Remise à zéro de l&rsquo;autoincrément</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir réinitialiser l&apos;outoincrémentation de la table %1?</translation>
+ <translation>Etes-vous certain de vouloir réinitialiser l&rsquo;outoincrémentation de la table «&nbsp;%1&nbsp;» ?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1402"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&apos;autoincrémentation de la table &apos;%1&apos;: %2</translation>
+ <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&rsquo;autoincrémentation de la table «&nbsp;%1&nbsp;» : %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1404"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>La valeur de l&apos;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
+ <translation>La valeur de l&rsquo;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
- <source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
+ <source>Are you sure you want to delete all data from table «&nbsp;%1&nbsp;» ?</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2437,7 +2437,7 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati
<message>
<location filename="../dbtree/dbtree.cpp" line="1541"/>
<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&apos;habitude d&apos;être.</translation>
+ <translation>Les objets restants du groupe supprimé seront déplacés où le groupe a eu l&rsquo;habitude d&rsquo;être.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1543"/>
@@ -2589,8 +2589,8 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati
<location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
- <translation>L&apos;objet suivant existe déjà dans la base de données cible.
-Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interrompre l&apos;opération :</translation>
+ <translation>L&rsquo;objet suivant existe déjà dans la base de données cible.
+Entrez SVP un nouveau nom, unique, ou cliquez «&nbsp;%1&nbsp;» pour d&rsquo;interrompre l&rsquo;opération :</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
@@ -2600,7 +2600,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation>L&apos;erreur suivante est survenue en convertissant des déclarations de SQL de la version cible SQLite :</translation>
+ <translation>L&rsquo;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="1208"/>
@@ -2621,7 +2621,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
-- Date and time of execution: %3
%4</source>
<translation>-- Requête éxécutée sur la base de données %1(%2)
--- Date et heure d&apos;exécution: %3
+-- Date et heure d&rsquo;exécution: %3
%4</translation>
</message>
<message>
@@ -2698,7 +2698,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../windows/editorwindow.cpp" line="368"/>
<source>Clear execution history</source>
<comment>sql editor</comment>
- <translation>Vider l&apos;historique d&apos;exécution</translation>
+ <translation>Vider l&rsquo;historique d&rsquo;exécution</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="370"/>
@@ -2710,7 +2710,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../windows/editorwindow.cpp" line="372"/>
<source>Create view from query</source>
<comment>sql editor</comment>
- <translation>Créer une vue à partir d&apos;une requête</translation>
+ <translation>Créer une vue à partir d&rsquo;une requête</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="382"/>
@@ -2726,13 +2726,13 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../windows/editorwindow.cpp" line="386"/>
<source>Show next tab</source>
<comment>sql editor</comment>
- <translation>Afficher l&apos;onglet suivant</translation>
+ <translation>Afficher l&rsquo;onglet suivant</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="387"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
- <translation>Afficher l&apos;onget précédent</translation>
+ <translation>Afficher l&rsquo;onget précédent</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="388"/>
@@ -2744,7 +2744,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../windows/editorwindow.cpp" line="389"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
- <translation>Focus sur l&apos;éditeur SQL ci-dessus</translation>
+ <translation>Focus sur l&rsquo;éditeur SQL ci-dessus</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="463"/>
@@ -2764,27 +2764,27 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Clear execution history</source>
- <translation>Supprimer l&apos;historique d&apos;exécution</translation>
+ <translation>Supprimer l&rsquo;historique d&rsquo;exécution</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
- <translation>Etes vous certain de vouloir supprimer la totalité de l&apos;historique d&apos;exécution SQL? Aucun retour possible.</translation>
+ <translation>Etes vous certain de vouloir supprimer la totalité de l&rsquo;historique d&rsquo;exécution SQL? Aucun retour possible.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="621"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Impossible d&apos;exporter, car aucun plugin d&apos;expertation n&apos;est chargés.</translation>
+ <translation>Impossible d&rsquo;exporter, car aucun plugin d&rsquo;expertation n&rsquo;est chargés.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="642"/>
<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&apos;éditeur SQL. Impossible de créer une vue sur une base de données inconnue.</translation>
+ <translation>Aucune base de données den sélectionnée dans l&rsquo;éditeur SQL. Impossible de créer une vue sur une base de données inconnue.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="672"/>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation>Fenêtre d&apos;éditeur &quot;%1&quot; n&apos;a pas enregistrer les données.</translation>
+ <translation>Fenêtre d&rsquo;éditeur &quot;%1&quot; n&rsquo;a pas enregistrer les données.</translation>
</message>
</context>
<context>
@@ -2855,7 +2855,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<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>Lorsque cette option n&apos;est contrôlée, alors seulement le DDL de la table (CREATE TABLE...) est exporté.</translation>
+ <translation>Lorsque cette option n&rsquo;est contrôlée, alors seulement le DDL de la table (CREATE TABLE...) est exporté.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="133"/>
@@ -2875,7 +2875,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<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>Notez, ces index de table d&apos;exportation et les déclencheurs peuvent être non supportées par quelques formats de sortie.</translation>
+ <translation>Notez, ces index de table d&rsquo;exportation et les déclencheurs peuvent être non supportées par quelques formats de sortie.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="189"/>
@@ -2921,7 +2921,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/exportdialog.ui" line="318"/>
<source>Export format</source>
- <translation>Format d&apos;exportation</translation>
+ <translation>Format d&rsquo;exportation</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="330"/>
@@ -2931,7 +2931,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/exportdialog.ui" line="336"/>
<source>Exported file path</source>
- <translation>Chemin du fichier d&apos;exportation</translation>
+ <translation>Chemin du fichier d&rsquo;exportation</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="343"/>
@@ -2973,7 +2973,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/exportdialog.cpp" line="175"/>
<source>Enter valid query to export.</source>
- <translation>Saississez une requête valide à exporter.</translation>
+ <translation>Saississez une requête valide à exporter.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="198"/>
@@ -2983,22 +2983,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/exportdialog.cpp" line="221"/>
<source>You must provide a file name to export to.</source>
- <translation>Vous devez fournir le nom d&apos;un fichier à exporter.</translation>
+ <translation>Vous devez fournir le nom d&rsquo;un fichier à exporter.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="228"/>
<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&apos;écraser.</translation>
+ <translation>Le chemin fourni est un répertoire existant. Vous ne pouvez pas l&rsquo;écraser.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="234"/>
<source>The directory &apos;%1&apos; does not exist.</source>
- <translation>Le répertoire %1 n&apos;existe pas.</translation>
+ <translation>Le répertoire «&nbsp;%1&nbsp;» n&rsquo;existe pas.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="240"/>
<source>The file &apos;%1&apos; exists and will be overwritten.</source>
- <translation>Le fichier &apos;%1&apos; existe et sera écrasé.</translation>
+ <translation>Le fichier «&nbsp;%1&nbsp;» existe et sera écrasé.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="417"/>
@@ -3013,7 +3013,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/exportdialog.cpp" line="709"/>
<source>Internal error during export. This is a bug. Please report it.</source>
- <translation>Erreur interne pendant l&apos;exportation. c&apos;est un bug. SVP veuillez le reporter.</translation>
+ <translation>Erreur interne pendant l&rsquo;exportation. c&rsquo;est un bug. SVP veuillez le reporter.</translation>
</message>
</context>
<context>
@@ -3134,18 +3134,18 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/functionseditor.ui" line="293"/>
<source>Initialization code:</source>
- <translation>Code d&apos;initialisation:</translation>
+ <translation>Code d&rsquo;initialisation:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="309"/>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Function implementation code:</source>
- <translation>Fonction de code d&apos;implémentation:</translation>
+ <translation>Fonction de code d&rsquo;implémentation:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="325"/>
<source>Final step implementation code:</source>
- <translation>Etape finale de code d&apos;implémentaion:</translation>
+ <translation>Etape finale de code d&rsquo;implémentaion:</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="54"/>
@@ -3185,22 +3185,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/functionseditor.cpp" line="69"/>
<source>Rename function argument</source>
- <translation>Renomme l&apos;argument de la fonction</translation>
+ <translation>Renomme l&rsquo;argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="70"/>
<source>Delete function argument</source>
- <translation>Supprime l&apos;argument de la fonction</translation>
+ <translation>Supprime l&rsquo;argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="72"/>
<source>Move function argument up</source>
- <translation>Monte l&apos;argument de la fonction</translation>
+ <translation>Monte l&rsquo;argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="73"/>
<source>Move function argument down</source>
- <translation>Descend l&apos;argument de la fonction</translation>
+ <translation>Descend l&rsquo;argument de la fonction</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="111"/>
@@ -3230,7 +3230,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/functionseditor.cpp" line="432"/>
<source>Enter a non-empty implementation code.</source>
- <translation>Saississez un code d&apos;implémentation non vide.</translation>
+ <translation>Saississez un code d&rsquo;implémentation non vide.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="505"/>
@@ -3241,7 +3241,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
<source>Functions editor window has uncommited modifications.</source>
- <translation>L&apos;éditeur de fonction n&apos;a pas enregistré les modifications.</translation>
+ <translation>L&rsquo;éditeur de fonction n&rsquo;a pas enregistré les modifications.</translation>
</message>
</context>
<context>
@@ -3324,7 +3324,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
- <translation>Sélectionnez un plugin d&apos;importation.</translation>
+ <translation>Sélectionnez un plugin d&rsquo;importation.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="130"/>
@@ -3334,7 +3334,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
- <translation>Le fichier &apos;%1&apos; n&apos;existe pas.</translation>
+ <translation>Le fichier «&nbsp;%1&nbsp;» n&rsquo;existe pas.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="143"/>
@@ -3344,7 +3344,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
- <translation>Sélectionnez le fichier d&apos;importation</translation>
+ <translation>Sélectionnez le fichier d&rsquo;importation</translation>
</message>
</context>
<context>
@@ -3368,7 +3368,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/indexdialog.ui" line="50"/>
<source>Partial index condition</source>
- <translation>Condition partielle d&apos;index</translation>
+ <translation>Condition partielle d&rsquo;index</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="67"/>
@@ -3398,17 +3398,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dialogs/indexdialog.cpp" line="65"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
- <translation>Vous tentez d&apos;ouvrir le dialogue de l&apos;index d&apos;une base de données fermée ou inexistante.</translation>
+ <translation>Vous tentez d&rsquo;ouvrir le dialogue de l&rsquo;index d&rsquo;une base de données fermée ou inexistante.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="131"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
- <translation>Impossible de définir l&apos;index %1 correctement. Ouvrir un dialogue d&apos;index valide.</translation>
+ <translation>Impossible de définir l&rsquo;index %1 correctement. Ouvrir un dialogue d&rsquo;index valide.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="185"/>
<source>Pick the table for the index.</source>
- <translation>Sélectionnez la table pour l&apos;index.</translation>
+ <translation>Sélectionnez la table pour l&rsquo;index.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="186"/>
@@ -3448,7 +3448,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation>Une erreur survenue à l&apos;exécution de l&apos;SQL:
+ <translation>Une erreur survenue à l&rsquo;exécution de l&rsquo;SQL:
%1</translation>
</message>
</context>
@@ -3470,12 +3470,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.ui" line="81"/>
<source>Database toolbar</source>
- <translation>Barre d&apos;outils de base de données</translation>
+ <translation>Barre d&rsquo;outils de base de données</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Structure toolbar</source>
- <translation>Barre d&apos;outils de structure</translation>
+ <translation>Barre d&rsquo;outils de structure</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="103"/>
@@ -3490,7 +3490,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.ui" line="134"/>
<source>View toolbar</source>
- <translation>Barre d&apos;outils vues</translation>
+ <translation>Barre d&rsquo;outils vues</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="107"/>
@@ -3510,7 +3510,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="121"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
- <translation>Passage en mode débogue. Cliquez %1 ou utilisez l&apos;entrée du menu &apos; l&apos;Aide / Ouvrir la console de débogage&apos;.</translation>
+ <translation>Passage en mode débogue. Cliquez %1 ou utilisez l&rsquo;entrée du menu «&nbsp;l&rsquo;Aide / Ouvrir la console de débogage&nbsp;».</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="123"/>
@@ -3520,7 +3520,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
- <translation>Vous devez relancer l&apos;application pour que le langage prenne effet.</translation>
+ <translation>Vous devez relancer l&rsquo;application pour que le langage prenne effet.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="256"/>
@@ -3595,7 +3595,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
- <translation>Fermeture fenêtre sélectionnée</translation>
+ <translation>Fermeture fenêtre sélectionnée</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="274"/>
@@ -3640,7 +3640,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
- <translation>Apropos</translation>
+ <translation>À propos de…</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="284"/>
@@ -3670,7 +3670,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
- <translation>Raport d&apos;historique</translation>
+ <translation>Rapport d&rsquo;historique</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="291"/>
@@ -3721,12 +3721,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Exportation impossible, aucun plugin d&apos;exportation n&apos;est chargé.</translation>
+ <translation>Exportation impossible, aucun plugin d&rsquo;exportation n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Importation impossible, aucun plugin d&apos;importation n&apos;est chargé.</translation>
+ <translation>Importation impossible, aucun plugin d&rsquo;importation n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="693"/>
@@ -3761,7 +3761,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
- <translation>Impossible d&apos;ajouter la base de données %1 à la liste.</translation>
+ <translation>Impossible d&rsquo;ajouter la base de données %1 à la liste.</translation>
</message>
</context>
<context>
@@ -3793,12 +3793,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../multieditor/multieditor.cpp" line="77"/>
<source>Configure editors for this data type</source>
- <translation>Configurer l&apos;éditeur pour ce type de données</translation>
+ <translation>Configurer l&rsquo;éditeur pour ce type de données</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="287"/>
<source>Data editor plugin &apos;%1&apos; not loaded, while it is defined for editing &apos;%1&apos; data type.</source>
- <translation>Plugin d&quot;éditeur de données &apos;%1&apos; non chargé, ausii il n&apos;ai pas défini pourle type de données &apos;%1&apos;.</translation>
+ <translation>Plugin d&quot;éditeur de données «&nbsp;%1&nbsp;» non chargé, ausii il n&rsquo;ai pas défini pourle type de données «&nbsp;%1&nbsp;».</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="372"/>
@@ -3999,7 +3999,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<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&apos;application sera aussi effectué à la fin.</translation>
+ <translation>La mise à jour sera automatiquement téléchargée et installée. Un redémarrage de l&rsquo;application sera aussi effectué à la fin.</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="121"/>
@@ -4094,17 +4094,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<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>impossible d&apos;éditer les colonnes qui ont le résultat composé des déclarations %1 (inclus %2, %3 ou %4 mots-clés).</translation>
+ <translation>impossible d&rsquo;éditer les colonnes qui ont le résultat composé des déclarations %1 (inclus %2, %3 ou %4 mots-clés).</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/>
<source>The query execution mechanism had problems with extracting ROWID&apos;s properly. This might be a bug in the application. You may want to report this.</source>
- <translation>Le mécanisme d&apos;exécution de la requête a eu des problèmes avec l&apos;extraction du ROWID&apos;S. Ceci pourrait être un bogue de l&apos;application. Vous pouvez le rapporter.</translation>
+ <translation>Le mécanisme d&rsquo;exécution de la requête a eu des problèmes avec l&rsquo;extraction du ROWID&rsquo;S. Ceci pourrait être un bogue de l&rsquo;application. Vous pouvez le rapporter.</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>La colonne demandée est un résultat d&apos;expression de SQL, au lieu d&apos;une sélection de colonne simple. De telles colonnes ne peuvent pas être éditées.</translation>
+ <translation>La colonne demandée est un résultat d&rsquo;expression de SQL, au lieu d&rsquo;une sélection de colonne simple. De telles colonnes ne peuvent pas être éditées.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/>
@@ -4114,22 +4114,22 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/>
<source>Cannot edit results of query other than %1.</source>
- <translation>Impossible d&apos;éditer les résultats de la requëte autrement que %1.</translation>
+ <translation>Impossible d&rsquo;éditer les résultats de la requëte autrement que %1.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/>
<source>Cannot edit columns that are result of aggregated %1 statements.</source>
- <translation>Impossible d&apos;éditer les colonnes qui sont le résultat de déclarations agrégées %1.</translation>
+ <translation>Impossible d&rsquo;éditer les colonnes qui sont le résultat de déclarations agrégées %1.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/>
<source>Cannot edit columns that are result of %1 statement.</source>
- <translation>Impossible d&apos;éditer les colonnesqui sont le résultat de déclaration %1.</translation>
+ <translation>Impossible d&rsquo;éditer les colonnesqui sont le résultat de déclaration %1.</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>Impossible d&apos;éditer les colonnes qui sont le résultat de table commune de déclaration (%1).</translation>
+ <translation>Impossible d&rsquo;éditer les colonnes qui sont le résultat de table commune de déclaration (%1).</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/>
@@ -4191,7 +4191,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Rollback changes to cell(s) contents</source>
- <translation>Annule les modifications de cellule(s)</translation>
+ <translation>Annule les modifications de cellule(s)</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="28"/>
@@ -4246,7 +4246,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dbtree/dbtree.h" line="27"/>
<source>Delete selected item</source>
- <translation>Suppression de l&apos;item sélectionné</translation>
+ <translation>Suppression de l&rsquo;item sélectionné</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="28"/>
@@ -4276,7 +4276,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dbtree/dbtree.h" line="33"/>
<source>Copy selected item(s)</source>
- <translation>Copie d&apos;item(s) sélectionné(s)</translation>
+ <translation>Copie d&rsquo;item(s) sélectionné(s)</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
@@ -4313,7 +4313,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../formview.h" line="16"/>
<source>Data form view</source>
- <translation>Formulaire vue de données</translation>
+ <translation>Formulaire vue de données</translation>
</message>
<message>
<location filename="../formview.h" line="17"/>
@@ -4363,7 +4363,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../mainwindow.h" line="44"/>
<source>Open SQL editor</source>
- <translation>Ouvrir l&apos;éditeur SQL</translation>
+ <translation>Ouvrir l&rsquo;éditeur SQL</translation>
</message>
<message>
<location filename="../mainwindow.h" line="45"/>
@@ -4438,7 +4438,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
- <translation>Sélectionnez le contenu entier de l&apos;éditeur</translation>
+ <translation>Sélectionnez le contenu entier de l&rsquo;éditeur</translation>
</message>
<message>
<location filename="../sqleditor.h" line="30"/>
@@ -4448,7 +4448,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
- <translation>Charger le contenu d&apos;un fichier</translation>
+ <translation>Charger le contenu d&rsquo;un fichier</translation>
</message>
<message>
<location filename="../sqleditor.h" line="32"/>
@@ -4524,17 +4524,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/bugreporthistorywindow.h" line="11"/>
<source>Reports history window</source>
- <translation>Fenêtre d&apos;historique</translation>
+ <translation>Fenêtre d&rsquo;historique</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.h" line="12"/>
<source>Delete selected entry</source>
- <translation>Effacer l&apos;entrée sélectionnée</translation>
+ <translation>Effacer l&rsquo;entrée sélectionnée</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="26"/>
<source>SQL editor window</source>
- <translation>Fenêtre de l&apos;éditeur SQL</translation>
+ <translation>Fenêtre de l&rsquo;éditeur SQL</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="27"/>
@@ -4559,12 +4559,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/editorwindow.h" line="31"/>
<source>Go to next editor tab</source>
- <translation>Aller à l&apos;onglet d&apos;éditeur suivant</translation>
+ <translation>Aller à l&rsquo;onglet d&rsquo;éditeur suivant</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="32"/>
<source>Go to previous editor tab</source>
- <translation>Aller à l&apos;onglet d&apos;éditeur précédent</translation>
+ <translation>Aller à l&rsquo;onglet d&rsquo;éditeur précédent</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="33"/>
@@ -4639,12 +4639,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/tablewindow.h" line="42"/>
<source>Edit selected index</source>
- <translation>Modifie l&apos;index sélectionné</translation>
+ <translation>Modifie l&rsquo;index sélectionné</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="43"/>
<source>Delete selected index</source>
- <translation>Supprime l&apos;index sélectionné</translation>
+ <translation>Supprime l&rsquo;index sélectionné</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="44"/>
@@ -4673,13 +4673,13 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
- <translation>Aller à l&apos;onglet suivant</translation>
+ <translation>Aller à l&rsquo;onglet suivant</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
- <translation>Aller à l&apos;onglet précédent</translation>
+ <translation>Aller à l&rsquo;onglet précédent</translation>
</message>
<message>
<location filename="../windows/viewwindow.h" line="23"/>
@@ -4689,7 +4689,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../windows/viewwindow.h" line="24"/>
<source>Refresh view trigger list</source>
- <translation>Actualise l&apos;affichage de la liste des déclencheur</translation>
+ <translation>Actualise l&rsquo;affichage de la liste des déclencheur</translation>
</message>
</context>
<context>
@@ -4704,7 +4704,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<source>Are you sure you want to quit the application?
Following items are pending:</source>
- <translation>Confirmez la fermeture de l&apos;application:</translation>
+ <translation>Confirmez la fermeture de l&rsquo;application:</translation>
</message>
</context>
<context>
@@ -4732,7 +4732,7 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="50"/>
<source>Regular expression matching</source>
- <translation>Correspondance d&apos;expression régulière</translation>
+ <translation>Correspondance d&rsquo;expression régulière</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="60"/>
@@ -4928,12 +4928,12 @@ recherche suivant</translation>
<message>
<location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
- <translation>L&apos;achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l&apos;éditeur SQL.</translation>
+ <translation>L&rsquo;achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l&rsquo;éditeur SQL.</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
- <translation>Le contenu l&apos;éditeur SQL est important, aussi la détectiond&apos;objets en erreur est temporairement mise hors de service.</translation>
+ <translation>Le contenu l&rsquo;éditeur SQL est important, aussi la détectiond&rsquo;objets en erreur est temporairement mise hors de service.</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1057"/>
@@ -4943,7 +4943,7 @@ recherche suivant</translation>
<message>
<location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
- <translation>Impossible d&apos;ouvrir en écriture le fichier &apos;%1&apos;: %2</translation>
+ <translation>Impossible d&rsquo;ouvrir en écriture le fichier «&nbsp;%1&nbsp;» : %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1069"/>
@@ -4958,7 +4958,7 @@ recherche suivant</translation>
<message>
<location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
- <translation>Impossible d&apos;ouvrir en lecture le fichier &apos;%1&apos;: %2</translation>
+ <translation>Impossible d&rsquo;ouvrir en lecture le fichier «&nbsp;%1&nbsp;» : %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1288"/>
@@ -4995,7 +4995,7 @@ recherche suivant</translation>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
<source>This cell is not editable, because: %1</source>
- <translation>Cette cellule n&apos;est pas modifiable: %1</translation>
+ <translation>Cette cellule n&rsquo;est pas modifiable: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
@@ -5038,7 +5038,7 @@ recherche suivant</translation>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
<source>Cannot commit the data for a cell that refers to the already closed database.</source>
- <translation>Impossible d&apos;enregistrer les données pour la cell qui référe à une base de données déjà fermée.</translation>
+ <translation>Impossible d&rsquo;enregistrer les données pour la cell qui référe à une base de données déjà fermée.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="374"/>
@@ -5048,28 +5048,28 @@ recherche suivant</translation>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation>Une erreur est survenuelors de l&apos;enregistrement de la transaction: %1</translation>
+ <translation>Une erreur est survenuelors de l&rsquo;enregistrement de la transaction: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
<source>An error occurred while rolling back the transaction: %1</source>
- <translation>Une erreur est survenuelors de l&apos;annulation de la transaction: %1</translation>
+ <translation>Une erreur est survenuelors de l&rsquo;annulation de la transaction: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
<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&apos;enregistrement d&apos;une une cellule qui n&apos;est pas modifiable! Ceci est un bogue. Rapportez-le SVP.</translation>
+ <translation>Tentative d&rsquo;enregistrement d&rsquo;une une cellule qui n&rsquo;est pas modifiable! Ceci est un bogue. Rapportez-le SVP.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
<source>An error occurred while commiting the data: %1</source>
- <translation>Une erreur est survenuelors de l&apos;enregistrement des données: %1</translation>
+ <translation>Une erreur est survenuelors de l&rsquo;enregistrement des données: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
<location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
- <translation>Erreur pendant l&apos;exécution de la requête sur la base de données %1: %2</translation>
+ <translation>Erreur pendant l&rsquo;exécution de la requête sur la base de données «&nbsp;%1&nbsp;» : %2</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
@@ -5122,7 +5122,7 @@ recherche suivant</translation>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Edit value in editor</source>
- <translation>Valeur modifiée par l&apos;éditeur</translation>
+ <translation>Valeur modifiée par l&rsquo;éditeur</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="79"/>
@@ -5185,12 +5185,12 @@ recherche suivant</translation>
<message>
<location filename="../datagrid/sqltablemodel.cpp" line="74"/>
<source>Error while commiting new row: %1</source>
- <translation>Erreur à l&apos;nregistrement d&apos;une nouvelle ligne: %1</translation>
+ <translation>Erreur à l&rsquo;nregistrement d&rsquo;une nouvelle ligne: %1</translation>
</message>
<message>
<location filename="../datagrid/sqltablemodel.cpp" line="132"/>
<source>Error while deleting row from table %1: %2</source>
- <translation>Erreur à la suppression d&apos;une ligne de la table %1: %2</translation>
+ <translation>Erreur à la suppression d&rsquo;une ligne de la table %1: %2</translation>
</message>
</context>
<context>
@@ -5445,7 +5445,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="192"/>
<source>Import data to table</source>
<comment>table window</comment>
- <translation>Importer les données d&apos;une table</translation>
+ <translation>Importer les données d&rsquo;une table</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="193"/>
@@ -5512,7 +5512,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="222"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
- <translation>Réinitialisation de l&apos;incrémentatio,</translation>
+ <translation>Réinitialisation de l&rsquo;incrémentation</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="225"/>
@@ -5572,7 +5572,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="252"/>
<source>Refresh index list</source>
<comment>table window</comment>
- <translation>Actualiser la liste d&apos;index</translation>
+ <translation>Actualiser la liste d&rsquo;index</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="254"/>
@@ -5596,7 +5596,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="262"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
- <translation>Actualiser la liste d&apos;index</translation>
+ <translation>Actualiser la liste d&rsquo;index</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="264"/>
@@ -5620,7 +5620,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="299"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
- <translation>Etes-vous certain de vouloir supprimer lla colonne: %1?</translation>
+ <translation>Etes-vous certain de vouloir supprimer la colonne : «&nbsp;%1&nbsp;» ?</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="327"/>
@@ -5639,12 +5639,12 @@ Voudriez-vous procéder?</translation>
<message>
<location filename="../windows/tablewindow.cpp" line="467"/>
<source>Could not load data for table %1. Error details: %2</source>
- <translation>Impossible de charger les données de table %1. Détails d&apos; erreur: %2</translation>
+ <translation>Impossible de charger les données de table %1. Détails d&rsquo; erreur: %2</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="580"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
- <translation>Impossible de lancer correctement la table %1. Impossible d&apos;ouvrir la fenêtre de table.</translation>
+ <translation>Impossible de lancer correctement la table %1. Impossible d&rsquo;ouvrir la fenêtre de table.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="635"/>
@@ -5672,7 +5672,7 @@ Voudriez-vous procéder?</translation>
</message>
<message>
<source>Could not restore window, because the table %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&apos;existe pas dans la base de données %2..</translation>
+ <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&rsquo;existe pas dans la base de données %2..</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="682"/>
@@ -5684,27 +5684,27 @@ Voudriez-vous procéder?</translation>
<location filename="../windows/tablewindow.cpp" line="835"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
- <translation>Impossible d&apos;enregistrer la structure de table. Message d&apos;erreur: %1</translation>
+ <translation>Impossible d&rsquo;enregistrer la structure de table. Message d&rsquo;erreur: %1</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="857"/>
<source>Reset autoincrement</source>
- <translation>Réinitialisation de l&apos;incrémentation</translation>
+ <translation>Réinitialisation de l&rsquo;incrémentation</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="857"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation>Etes-vous certain de vouloir réinitialiser l&apos;autoincrémentation de la table %1?</translation>
+ <translation>Etes-vous certain de vouloir réinitialiser l&rsquo;autoincrémentation de la table %1?</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="864"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&apos;autoincrémentation de la table &apos;%1&apos;: %2</translation>
+ <translation>Une erreur est survenue pendant la réinitialisation de la valeur de l&rsquo;autoincrémentation de la table «&nbsp;%1&nbsp;»: %2</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="866"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation>La valeur de l&apos;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
+ <translation>La valeur de l&rsquo;autoincrémentaion de la table %1 a été réinitialisé avec succès.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="946"/>
@@ -5726,18 +5726,18 @@ Are you sure you want to create a table with blank name?</source>
<message>
<location filename="../windows/tablewindow.cpp" line="981"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
- <translation>Impossible de créer la table %1, s&apos;l n&apos;y a pas de clé primaire de définie. Toute fois ne pas contrôler %2 ou définir une clé primaire.</translation>
+ <translation>Impossible de créer la table %1, s&rsquo;il n&rsquo;y a pas de clé primaire de définie. Toute fois ne pas contrôler %2 ou définir une clé primaire.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="988"/>
<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>Impossible d&apos;utiliser l&apos;autoincrémentation pour une clé primaire quand la clause %1 est utilisée. Toute fois ne pas contrôler %2, ou utiliser l&apos;autoincrémentation sur une clé primaire.</translation>
+ <translation>Impossible d&rsquo;utiliser l&rsquo;autoincrémentation pour une clé primaire quand la clause %1 est utilisée. Toute fois ne pas contrôler %2, ou utiliser l&rsquo;autoincrémentation sur une clé primaire.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1125"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
- <translation>Etes-vous sûr de vouloir supprimer la contrainte &apos;%1&apos;?</translation>
+ <translation>Etes-vous sûr de vouloir supprimer la contrainte «&nbsp;%1&nbsp;» ?</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1126"/>
@@ -5748,12 +5748,12 @@ Are you sure you want to create a table with blank name?</source>
<message>
<location filename="../windows/tablewindow.cpp" line="1180"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation>Export impossible, car aucun plugin d&apos;import n&apos;est chargé.</translation>
+ <translation>Export impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1193"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation>Import impossible, car aucun plugin d&apos;import n&apos;est chargé.</translation>
+ <translation>Import impossible, car aucun plugin d&rsquo;import n&rsquo;est chargé.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1225"/>
@@ -5764,13 +5764,13 @@ Are you sure you want to create a table with blank name?</source>
<location filename="../windows/tablewindow.cpp" line="1226"/>
<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>Il ya des modifications de structure non enregistrées. Vous ne pouvez pas naviguer ou modifier des données jusqu&apos;à ce que vous ailliez installer la structure de table.
-Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet de structure ?</translation>
+ <translation>Il ya des modifications de structure non enregistrées. Vous ne pouvez pas naviguer ou modifier des données jusqu&rsquo;à ce que vous ailliez installer la structure de table.
+Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet de structure ?</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Go back to structure tab</source>
- <translation>Retour à l&apos;onglet de structure</translation>
+ <translation>Retour à l&rsquo;onglet de structure</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1229"/>
@@ -5799,7 +5799,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<location filename="../windows/tablewindow.cpp" line="1382"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
- <translation>Condition partielle d&apos;index</translation>
+ <translation>Condition partielle d&rsquo;index</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1436"/>
@@ -5828,17 +5828,17 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../windows/tablewindow.cpp" line="1528"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&apos;a pas enregistré les modifications de structure et de données.</translation>
+ <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure et de données.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1530"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&apos;a pas enregistrer les données.</translation>
+ <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistrer les données.</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1532"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>La fenêtre de table &quot;%1&quot; n&apos;a pas enregistré les modifications de structure.</translation>
+ <translation>La fenêtre de table &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure.</translation>
</message>
</context>
<context>
@@ -5886,7 +5886,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../dialogs/triggerdialog.ui" line="66"/>
<source>The scope is still not fully supported by the SQLite database.</source>
- <translation>La portée n&apos;est toujours pas entièrement supportée par la base de données SQLITE.</translation>
+ <translation>La portée n&rsquo;est toujours pas entièrement supportée par la base de données SQLITE.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="73"/>
@@ -5901,7 +5901,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../dialogs/triggerdialog.ui" line="87"/>
<source>List of columns for UPDATE OF action.</source>
- <translation>Liste des colonnes pour l&apos;action UPDATE OF.</translation>
+ <translation>Liste des colonnes pour l&rsquo;action UPDATE OF.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.ui" line="97"/>
@@ -5931,7 +5931,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../dialogs/triggerdialog.cpp" line="183"/>
<source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source>
- <translation>Impossible d&apos;exécuter correctement le déclencheur %1. Ouverture invalide du dialogue de déclencheur.</translation>
+ <translation>Impossible d&rsquo;exécuter correctement le déclencheur %1. Ouverture invalide du dialogue de déclencheur.</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="353"/>
@@ -5953,7 +5953,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation>Une erreur survenue lors de l&apos;exécution de l&apos;intruction SQL: %1</translation>
+ <translation>Une erreur survenue lors de l&rsquo;exécution de l&rsquo;intruction SQL: %1</translation>
</message>
</context>
<context>
@@ -6016,7 +6016,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
</message>
<message>
<source>Could not restore window, because the view %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&apos;existe pas dans la base de données %2..</translation>
+ <translation type="vanished">Impossible de restaurer la fenêtre, car la vue %1 n&rsquo;existe pas dans la base de données %2..</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="103"/>
@@ -6073,7 +6073,7 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<location filename="../windows/viewwindow.cpp" line="295"/>
<source>Create new trigger</source>
<comment>view window</comment>
- <translation>Création d&apos;un nouveau déclencheur</translation>
+ <translation>Création d&rsquo;un nouveau déclencheur</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="296"/>
@@ -6090,22 +6090,22 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../windows/viewwindow.cpp" line="318"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&apos;a pas enregistré les modifications de structure et de données.</translation>
+ <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure et de données.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="320"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&apos;a pas enregistré les modifications de données.</translation>
+ <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de données.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="322"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation>La fenêtre de la vue &quot;%1&quot; n&apos;a pas enregistré les modifications de structure.</translation>
+ <translation>La fenêtre de la vue &quot;%1&quot; n&rsquo;a pas enregistré les modifications de structure.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="463"/>
<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&apos; erreur: %2</translation>
+ <translation>Impossible de charher les données de vue %1. Détails d&rsquo; erreur: %2</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="474"/>
@@ -6116,13 +6116,14 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&apos;onglet
<location filename="../windows/viewwindow.cpp" line="475"/>
<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>Des modifications de structure n&apos;ont pa été enregistrées. Vous ne pouvez pas naviger ou éditer des données jusqu&apos;à ce que vous installliez la structure de vue.
-Voulez-vousenregistrere la structure, ou voulez-vous retourner à l&apos;onglet de structure?</translation>
+ <translation>Des modifications de structure n&rsquo;ont pa été enregistrées.
+ Vous ne pouvez pas naviger ou éditer des données jusqu&rsquo;à ce que vous installliez la structure de vue.
+Voulez-vous enregistrer la structure, ou voulez-vous retourner à l&rsquo;onglet de structure ?</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="478"/>
<source>Go back to structure tab</source>
- <translation>Retour à l&apos;onlet de structure</translation>
+ <translation>Retour à l&rsquo;onlet de structure</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="478"/>
@@ -6133,7 +6134,7 @@ Voulez-vousenregistrere la structure, ou voulez-vous retourner à l&apos;onglet
<location filename="../windows/viewwindow.cpp" line="536"/>
<source>Could not commit view changes. Error message: %1</source>
<comment>view window</comment>
- <translation>Impossible d&apos;enregistrer les modifivations de vue. Message d&apos;erreur: %1</translation>
+ <translation>Impossible d&rsquo;enregistrer les modifivations de vue. Message d&rsquo;erreur: %1</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="614"/>
@@ -6162,7 +6163,7 @@ Voulez-vousenregistrere la structure, ou voulez-vous retourner à l&apos;onglet
<message>
<location filename="../windows/viewwindow.cpp" line="657"/>
<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&apos;ouvrir la fenêtre de vue.</translation>
+ <translation>Impossible de lancer correctement la vue %1. Impossible d&rsquo;ouvrir la fenêtre de vue.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="692"/>
@@ -6186,11 +6187,11 @@ Details: %1</translation>
<message>
<location filename="../windows/viewwindow.cpp" line="715"/>
<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&apos;une erreur interne de SQLiteStudio. SVP repportez l&apos;erreur!</translation>
+ <translation>La vue ne peut être modifiée a cause d&rsquo;une erreur interne de SQLiteStudio. SVP repportez l&rsquo;erreur!</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="741"/>
- <source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
+ <source>The view code could not be parsed properly for execution. This is a SQLiteStudio&rsquo;s bug. Please report it.</source>
<translation>La vue ne être correctement analysée avant exécution.Cest un bug SQLiteStudion. SVP reporter le.</translation>
</message>
<message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.qm
new file mode 100644
index 0000000..9dad8df
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
index 16fc700..2803575 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="it_IT">
+<TS version="2.0" language="it_IT">
<context>
<name>AboutDialog</name>
<message>
@@ -586,95 +586,110 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <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="84"/>
+ <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="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <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="87"/>
+ <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="89"/>
+ <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="90"/>
+ <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="91"/>
+ <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="92"/>
+ <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="93"/>
+ <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="94"/>
+ <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="95"/>
+ <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="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -888,557 +903,616 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
- <source>Inserting new row in data grid</source>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
- <source>Before currently selected row</source>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <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="776"/>
+ <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="779"/>
+ <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="789"/>
+ <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="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <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="817"/>
+ <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="820"/>
+ <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="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <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="846"/>
+ <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="856"/>
+ <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="859"/>
+ <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="869"/>
+ <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="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
- <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
- <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -1490,43 +1564,43 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation type="unfinished"></translation>
</message>
@@ -1678,137 +1752,137 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback 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="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<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="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1930,7 +2004,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -1976,47 +2050,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <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="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<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"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation type="unfinished"></translation>
</message>
@@ -2065,9 +2139,31 @@ Browsing other pages will be possible after the row counting is done.</source>
</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>
@@ -2082,343 +2178,349 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
- <source>Delete database</source>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
- <source>Are you sure you want to delete database &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
- <source>Error while executing VACUUM on the database %1: %2</source>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>VACUUM execution finished successfully.</source>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2453,123 +2555,128 @@ All objects from this group will be moved to parent group.</source>
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <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="427"/>
+ <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="430"/>
+ <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="433"/>
+ <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="438"/>
+ <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="448"/>
+ <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="471"/>
+ <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="474"/>
+ <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="477"/>
+ <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="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation type="unfinished"></translation>
</message>
@@ -3320,102 +3427,175 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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="65"/>
+ <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="131"/>
+ <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="185"/>
+ <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="186"/>
+ <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="187"/>
+ <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="236"/>
+ <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="247"/>
+ <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="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <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="455"/>
+ <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="467"/>
+ <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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3456,273 +3636,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
@@ -4122,127 +4302,127 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL 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="27"/>
<source>Commit changes to cell(s) contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback 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="29"/>
<source>Delete selected data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4469,6 +4649,11 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <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>
@@ -4540,106 +4725,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <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="37"/>
+ <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="38"/>
+ <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="39"/>
+ <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="40"/>
+ <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="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <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="45"/>
+ <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="46"/>
+ <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="47"/>
+ <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="48"/>
+ <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="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation type="unfinished"></translation>
@@ -4883,47 +5068,53 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -4931,36 +5122,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <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="252"/>
+ <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="255"/>
+ <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="285"/>
+ <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="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -4968,83 +5159,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5052,92 +5248,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5145,12 +5366,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5342,19 +5563,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <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="301"/>
+ <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>
@@ -5374,6 +5634,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5398,396 +5659,406 @@ but it&apos;s okay to use them anyway.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
@@ -5943,201 +6214,272 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <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="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
index 8671753..50dd7ce 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="pl_PL">
+<TS version="2.0" language="pl_PL">
<context>
<name>AboutDialog</name>
<message>
@@ -588,96 +588,111 @@
<translation>Tryb zaawansowany</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>Edytuj ograniczenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation>Usuń ograniczenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>Przenieś ograniczenie w górę</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>Przenieś ograniczenie w dół</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
<translation>Dodaj klucz główny</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
<translation>Dodaj klucz obcy</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie wartości unikalnych</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
<source>Add a check constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie sprawdzania wartości</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="93"/>
+ <location filename="../dialogs/columndialog.cpp" line="96"/>
<source>Add a not null constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie niepustych wartości</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <location filename="../dialogs/columndialog.cpp" line="97"/>
<source>Add a collate constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie zestawienia</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <location filename="../dialogs/columndialog.cpp" line="98"/>
<source>Add a default constraint</source>
<comment>column dialog</comment>
<translation>Dodaj ograniczenie wartości domyślnej</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation>Czy na pewno chcesz usunąć ograniczenie &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation>Popraw konfigurację ograniczenia.</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;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"/>
+ <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"/>
+ <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"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation>Precyzja nie jest dozwolona dla kolumn INTEGER PRIMARY KEY.</translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -891,366 +906,353 @@ ale można go używać.</translation>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation>Konfiguracja</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>Szukaj</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>Ogólne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>Skróty klawiszowe</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation>Wygląd i zachowanie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>Style</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>Czcionki</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>Kolory</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>Wtyczki</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>Formatery kodu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>Przeglądanie danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation>Edytory danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <location filename="../dialogs/configdialog.ui" line="418"/>
<source>Data browsing and editing</source>
<translation>Przeglądanie i edycja danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation>Liczba wierszy danych na stronie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<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="301"/>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
<source>Inserting new row in data grid</source>
- <translation type="unfinished"></translation>
+ <translation>Wstawianie nowego wiersza w widoku siatki danych.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Before currently selected row</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
- <translation type="unfinished"></translation>
+ <translation>Przed aktualnie wybranym wierszem</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
- <translation type="unfinished"></translation>
+ <translation>Po aktualnie wybranym wierszu.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
- <translation type="unfinished"></translation>
+ <translation>Na końcu widoku siatki danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation>Type danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation>Dostępne edytory:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation>Edytory wybrane dla tego typu danych:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation>Edycja schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<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="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation>Rozmiar historii DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation>Zapytania SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation>Liczba zapytań trzymana w historii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation>Rozmiar historii:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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ć.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<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="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation>Aktualizacje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation>Sprawdzaj aktualizacje automatycznie przy starcie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation>Sesje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<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="632"/>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<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="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation>Akcja</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation>Kombinacja klawiszy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<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="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
- <translation type="unfinished"></translation>
+ <translation>Układ kompaktowy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;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.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
+ <translation>Użyj układu kompaktowego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>Lista baz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="776"/>
+ <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>Gdy wyłączone, to kolumny będą ułożone w takiej kolejności, w jakiej wystąpiły w zapytaniu CREATE TABLE.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>Sortuj kolumny tabel alfabetycznie.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="789"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>Rozwiń listę tabel po połączeniu z bazą danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation>&lt;p&gt;Dodatkowe etykiety, to te wyświetlane obok nazw na liście baz danych (są niebieskie, chyba że skonfigurowano je inaczej). Włączenie tej opcji spowoduje wyświetlenie etykiet dla baz danych, niepoprawnych baz danych, oraz dla węzłów agregujących (grupa kolumn, grupa indeksów, grupa wyzwalaczy). Więcej etykiet jest dostępne niżej.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <location filename="../dialogs/configdialog.ui" line="271"/>
<source>Display additional labels on the list</source>
<translation>Wyświetlaj dodatkowe etykiety na liście</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <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>Dla zwykłych tabel etykiety będą pokazywać liczbę kolumn, inseksów, oraz wyzwalaczy dla tych tabel.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="289"/>
<source>Display labels for regular tables</source>
<translation>Wyświetlaj etykiety dla zwykłych tabel</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Tabele wirtualne będą oznaczone etykietą &apos;wirtualna&apos;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="302"/>
<source>Display labels for virtual tables</source>
<translation>Wyświetlaj etykiety dla tabel wirtualnych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="846"/>
+ <location filename="../dialogs/configdialog.ui" line="315"/>
<source>Expand views node when connected to a database</source>
<translation>Rozwiń listę widoków po połączeniu z bazą.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="856"/>
+ <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>Gdy ta opcja jest wyłączona, to wszystkie obiekty będą ułożone w takiej kolejności, w jakiej występują w tabeli sqlite_master (czyli w takiej, w jakiej zostały stworzone)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="328"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Sortuj obiekty (tabele, indeksy, wyzwalacze i widoki) alfabetycznie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="869"/>
+ <location filename="../dialogs/configdialog.ui" line="338"/>
<source>Display system tables and indexes on the list</source>
<translation>Wyświetlaj tabele i indeksy systemowe na liście</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation>Okna tabel</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Gdy włączone, Okna Tabel będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</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="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<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="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation>Okna Widoków</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Gdy włączone, Okna Widoków będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</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="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<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="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
- <translation type="unfinished"></translation>
+ <translation>Strefy dokowania głównego okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
- <translation type="unfinished"></translation>
+ <translation>Lewa i prawa strefa zajmują rogi</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
- <translation type="unfinished"></translation>
+ <translation>Górna i dolna strefa zajmują rogi</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation>Ukryj wtyczki wbudowane</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation>Aktualny styl:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation>Podgląd</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation>Włączone</translation>
</message>
@@ -1259,193 +1261,273 @@ ale można go używać.</translation>
<translation type="obsolete">Kolumna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation>Wyłączone</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation>Język</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="351"/>
+ <source>Database dialog window</source>
+ <translation>Okno dialogowe bazy danych</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="357"/>
+ <source>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Podczas dodawania nowej bazy danych jest ona domyślnie zaznaczana jako &quot;trwała&quot; (zapisywana w konfiguracji). Włączenie tej opcji powoduje, że każda nowa baza danych NIE będzie zaznaczana domyślnie jako &quot;trwała&quot;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation>Nie zaznaczaj bazy danych domyślnie jako &quot;trwała&quot;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Gdy ta opcja jest włączona, to pliki upuszczone z menadżera plików na listę baz danych będą automatycznie dodawane do list, pomijając standardowe okno bazy danych. Jeśli z różnych powodów automatyczny proces się nie powiedzie, to użytkownikowi ukaże się standardowe okno.&lt;/p&gt;</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>Próbuj całkowicie pomijać dialog podczas upuszczania pliku bazy na listę</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;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.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <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="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Gdy włączone, Okna Tabeli będą się otwierać na zakładce danych, zamiast na zakładce struktury.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Gdy włączone, to zakładka &quot;Dane&quot; będzie umieszczona jako pierwsza w każdym Oknie Tabeli, zamiast jako druga.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <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="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Gdy włączone, Okna Widoku będą się otwierać na zakładce danych, zamiast na zakładce struktury.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Gdy włączone, to zakładka &quot;Dane&quot; będzie umieszczona jako pierwsza w każdym Oknie Widoku, zamiast jako druga.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <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="871"/>
+ <source>Status Field</source>
+ <translation>Pole Statusu</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;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 &quot;Widok&quot;.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <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="1486"/>
<source>Active formatter plugin</source>
<translation>Aktywna wtyczka formatera</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation>Czcionka edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation>Czcionka listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation>Czcionka dodatkowych etykiety listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation>Czcionka widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation>Czcionka pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation>Kolory edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation>Tło bieżącej linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Łańcuchy znaków SQL są zamknięte pomiędzy znakami apostrofu.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation>Czcionka łańcucha znaków</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;b&gt;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: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;:nazwa_parametru&lt;/li&gt;&lt;li&gt;$nazwa_parametru&lt;/li&gt;&lt;li&gt;@nazwa_parametru&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation>Czcionka parametru wiążącego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation>Tło podświetlonych nawiasów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Wartości BLOB są wartościami binarnymi, reprezentowanymi jako liczby heksadecymalne, jak np:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation>Standardowa czcionka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation>Tło obszaru numerów linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation>Czcionka słowa kluczowego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation>Czcionka liczby</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation>Czcionka komentarza</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Poprawne obiekty to nazwy tabel, indekstów, wyzwalaczy i widoków, które istnieją w basie SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation>Czcionka poprawnych obiektów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation>Kolory widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Jakakolwiek zmiana danych będzie obrysowana tym kolorem, dopóki nie zostanie zatwierdzona do bazy danych.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation>Kolor obrysu niezatwierdzonych danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;W przypadku błędu podczas zatwierdzania zmian danych, komórka będąca przyczyną problemu zostanie obrysowana tym kolorem.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation>Kolor obrysu błędu zatwierdzania</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation>Kolor czcionki wartości NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation>Tło wiersza usuniętego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation>Kolory listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Dodatkowe etykiety to te, które mówią o wersji SQLite, liczbie obiektów w głębszych częściach drzewa, itp.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation>Czcionka dodatkowych etykiet</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation>Kolory pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation>Czcionka wiadomości informującej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation>Czcionka wiadomości ostrzegającej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation>Czcionka wiadomości błędu</translation>
</message>
@@ -1497,43 +1579,43 @@ ale można go używać.</translation>
<translation>Szczegóły wtyczki</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (wbudowany)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation>Brak wtyczek w tej kategorii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation>Dodaj nowy typ danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>Zmień nazwę wybranego typu danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>Usuń wybrany typ danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation>Pomoc w konfiguracji edytorów typów danych</translation>
</message>
@@ -1679,144 +1761,144 @@ ale można go używać.</translation>
<message>
<location filename="../dialogs/cssdebugdialog.ui" line="14"/>
<source>SQLiteStudio CSS console</source>
- <translation type="unfinished"></translation>
+ <translation>Konsola CSS SQLiteStudio</translation>
</message>
</context>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation>Filtruj dane</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation>Widok siatki</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation>Widok formularza</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation>Odśwież dane tabeli</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>Pierwsza strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Poprzednia strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Następna strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Ostatnia strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Zastosuj filtr</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<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="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<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="208"/>
+ <location filename="../dataview.cpp" line="209"/>
<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="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<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="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Filtruj po tekście</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<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="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<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="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Karty na górze</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Karty na dole</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Wstawiaj nowe wiersze nad aktualnie wybranym wierszem</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Wstawiaj nowe wiersze pod aktualnie wybranym wierszem</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<source>Place new rows at the end of the data view</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Wstawiaj nowe wiersze na końcu widoku siatki danych</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation>Wiersz: %1</translation>
</message>
@@ -1958,11 +2040,11 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<source>Name</source>
- <translation type="vanished">Nazwa</translation>
+ <translation type="obsolete">Nazwa</translation>
</message>
<message>
<source>Type</source>
- <translation type="vanished">Typ</translation>
+ <translation type="obsolete">Typ</translation>
</message>
<message>
<source>Browse for database file on local computer</source>
@@ -1975,7 +2057,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation>Plik</translation>
</message>
@@ -1991,7 +2073,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<source>Permanent</source>
- <translation type="vanished">Trwała</translation>
+ <translation type="obsolete">Trwała</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="114"/>
@@ -2001,54 +2083,54 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<source>Test database connection</source>
- <translation type="vanished">Testuj połączenie z bazą</translation>
+ <translation type="obsolete">Testuj połączenie z bazą</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation>Przeglądaj lokalny komputer w poszukiwaniu istniejącej bazy</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation>Przeglądaj</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation>Wprowadź unikalną nazwę bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <location filename="../dialogs/dbdialog.cpp" line="477"/>
<source>This name is already in use. Please enter unique name.</source>
<translation>Ta nazwa jest już w użyciu. Proszę wprowadzić unikalną nazwę.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation>Wprowadź ścieżkę do pliku bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This database is already on the list under name: %1</source>
<translation>Ta baza jest już na liście pod nazwą: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation>Wybierz typ bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation>Auto-generowana</translation>
</message>
<message>
<source>The name will be auto-generated</source>
- <translation type="vanished">Nazwa będzie generowana automatycznie</translation>
+ <translation type="obsolete">Nazwa będzie generowana automatycznie</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation>Wprowadź nazwę</translation>
</message>
@@ -2097,9 +2179,32 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
+ <location filename="../dbobjectdialogs.cpp" line="315"/>
<source>Error while dropping %1: %2</source>
<translation>Błąd podczas porzucania %1: %2</translation>
</message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="282"/>
+ <source>Delete objects</source>
+ <translation>Usuń obiekty</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="283"/>
+ <source>Are you sure you want to delete following objects:
+%1</source>
+ <translation>Czy na pewno chcesz usunąć następujące obiekty:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="290"/>
+ <source>Cannot start transaction. Details: %1</source>
+ <translation>Nie można wystartować transakcji. Szczegóły: %1</translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="327"/>
+ <source>Cannot commit transaction. Details: %1</source>
+ <translation>Nie można zatwierdzić transakcji. Szczegóły: %1</translation>
+ </message>
</context>
<context>
<name>DbTree</name>
@@ -2114,131 +2219,158 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>Wklej</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>Zaznacz wszystko</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation>Utwórz grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation>Usuń grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation>Zmień nazwę grupy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation>Dodaj bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>Edytuj bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation>Usuń bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation>Połącz z bazą danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>Rozłącz się z bazą danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>Importuj</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>Eksportuj bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>Konwertuj typ bazy danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation>Odkurz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation>Sprawdź spójność</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>Utwórz tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation>Edytuj tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation>Generuj zapytanie dla tabeli</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<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="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation>Czy napewno chcesz wycofać bazę &apos;%1&apos; z listy?</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1136"/>
+ <source>Remove database</source>
+ <translation>Wycofaj bazę</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
+ <translation>Odkurz (%1)</translation>
+ </message>
+ <message>
<source>Drop the table</source>
<translation type="obsolete">Porzuć tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation>Eksportuj tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation>Importuj do tabeli</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>Zaludnij tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>Utwórz podobną tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>Utwórz indeks</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation>Edytuj indeks</translation>
</message>
@@ -2247,12 +2379,12 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="obsolete">Porzuć indeks</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>Utwórz wyzwalacz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation>Edytuj wyzwalacz</translation>
</message>
@@ -2261,12 +2393,12 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="obsolete">Porzuć wyzwalacz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>Utwórz widok</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation>Edytuj widok</translation>
</message>
@@ -2275,199 +2407,195 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="obsolete">Porzuć widok</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>Dodaj kolumnę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation>Edytuj kolumnę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation>Usuń kolumnę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>Usuń wybrane elementy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>Wyczyść filtr</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation>Odśwież schematy wszystkich baz danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation>Odśwież schemat wybranej bazy danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation>Usuń tabelę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation>Wyzeruj sekwencję autoinkrementacji</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation>Usuń indeks</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation>Usuń wyzwalacz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation>Usuń widok</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
- <translation type="unfinished"></translation>
+ <translation>Wymaż dane tabeli</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>Baza danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>Grupowanie</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation>Utwórz grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation>Nazwa grupy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation>Usuń grupę</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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?
Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Delete database</source>
- <translation>Usuń bazę danych</translation>
+ <translation type="obsolete">Usuń bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Czy na pewno chcesz usunąć bazę danych &apos;%1&apos;?</translation>
+ <translation type="obsolete">Czy na pewno chcesz usunąć bazę danych &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
<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="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
<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="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Błąd podczas wykonywania VACUUM na bazie danych %1: %2</translation>
+ <translation type="obsolete">Błąd podczas wykonywania VACUUM na bazie danych %1: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>Wykonanie VACUUM przebiegło pomyślnie.</translation>
+ <translation type="obsolete">Wykonanie VACUUM przebiegło pomyślnie.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation>Sprawdzanie spójności (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation>Wyzeruj autoinkrementację</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Czy na pewno chcesz wyzerować wartość autoinkrementacji dla tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Wystąpił błąd podczas próby wyzerowania wartości autoinkrementacji dla tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Czy na pewno chcesz usunąć wszystkie dane z tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Wystąpił błąd podczas próby usunięcia danych z tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>Wszystkie dane z tabeli &apos;%1&apos; zostały usunięte.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<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="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<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="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Czy na pewno chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation>Usuń obiekty</translation>
</message>
@@ -2502,25 +2630,25 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
<translation>Baza danych: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
<translation>Wersja:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
<translation>Rozmiar pliku:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
<translation>Kodowanie:</translation>
@@ -2528,104 +2656,109 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans
<message>
<source>Error details:</source>
<comment>dbtree tooltip</comment>
- <translation type="vanished">Szczegóły błędu:</translation>
+ <translation type="obsolete">Szczegóły błędu:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="439"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Błąd:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
<translation>Tablela: : %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Kolumny (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Indeksy (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Wyzwalacze (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation>Przenieś</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation>Również dane</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation>Również indeksy</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation>Również wyzwalacze</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>Przerwij</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation>Nie udało się automatycznie dodać upuszczonego pliku bazy &apos;%1&apos;. Niezbędna ręczna ingerencja.</translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation>Tabele powiązane</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation>Konflikt nazwy</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation>Następująy obiekt istnieje już w docelowej bazie danych.
Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przerwać operację.</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation>Konwersja zapytań SQL</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation>Czy chcesz zignorować te błędy i kontynuować?</translation>
</message>
@@ -3382,96 +3515,126 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Indeks</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation>Na tabeli:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation>Nazwa indeksu:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation>Warunek indeksu częściowego:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>Indeks unikalny</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation>Kolumna</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation>Zestawienie</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>Sortowanie</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <location filename="../dialogs/indexdialog.ui" line="98"/>
+ <source>Delete selected indexed expression</source>
+ <translation>Usuń wybrane wyrażenie indeksowane.</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>Przenosi wybraną indeksowaną kolumnę wyżej w kolejności, czyniąc ją ważniejszą w indeksie.</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>Przenosi wybraną indeksowaną kolumnę niżej w kolejności, czyniąc ją mniej ważną w indeksie.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="149"/>
+ <source>Edit selected indexed expression</source>
+ <translation>Edytuj wybrane wyrażenie indeksowane</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="169"/>
+ <source>Add indexed expression</source>
+ <translation>Dodaj wyrażenie indeksowane</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="180"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <location filename="../dialogs/indexdialog.cpp" line="66"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
<translation>Próbowano otworzyć okno indeksu dla zamkniętej lub nieistniejącej bazy.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="131"/>
+ <location filename="../dialogs/indexdialog.cpp" line="149"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
<translation>Nie udało się przetworzyć poprawnie indeksu %1. Nie można otworzyć okna indeksu.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="185"/>
+ <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>Unikalny indeks nie może zawierać wyrażeń indeksowanych. Albo usuń wyrażenia z poniższej listy, albo odznacz tę opcję.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="207"/>
<source>Pick the table for the index.</source>
<translation>Wybierz tabelę dla indeksu.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>Zaznacz przynajmniej jedną kolumnę.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <location filename="../dialogs/indexdialog.cpp" line="209"/>
<source>Enter a valid condition.</source>
<translation>Wprowadź poprawny warunek.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <location filename="../dialogs/indexdialog.cpp" line="276"/>
<source>default</source>
<comment>index dialog</comment>
<translation>domyślne</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
<translation>Kierunek sortowania</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Błąd</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="455"/>
+ <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>Nie można utworzyć indeksu, ponieważ wartości w wybranych kolumnach nie są unikalne. Czy chcesz wykonać zapytanie SELECT, aby zobaczyć wartości stwarzające problem?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>Wystąpił błąd podczas wykonywania zapytań SQL:
@@ -3479,6 +3642,49 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
</message>
</context>
<context>
+ <name>IndexExprColumnDialog</name>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.ui" line="14"/>
+ <source>Indexed expression</source>
+ <translation>Wyrażenie indeksowane</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.ui" line="20"/>
+ <source>Expression to index</source>
+ <translation>Wyrażenie do indeksowania</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="60"/>
+ <source>This expression is already indexed by the index.</source>
+ <translation>To wyrażenie jest już indeksowane przez indeks.</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>Kolumna powinna być indeksowana bezpośrednio, nie przez wyrażenie. Albo rozszerz to wyrażenie, aby zwierało coś więcej niż tylko nazwę kolumny, albo przerwij i wybierz tą kolumnę bezpośrednio w oknie dialogowym indeksu.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="76"/>
+ <source>Column &apos;%1&apos; does not belong to the table covered by this index. Indexed expressions can refer only to columns from the indexed table.</source>
+ <translation>Kolumna &apos;%1&apos; nie należy do tabeli objętej tym indeksem. Wyrażenia indeksowane mogą odnosić się jedynie do kolumn z indeksowanej tabeli.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="84"/>
+ <source>It&apos;s forbidden to use &apos;SELECT&apos; statements in indexed expressions.</source>
+ <translation>Nie można używać zapytań &apos;SELECT&apos; w wyrażeniach indeksowanych.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="105"/>
+ <source>Enter an indexed expression.</source>
+ <translation>Wprowadź wyrażenie indeksowane.</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexexprcolumndialog.cpp" line="119"/>
+ <source>Invalid expression.</source>
+ <translation>Niepoprawne wyrażenie.</translation>
+ </message>
+</context>
+<context>
<name>LanguageDialog</name>
<message>
<location filename="../dialogs/languagedialog.ui" line="14"/>
@@ -3519,273 +3725,273 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Pasek narzędzi widoku</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation>Kontrolki konfiguracji</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation>Silniki podświetlania składni</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation>Edytory danych</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation>Uruchomiono tryb debugowania. Wciśnij %1 lub wybierz menu &apos;Pomoc / Otwórz konsolę debugowania&apos; aby otworzyć konsolę debugowania.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation>Otwórz edytor SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation>Otwórz historię DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation>Otwórz edytor funkcji SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation>Otwórz edytor zestawień</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>Importuj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>Eksportuj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation>Otwórz okno konfiguracji</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation>Ustaw okna w płytki</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation>Ustaw okno poziomo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation>Ustaw okna pionowo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>Ustaw okna caskadowo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>Następne okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>Poprzednie okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation>Ukryj pole statusu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation>Zamknij wybrane okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation>Zamknij wszystkie okna, oprócz wybranego</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation>Zamknij wszystkie okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation>Przywróć ostatnio zamknięte okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation>Zmień nazwę wybranego okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>Otwórz Konsolę Debugowania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>Otwórz konsolę CSS</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation>Zgłoś błąd</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation>Zgłoś pomysł</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>O programie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>Licencje</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation>Otwórz stronę domową</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation>Otwórz stronę forum</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation>Podręcznik Użytkownika</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation>Dokumentacja SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation>Historia zgłoszeń</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation>Sprawdź aktualizacje</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Baza danych</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Struktura</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>Widok</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Lista okien</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Narzędzia</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<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="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<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="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<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="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>Zmień nazwę okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation>Wprowadź nową nazwę dla okna:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Nowe aktualizacje są dostępne: &lt;a href=&quot;%1&quot;&gt;Kliknij aby poznać szczegóły&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;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="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation>Nie udało się dodać bazy danych %1 do listy.</translation>
</message>
@@ -4091,7 +4297,7 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<message>
<location filename="../dialogs/populatedialog.cpp" line="54"/>
<source>Abort</source>
- <translation type="unfinished">Przerwij</translation>
+ <translation>Przerwij</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="161"/>
@@ -4189,127 +4395,127 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>nazwa zestawienia: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation>Widok siatki danych</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation>Skopiuj zawartość komórek do schowka.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation>Wklej zawartość komórkek ze schowka.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<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="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<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="26"/>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
<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="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<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="28"/>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Delete selected data row</source>
<translation>Usuń wybrane wiersze danych</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation>Wstaw nowy wiersz danych</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<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="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation>Liczba dostępnych stron: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation>Liczba załadowanych wierszy: %1</translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation>Widok danych (zarówno siatki i formularza)</translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation>Odśwież dane</translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation>Przełącz do widoku siatki danych</translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<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="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation>Lista baz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation>Usuń zaznaczony element</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation>Wyczyść zawartość filtra</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation>Odśwież schemat</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation>Odśwież wszystkie schematy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation>Dodaj bazę danych</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation>Zaznacz wszystkie elementy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation>Kopiuj zaznaczone elementy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4423,7 +4629,7 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<message>
<location filename="../mainwindow.h" line="50"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>Otwórz konsolę CSS</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="12"/>
@@ -4536,6 +4742,11 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Skopiuj wybrany blok tekstu i wklej go powyżej</translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <source>Toggle comment</source>
+ <translation>Przełącz komentarz</translation>
+ </message>
+ <message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
<translation>Wszystkie bazy danych SQLite</translation>
@@ -4607,106 +4818,106 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Przenieś aktywność klawiatury do edytora SQL powyżej</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation>Okno tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation>Odśwież strukturę tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation>Dodaj nową kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation>Edytuj wybraną kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation>Usuń wybraną kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation>Eksportuj dane tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <location filename="../windows/tablewindow.h" line="37"/>
<source>Import data to the table</source>
<translation>Importuj dane do tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="37"/>
+ <location filename="../windows/tablewindow.h" line="38"/>
<source>Add new table constraint</source>
<translation>Dodaj nowe ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="38"/>
+ <location filename="../windows/tablewindow.h" line="39"/>
<source>Edit selected table constraint</source>
<translation>Edytuj wybrane ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="39"/>
+ <location filename="../windows/tablewindow.h" line="40"/>
<source>Delete selected table constraint</source>
<translation>Usuń wybrane ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="40"/>
+ <location filename="../windows/tablewindow.h" line="41"/>
<source>Refresh table index list</source>
<translation>Odśwież listę indeksów tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation>Dodaj nowy indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation>Edytuj wybrany indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation>Usuń wybrany indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <location filename="../windows/tablewindow.h" line="45"/>
<source>Refresh table trigger list</source>
<translation>Odśwież listę wyzwalaczy tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="45"/>
+ <location filename="../windows/tablewindow.h" line="46"/>
<location filename="../windows/viewwindow.h" line="25"/>
<source>Add new trigger</source>
<translation>Dodaj nowy wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="46"/>
+ <location filename="../windows/tablewindow.h" line="47"/>
<location filename="../windows/viewwindow.h" line="26"/>
<source>Edit selected trigger</source>
<translation>Edytuj wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="47"/>
+ <location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="27"/>
<source>Delete selected trigger</source>
<translation>Usuń wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="48"/>
+ <location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
<translation>Przejdź do następnej karty</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation>Przejdź do poprzedniej karty</translation>
@@ -4890,7 +5101,7 @@ znajdź następny</translation>
<location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Wybierz plik do zapisu SQL</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="132"/>
@@ -4953,47 +5164,53 @@ znajdź następny</translation>
<translation>Zastąp</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation>Przełącz komentarz</translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Zapisano zawartość SQL do pliku: %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation>Zapisz do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do zapisu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Skrypty SQL (*.sql);;Wszystkie pliki (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation>Otwórz plik</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do odczytu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<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>
@@ -5001,36 +5218,36 @@ znajdź następny</translation>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
<translation>Kolumna:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
<translation>Typ danych:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
<translation>Tabela:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
<translation>Ograniczenie:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation>Tej komórki nie można edytować, ponieważ: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Nie można załadować danych dla komórki, która odwołuje się do zamkniętej już bazy danych.</translation>
</message>
@@ -5038,68 +5255,73 @@ znajdź następny</translation>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation>Nie można edytować tej komórki. Szczegóły: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation>Wiersz jest zaznaczony do usunięcia.</translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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>
</context>
<context>
<name>SqlQueryModel</name>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation>Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited 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="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation>Wystąpił błąd podczas zatwierdzania transakcji: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<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="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation>Wystąpił błąd podczas zatwierdzania danych: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Błąd podczas wykonywania zapytania SQL na bazie &apos;%1&apos;: %2</translation>
</message>
@@ -5108,17 +5330,17 @@ znajdź następny</translation>
<translation type="obsolete">Błąd podczas wykonywania zapytania SQL: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<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="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation>Wstaw wiele wierszy</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation>Liczba wierszy do wstawienia:</translation>
</message>
@@ -5126,92 +5348,117 @@ znajdź następny</translation>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation>Idź do powiązanego wiersza w...</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation>Kopiuj jako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation>Wklej</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation>Wklej jako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation>Ustaw wartości NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation>Wymaż wartości</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation>Edytuj wartość w edytorze</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation>Zatwierdź</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation>Wycofaj</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation>Zatwierdź zaznaczone komórki</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation>Wycofaj zaznaczone komórki</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation>Zdefiniuj kolumny po których sortować</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation>Wycofaj własne sortowanie</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation>Wstaw wiersz</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation>Wstaw wiele wierszy</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation>Usuń zaznaczony wiersz</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation>Generuj zapytanie dla wybranych komórek</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<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="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation>Idź do powiązanego wiersza w tabeli &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation>tabela &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation>Powiązany wiersz (%1)</translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation>Edytuj wartość</translation>
</message>
@@ -5219,12 +5466,12 @@ znajdź następny</translation>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation>Błąd podczas zatwierdzania nowego wiersza: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Błąd podczas usuwania wiersza z tabeli %1: %2</translation>
</message>
@@ -5417,19 +5664,61 @@ ale można ich używać.</translation>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Name</source>
<comment>table structure columns</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="303"/>
<source>Data type</source>
<comment>table structure columns</comment>
<translation>Typ danych</translation>
</message>
<message>
+ <location filename="../windows/tablestructuremodel.cpp" line="305"/>
+ <source>Primary
+Key</source>
+ <comment>table structure columns</comment>
+ <translation>Klucz
+Główny</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="307"/>
+ <source>Foreign
+Key</source>
+ <comment>table structure columns</comment>
+ <translation>Klucz
+Obcy</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="309"/>
+ <source>Unique</source>
+ <comment>table structure columns</comment>
+ <translation>Wartości
+unikalne</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="311"/>
+ <source>Check</source>
+ <comment>table structure columns</comment>
+ <translation>Warunek</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="313"/>
+ <source>Not
+NULL</source>
+ <comment>table structure columns</comment>
+ <translation>Niepuste</translation>
+ </message>
+ <message>
<location filename="../windows/tablestructuremodel.cpp" line="315"/>
+ <source>Collate</source>
+ <comment>table structure columns</comment>
+ <translation>Zestawienie</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="317"/>
<source>Default value</source>
<comment>table structure columns</comment>
<translation>Domyślna wartość</translation>
@@ -5449,6 +5738,7 @@ ale można ich używać.</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation>Dane</translation>
</message>
@@ -5473,194 +5763,194 @@ ale można ich używać.</translation>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Eksportuj tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Importuj do tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Zaludnij tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Odśwież strukturę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Zatwierdź zmiany w strukturze</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Wycofaj zmiany w strukturze</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Dodaj kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Edytuj kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Usuń kolumnę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Przesuń kolumnę w górę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Przesuń kolumnę w dół</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Utwórz podobną tabelę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Wyzeruj wartość autoinkrementacji</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Edytuj ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Usuń ograniczenie tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Przesuń ograniczenie tabeli w górę</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Przesuń ograniczenie tabeli w dół</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Dodaj klucz główny tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Dodaj klucz obcy tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie unikalnych wartości tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation>Dodaj ograniczenie warunkiem tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Odśwież listę indeksów</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Utwórz indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Edytuj indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Usuń indeks</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Odśwież listę wyzwalaczy</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Utwórz wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Edytuj wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Usuń wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Czy na pewno chcesz usunąć kolumnę &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
@@ -5668,212 +5958,222 @@ Would you like to proceed?</source>
Czy chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation>Modyfikacja tabeli</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation>Nie udało się załadować danych dla tabeli %1. Szczegóły błędu: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation>Nie udało się przetworzyć poprawnie tabeli %1. Nie można otworzyć okna tabeli.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna %1, ponieważ nie ma bazy danych lub tabeli zachowanej w sesji dla tego okna.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna %1, ponieważ nie ma bazy danych lub tabeli zachowanej w sesji dla tego okna.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie udało się przywrócić okna &apos;%1&apos;, ponieważ nie udało się ustalić bazy danych %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna &apos;%1&apos;, ponieważ tabela %2 już nie jestnieje w bazie danych %3.</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be resolved.</source>
- <translation type="vanished">Nie można przywrócić okna, ponieważ nie znaleziono bazy danych %1.</translation>
+ <translation type="obsolete">Nie można przywrócić okna, ponieważ nie znaleziono bazy danych %1.</translation>
</message>
<message>
<source>Could not restore window, because the table %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Nie można przywrócić okna, ponieważ tabela %1 już nie jestnieje w bazie danych %2.</translation>
+ <translation type="obsolete">Nie można przywrócić okna, ponieważ tabela %1 już nie jestnieje w bazie danych %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation>Nowa tabela %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla tabeli &apos;%1&apos; (nazwanej wcześniej &apos;%2&apos;).</translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation>Nie udało się zatwierdzić struktury tabeli. Treść błędu: %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation>Wyzeruj autoinkrementację</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Czy na pewno chcesz wyzerować wartość autoinkrementacji dla tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Wystąpił błąd podczas próby wyzerowania wartości autoinkrementacji dla tabeli &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>Wartość autoinkrementacji dla tabeli &apos;%1&apos; została pomyślnie wyzerowana.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation>Pusta nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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>Pusta nazwa dla tabeli jest dozwolona w SQLite, ale nie jest zalecana.
Czy na pewno chcesz utworzyć tabelę o pustej nazwie?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation>Nie można utworzyć tabeli bez przynajmniej jednej kolumny.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation>Nie można utworzyć tabeli %1, jeśli nie ma zdefiniowanego klucza głównego. Albo udznacz %2, albo zdefiniuj klucz główny.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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>Nie można użyć autoinkrementacji dla klucza głównego, kiedy klauzula %1 jest użyta. Albo odnacz %2, albo autonkrementację w kluczu głównym.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Czy na pewno chcesz usunąć ograniczenie tabeli &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Usuń ograniczenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<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/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<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="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation>Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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>Zmiany w strukturze nie zostały zatwierdzone. Nie można przeglądać, ani edytować danych, dopóki struktura tabeli nie zostanie ustalona.
Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktury?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation>Wróć do karty struktury</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation>Zatwierdź modyfikacje i przeglądaj dane.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Wartości unikalne</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Kolumny</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation>Warunek indeksu częściowego:</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Zdarzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Warunek</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone dane.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>Okno tabeli &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
</message>
@@ -6030,209 +6330,280 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur
<translation>Nazwa widoku:</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation>Nazwy kolumn wyjściowych</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation>Dane</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation>Wyzwalacze</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be resolved.</source>
- <translation type="vanished">Nie można przywrócić okna, ponieważ nie znaleziono bazy danych %1.</translation>
+ <translation type="obsolete">Nie można przywrócić okna, ponieważ nie znaleziono bazy danych %1.</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be open.</source>
- <translation type="vanished">Nie można przywrócić okna, ponieważ nie udało się otworzyć bazy danych %1.</translation>
+ <translation type="obsolete">Nie można przywrócić okna, ponieważ nie udało się otworzyć bazy danych %1.</translation>
</message>
<message>
<source>Could not restore window, because the view %1 doesn&apos;t exist in the database %2.</source>
- <translation type="vanished">Nie można przywrócić okna, ponieważ widok %1 już nie jestnieje w bazie danych %2.</translation>
+ <translation type="obsolete">Nie można przywrócić okna, ponieważ widok %1 już nie jestnieje w bazie danych %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, because no database or view was stored in session for this window.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna %1, ponieważ nie ma bazy danych lub tabeli zachowanej w sesji dla tego okna.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie udało się przywrócić okna &apos;%1&apos;, ponieważ nie udało się ustalić bazy danych %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna &apos;%1&apos;, ponieważ nie można było otworzyć bazy danych %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
- <translation type="unfinished"></translation>
+ <translation>Nie można przywrócić okna &apos;%1&apos;, ponieważ widok %2 już nie jestnieje w bazie danych %3.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <location filename="../windows/viewwindow.cpp" line="162"/>
+ <location filename="../windows/viewwindow.cpp" line="164"/>
<source>New view %1</source>
<translation>Nowy widok %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Odśwież widok</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Zatwierdź zmiany w widoku</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Wycofaj zmiany w widoku</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation>Jawne nazwy kolumn</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation>Dodaj kolumnę</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation>Edytuj kolumnę</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation>Usuń kolumnę</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation>Przesuń kolumnę w górę</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation>Przesuń kolumnę w dół</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Odśwież listę wyzwalaczy</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Utwórz nowy wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Edytuj wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Usuń wybrany wyzwalacz</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury i danych.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone dane.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>Okno widoku &quot;%1&quot; ma niezatwierdzone modyfikacje struktury.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<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>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation>Niezatwierdzone dane</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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>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="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation>Wróć do karty struktury</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation>Zatwierdź modyfikacje i przeglądaj dane.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation>Pomyślnie zatwierdzono zmiany dla widoku &apos;%1&apos; (nazwanego wcześniej &apos;%2&apos;).</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation>Nadpisz kolumny</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Nazwa</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation>Zamiast</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Warunek</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Szczegóły</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation>Pusta nazwa</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;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="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
@@ -6240,7 +6611,7 @@ Would you like to proceed?</source>
Czy chcesz kontynuować?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<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 9d1c8bb..0130532 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="pt_BR">
+<TS version="2.0" language="pt_BR">
<context>
<name>AboutDialog</name>
<message>
@@ -586,95 +586,110 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <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="84"/>
+ <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="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <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="87"/>
+ <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="89"/>
+ <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="90"/>
+ <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="91"/>
+ <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="92"/>
+ <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="93"/>
+ <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="94"/>
+ <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="95"/>
+ <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="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -888,557 +903,616 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
- <source>Inserting new row in data grid</source>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
- <source>Before currently selected row</source>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <source>Show column and row details tooltip in data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Before currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <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="776"/>
+ <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="779"/>
+ <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="789"/>
+ <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="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <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="817"/>
+ <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="820"/>
+ <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="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <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="846"/>
+ <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="856"/>
+ <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="859"/>
+ <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="869"/>
+ <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="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
- <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
- <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -1490,43 +1564,43 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation type="unfinished"></translation>
</message>
@@ -1678,137 +1752,137 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback 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="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<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="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1955,7 +2029,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -1976,47 +2050,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <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="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<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"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation type="unfinished"></translation>
</message>
@@ -2065,9 +2139,31 @@ Browsing other pages will be possible after the row counting is done.</source>
</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>
@@ -2082,343 +2178,349 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
- <source>Delete database</source>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
- <source>Are you sure you want to delete database &apos;%1&apos;?</source>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
- <source>Cannot import, because no import plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1136"/>
+ <source>Remove database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
- <source>Cannot export, because no export plugin is loaded.</source>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
- <source>Error while executing VACUUM on the database %1: %2</source>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
- <source>VACUUM execution finished successfully.</source>
+ <source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<source>Following databases will be removed from list: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation type="unfinished"></translation>
</message>
@@ -2453,123 +2555,128 @@ All objects from this group will be moved to parent group.</source>
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <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="427"/>
+ <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="430"/>
+ <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="433"/>
+ <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="438"/>
+ <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="448"/>
+ <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="471"/>
+ <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="474"/>
+ <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="477"/>
+ <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="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation type="unfinished"></translation>
</message>
@@ -3320,102 +3427,175 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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="65"/>
+ <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="131"/>
+ <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="185"/>
+ <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="186"/>
+ <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="187"/>
+ <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="236"/>
+ <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="247"/>
+ <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="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <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="455"/>
+ <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="467"/>
+ <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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3456,273 +3636,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
@@ -4122,127 +4302,127 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL 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="27"/>
<source>Commit changes to cell(s) contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback 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="29"/>
<source>Delete selected data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4469,6 +4649,11 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <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>
@@ -4540,106 +4725,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <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="37"/>
+ <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="38"/>
+ <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="39"/>
+ <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="40"/>
+ <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="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <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="45"/>
+ <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="46"/>
+ <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="47"/>
+ <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="48"/>
+ <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="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation type="unfinished"></translation>
@@ -4883,47 +5068,53 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -4931,36 +5122,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <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="252"/>
+ <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="255"/>
+ <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="285"/>
+ <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="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -4968,83 +5159,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5052,92 +5248,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation type="unfinished"></translation>
</message>
@@ -5145,12 +5366,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -5342,19 +5563,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <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="301"/>
+ <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>
@@ -5374,6 +5634,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
@@ -5398,396 +5659,406 @@ but it&apos;s okay to use them anyway.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
@@ -5943,201 +6214,272 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <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="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
index 9e3d103..e07a8d5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
index 4f0ea2c..b2eba15 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
@@ -588,95 +588,110 @@
<translation>Расширенный режим</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>Добавить ограничение</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>Редактировать ограничение</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>Переместить ограничение вверх</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>Переместить ограничение вниз</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
<translation>Добавить первичный ключ</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
<translation>Добавить внешний ключ</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>Добавить ограничение на уникальность</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
<source>Add a check constraint</source>
<comment>column dialog</comment>
<translation>Добавить проверочное ограничение</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="93"/>
+ <location filename="../dialogs/columndialog.cpp" line="96"/>
<source>Add a not null constraint</source>
<comment>column dialog</comment>
<translation>Добавить ограничение на не null</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <location filename="../dialogs/columndialog.cpp" line="97"/>
<source>Add a collate constraint</source>
<comment>column dialog</comment>
<translation>Добавить ограничение на сравнение</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <location filename="../dialogs/columndialog.cpp" line="98"/>
<source>Add a default constraint</source>
<comment>column dialog</comment>
<translation>Добавить ограничение на значение по умочанию</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation>Вы действительно хотите удалить ограничение &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation>Исправьте конфигурацию ограничения.</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation>Это ограничение официально не поддерживается SQLite 2, но его использование допустимо.</translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -890,557 +905,632 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation>Конфигурация</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>Общие</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>Горячие клавиши</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation>Внешний вид</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>Стиль</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>Шрифты</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>Цвета</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>Модули</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>Средства форматирования кода</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>Просмотр данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation>Редакторы данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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>Просмотр и редактирование данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation>Количество строк данных на странице:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;При загрузке даных в табличный вид ширина столбцов автоматически подстраивается. Этот параметр ограничивает начальную ширину для подстройки, при этом пользователь может вручную изменить ширину столбца сверх данного лимита.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>Ограничить начальную ширину столбца данных (в пикселях):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <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>Inserting new row in data grid</source>
<translation>Вставка новой строки в таблице данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Before currently selected row</source>
<translation>Перед текущей выделенной строкой</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
<source>General.InsertRowPlacement</source>
- <translation>General.InsertRowPlacement</translation>
+ <translation type="obsolete">General.InsertRowPlacement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
<translation>После текущей выделенной строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
<translation>В конец области просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation>Типы данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation>Доступные редакторы:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation>Выбранные редакторы для этого типа данных:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation>Редактирование схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<source>Number of DDL changes kept in history.</source>
<translation>Количество сохраняемых в истории изменений DDL.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation>Размер истории DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation>SQL запросы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation>Количество сохраняемых в истории запросов.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation>Размер истории:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;Если в окне редактора SQL введено более одного запроса, то (если данная опция активирована) будет выполнен лишь один запрос - тот, который находится под текстовым курсором. В противном случае будут исполнены все запросы. Вы можете ограничить выполняемые запросы, выделив их перед вызовом выполнения.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
<translation>Выполнять только запрос под курсором</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation>Обновления</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation>Автоматически проверять обновления при запуске</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation>Сессия</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Восстановить предыдущую сессию (активные MDI окна) после запуска</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Фильтруйте горячие клавиши по имени или комбинации клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation>Действие</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation>Комбинация клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Для смены языка потребуется перезапустить приложение.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation>Компактный режим</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;В компактном режиме все поля и отступы в интерфейсе минимизированы для отображения большего количества данных. Интерфейс станет чуть менее эстетичным, однако это позволит уместить больше данных на экране.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation>Включить компактный режим</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
- <translation>General.CompactLayout</translation>
+ <translation type="obsolete">General.CompactLayout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>Список баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="776"/>
+ <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>Если опция деактивирована, столбцы будут отсортированы в том порядке, в котором они были указаны в конструкции CREATE TABLE.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>Сортировать столбцы таблицы в алфавитном порядке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="789"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>Развернуть список таблиц после подключения к базе данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation>&lt;p&gt;Дополнительные метки находятся справа от имён в списке баз данных (они отображаются синим цветом, если не выбран иной). При активации этой опции будут отображены метки у баз данных, некорректных баз данных и у групповых узлов (группа столбцов, группа индексов, группа триггеров). Для отображения дополнительных меток воспользуйтесь опциями ниже.&lt;p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <location filename="../dialogs/configdialog.ui" line="271"/>
<source>Display additional labels on the list</source>
<translation>Отображать дополнительные метки в списке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="817"/>
+ <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>Для обычных таблиц метки будут показывать количество столбцов, индексов и триггеров у каждой таблицы.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="820"/>
+ <location filename="../dialogs/configdialog.ui" line="289"/>
<source>Display labels for regular tables</source>
<translation>Отображать метки у обычных таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Виртуальные таблицы будут помечены как &apos;вирутальные&apos;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <location filename="../dialogs/configdialog.ui" line="302"/>
<source>Display labels for virtual tables</source>
<translation>Отображать метки у виртуальных таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="846"/>
+ <location filename="../dialogs/configdialog.ui" line="315"/>
<source>Expand views node when connected to a database</source>
<translation>Развернуть список представлений после подключения к базе данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="856"/>
+ <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>Если опция деактивирована, объекты будут отсортированы в том порядке, в котором они указаны в таблице sqlite_master (т.е. в порядке создания)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="328"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Сортировать объекты (таблицы, индексы, триггеры и представления) в алфавитном порядке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="869"/>
+ <location filename="../dialogs/configdialog.ui" line="338"/>
<source>Display system tables and indexes on the list</source>
<translation>Отображать в списке системные таблицы и индексы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation>Окна таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Если опция активирована, окно таблицы будет открыто на вкладке данных вместо вкладки структуры.</translation>
+ <translation type="obsolete">Если опция активирована, окно таблицы будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Открывать окна таблиц на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation>Окна представлений</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Если опция активирована, окно представления будет открыто на вкладке данных вместо вкладки структуры.</translation>
+ <translation type="obsolete">Если опция активирована, окно представления будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation>Открывать окна представлений на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation>Области прикрепления вокруг главного окна</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation>Углы занимают правая и левая области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation>Углы занимают верхняя и нижняя области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation>Скрыть встроенные модули</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation>Текущий стиль:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation>Предпросмотр</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation>Активно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation>Неактивно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation>Активный модуль форматирования</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation>Шрифт редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation>Шрифт списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation>Шрифт дополнительных меток в списке баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation>Шрифт просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation>Шрифт окна статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation>Цвета редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation>Фон текущей строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Строки SQL обрамляются в одинарные кавычки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation>Цвет строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Подстановочные параметры предназначены для значений, которые будут в дальнейшем указаны пользователем. Они определяются одним из следующих способов:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:имя_параметра&lt;/li&gt;&lt;li&gt;$имя_параметра&lt;/li&gt;&lt;li&gt;@имя_параметра&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation>Цвет подстановочных параметров</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation>Фон подсвечиваемых скобок</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Данные типа BLOB — это бинарные данные, представляемые в виде шестнадцатеричных чисел, например:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation>Цвет данных типа BLOB</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation>Стандартный цвет</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation>Фон области нумерации строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation>Цвет ключевого слова</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation>Цвет числа</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation>Цвет комментария</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Распознаваемыми объектами являются имена талиц, индексов, триггеров и представлений, существующих в базе данных SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation>Цвет распознанных объектов</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation>Цвета в окне просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Все изменения данных будут обрамлены этим цветом, пока не будут записаны в базу данных.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation>Цвет обрамления неподтверждённых изменений</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation>Цвет обрамления ошибочных ячеек</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation>Цвет значений NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation>Фон удалённых строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation>Цвета списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Дополнительные метки содержат информацию о версии SQLite, о количестве объектов в глубине дерева и т.д.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation>Цвет дополнительных меток</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation>Цвета в окне Статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation>Цвет информационного сообщения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation>Цвет предупреждения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation>Цвет ошибки</translation>
</message>
@@ -1492,43 +1582,43 @@ but it&apos;s okay to use it.</source>
<translation>Сведения о модуле</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (встроенный)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>Сведения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation>В этой категории модулей нет.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation>Добавить новый тип данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>Переименовать выбранный тип данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>Удалить выбранный тип данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation>Справка по настройке редакторов типов данных</translation>
</message>
@@ -1680,138 +1770,138 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation>Отфильтровать данные</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation>Табличный вид</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation>Форма</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation>Обновить данные таблицы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>Первая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Предыдущая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Следующая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Последняя страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Применить фильтр</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation>Подтвердить изменения для выбранных ячеек</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation>Откатить изменения для выбранных ячеек</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="208"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation>Показать результаты в виде таблицы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation>Показать результаты в виде формы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Текстовый фильтр</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation>Фильтр по регулярному выражению</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Фильтр по выражению SQL</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Вкладки сверху</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Вкладки снизу</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation>Поместить новые строки перед выделенной строкой</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation>Поместить новые строки после выделенной строки</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<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="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation>Строка: %1</translation>
</message>
@@ -1953,11 +2043,11 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<source>Name</source>
- <translation>Имя</translation>
+ <translation type="obsolete">Имя</translation>
</message>
<message>
<source>Type</source>
- <translation>Тип</translation>
+ <translation type="obsolete">Тип</translation>
</message>
<message>
<source>Browse for database file on local computer</source>
@@ -1970,7 +2060,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation>Файл</translation>
</message>
@@ -1986,7 +2076,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<source>Permanent</source>
- <translation>Запомнить</translation>
+ <translation type="obsolete">Запомнить</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="114"/>
@@ -1996,54 +2086,54 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<source>Test database connection</source>
- <translation>Тест соединения с базой данных</translation>
+ <translation type="obsolete">Тест соединения с базой данных</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation>Указать существующий файл базы данных на локальном компьютере</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation>Введите уникальное имя базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <location filename="../dialogs/dbdialog.cpp" line="477"/>
<source>This name is already in use. Please enter unique name.</source>
<translation>Данное имя уже используется. Пожалуйста, укажите уникальное имя.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation>Введите путь к базе данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This database is already on the list under name: %1</source>
<translation>Указанная база данных уже находится в списке под именем %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation>Выберите тип базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation>Автоматически сгенерировано</translation>
</message>
<message>
<source>The name will be auto-generated</source>
- <translation>Имя будет сгенерировано автоматически</translation>
+ <translation type="obsolete">Имя будет сгенерировано автоматически</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation>Введите имя</translation>
</message>
@@ -2092,9 +2182,31 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
+ <location filename="../dbobjectdialogs.cpp" line="315"/>
<source>Error while dropping %1: %2</source>
<translation>Ошибка при удалении %1: %2</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>
@@ -2109,343 +2221,365 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Фильтр по имени</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>Вставить</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>Выделить всё</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation>Создать группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation>Удалить группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation>Переименовать группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation>Добавить базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>Редактировать базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation>Удалить базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation>Подключиться к базе данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>Отключиться от базы данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>Импорт</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>Экспортировать базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>Сконвертировать тип базы данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation>Выполнить VACUUM</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation>Проверить целостность</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>Создать таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation>Редактировать таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation>Удалить таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation>Экспортировать таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation>Импортировать данные в таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>Заполнить таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>Создать подобную таблицу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation>Сбросить счётчик автоинкремента</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>Создать индекс</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation>Редактировать индекс</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation>Удалить индекс</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>Создать триггер</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation>Редактировать триггер</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation>Удалить триггер</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>Создать представление</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation>Редактировать представление</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation>Удалить представление</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>Добавить столбец</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation>Редактировать столбец</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation>Удалить столбец</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>Удалить выбранные элементы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>Сбросить фильтр</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation>Обновить структуры всех баз данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation>Обновить структуру выбранной базы данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation>Удалить данные из таблицы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>База данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>Группировка</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation>Создать группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation>Имя группы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation>Элемент с именем %1 уже входит в группу %2.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation>Удалить группу</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1136"/>
+ <source>Remove database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
- <translation>Удалить базу данных</translation>
+ <translation type="obsolete">Удалить базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Вы действительно хотите удалить базу данных &apos;%1&apos;?</translation>
+ <translation type="obsolete">Вы действительно хотите удалить базу данных &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Ошибка при выполнении команды VACUUM для базы данных %1: %2</translation>
+ <translation type="obsolete">Ошибка при выполнении команды VACUUM для базы данных %1: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>Выполнение команды VACUUM успешно завершено.</translation>
+ <translation type="obsolete">Выполнение команды VACUUM успешно завершено.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation>Проверка целостности (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation>Сброс счётчика автоинкремента</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Вы действительно хотите сбросить счётчик автоинкремента у таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>При попытке сброса счётчика автоинкремента у таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation>Вы действительно хотите удалить все данные из таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>При попытке удаления данных из таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Из таблицы &apos;%1&apos; были удалены все данные.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation>Будут удалены следующие объекты: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<source>Following databases will be removed from list: %1.</source>
<translation>Из списка будут удалены следующие базы данных: %1.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%11&lt;br&gt;&lt;br&gt;Вы действительно хотите продолжить?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation>Удалить объекты</translation>
</message>
@@ -2480,25 +2614,25 @@ All objects from this group will be moved to parent group.</source>
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
<translation>База данных: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
<translation>Версия:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
<translation>Размер файла:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
<translation>Кодировка:</translation>
@@ -2506,104 +2640,109 @@ All objects from this group will be moved to parent group.</source>
<message>
<source>Error details:</source>
<comment>dbtree tooltip</comment>
- <translation>Подробности ошибки:</translation>
+ <translation type="obsolete">Подробности ошибки:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="439"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
<translation>Ошибка:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
<translation>Таблица: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Столбцы (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Индексы (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Триггеры (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation>Переместить</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation>Включая данные</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation>Включая индексы</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation>Включая триггеры</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>Прервать</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation>Связанные таблицы</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<source>Do you want to include following referenced tables as well:
%1</source>
<translation>Вы хотите также включить следующие связанные таблицы:
%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation>Конфликт имён</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation>Данный объект уже существует в целевой базе данных.
Пожалуйста введите новое уникальное имя или нажмите %1 для прерывания операции:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation>Конвертация конструкций SQL</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation>Вы хотите проигнорировать эти ошибки и продолжить?</translation>
</message>
@@ -3356,96 +3495,126 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Индекс</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation>Для таблицы:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation>Имя индекса:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation>Условие для частичного индекса</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>Уникальный индекс</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation>Столбец</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation>Сравнение</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>Сортировка</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <location filename="../dialogs/indexdialog.cpp" line="66"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
<translation>Попытка вызвать диалог создания индекса для закрытой или несуществующей базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="131"/>
+ <location filename="../dialogs/indexdialog.cpp" line="149"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
<translation>Не удалось корректно обработать индекс %1. Невозможно открыть окно индекса.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="185"/>
+ <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>Выберите таблицу для индекса.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>Выберите хотя бы один столбец.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <location filename="../dialogs/indexdialog.cpp" line="209"/>
<source>Enter a valid condition.</source>
<translation>Введите корректное условие.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <location filename="../dialogs/indexdialog.cpp" line="276"/>
<source>default</source>
<comment>index dialog</comment>
<translation>по умолчанию</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
<translation>Порядок сортировки</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Ошибка</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="455"/>
+ <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>Невозможно создать уникальный индекс, т.к. данные в выбранных столбцах неуникальны. Вы хотите выполнить запрос SELECT для просмотра проблемных данных?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>При выполнении конструкций SQL произошла ошибка:
@@ -3453,6 +3622,49 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3493,273 +3705,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Панель отображения</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation>Виджеты конфигурации</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation>Движки синтаксической подсветки</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation>Редакторы данных</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation>Отладочный режим. Нажмите %1 или воспользуйтесь пунктом меню &apos;Справка / Открыть отладочную консоль&apos; для открытия отладочной консоли.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<source>Running in debug mode. Debug messages are printed to the standard output.</source>
<translation>Отладочный режим. Отладочные сообщения выводятся в стандартный выходной поток.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<source>You need to restart application to make the language change take effect.</source>
<translation>Для смены языка необходимо перезапустить приложение.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation>Открыть редактор SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation>Открыть историю DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation>Открыть редактор функций SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation>Открыть редактор сравнений</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>Импорт</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>Экспорт</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation>Открыть диалог конфигурации</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation>Расположить окна плиткой</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation>Расположить окна по горизонтали</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation>Расположить окна по вертикали</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>Расположить окна каскадом</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>Следующее окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>Предыдущее окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation>Скрыть окно статуса</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation>Закрыть выбранное окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation>Закрыть все окна, кроме выбранного</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation>Закрыть все окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation>Восстановить недавно закрытые окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation>Переименовать выбранное окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>Открыть отладочную консоль</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation>Открыть консоль CSS</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation>Сообщить об ошибке</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation>Предложить новый функционал</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>О программе</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>Лицензии</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation>Открыть домашнюю страницу</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation>Открыть страницу форума</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation>Руководство пользователя</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation>Документация по SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation>История отчётов</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation>Проверить обновления</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>База данных</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Структура</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>Вид</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Инструменты</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>Справка</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation>Невозможно применить стиль: %1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>Переименовать окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation>Введите новое имя для окна:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Доступны обновления. &lt;a href=&quot;%1&quot;&gt;Нажмите здесь для подробностей&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation>Установлена последняя версия. Обновлений нет.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation>Невозможно добавить базу данных %1 в список.</translation>
</message>
@@ -4159,127 +4371,127 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>имя сравнения: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation>Табличный вид данных</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation>Копировать содержимое ячеек в буфер обмена</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation>Вставить содержимое ячеек из буфера обмена</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation>Установить пустое значение для выбранных ячеек</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL value to selected cell(s)</source>
<translation>Установить для выбранных ячеек значение NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="26"/>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Commit changes to cell(s) contents</source>
<translation>Подтвердить изменение содержимого ячеек</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback changes to cell(s) contents</source>
<translation>Откатить изменения содержимого ячеек</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="28"/>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Delete selected data row</source>
<translation>Удалить выбранную строку данных</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation>Вставить новую строку данных</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation>Открыть содержимое выбранной ячейки в отдельном редакторе</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation>Всего доступно страниц: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation>Всего загружено строк: %1</translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation>Окно данных (и табличный вид, и форма)</translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation>Обновить данные</translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation>Переключиться с табличного вида на форму</translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation>Переключиться из формы на табличный вид</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation>Список баз данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation>Удалить выбранный элемент</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation>Сбросить содержимое фильтра</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation>Обновить структуру</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation>Обновить структуры всех баз данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation>Добавить базу данных</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation>Выделить все элементы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation>Копировать выбранные элементы</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4506,6 +4718,11 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Скопировать блок текста и вставить его строчкой выше</translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <source>Toggle comment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
<translation>Все базы данных SQLite</translation>
@@ -4577,106 +4794,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Переместить фокус ввода в окно редактора SQL вверху</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation>Окно таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation>Обновить структуру таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation>Добавить новый столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation>Редактировать выбранный столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation>Удалить выбранный столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation>Экспортировать данные таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <location filename="../windows/tablewindow.h" line="37"/>
<source>Import data to the table</source>
<translation>Импортировать данные в таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="37"/>
+ <location filename="../windows/tablewindow.h" line="38"/>
<source>Add new table constraint</source>
<translation>Добавить новое ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="38"/>
+ <location filename="../windows/tablewindow.h" line="39"/>
<source>Edit selected table constraint</source>
<translation>Редактировать выбранное ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="39"/>
+ <location filename="../windows/tablewindow.h" line="40"/>
<source>Delete selected table constraint</source>
<translation>Удалить выбранное ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="40"/>
+ <location filename="../windows/tablewindow.h" line="41"/>
<source>Refresh table index list</source>
<translation>Обновить список индексов таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation>Добавить новый индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation>Редактировать выбранный индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation>Удалить выбранный индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <location filename="../windows/tablewindow.h" line="45"/>
<source>Refresh table trigger list</source>
<translation>Обновить список триггеров таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="45"/>
+ <location filename="../windows/tablewindow.h" line="46"/>
<location filename="../windows/viewwindow.h" line="25"/>
<source>Add new trigger</source>
<translation>Добавить новый триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="46"/>
+ <location filename="../windows/tablewindow.h" line="47"/>
<location filename="../windows/viewwindow.h" line="26"/>
<source>Edit selected trigger</source>
<translation>Редактировать выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="47"/>
+ <location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="27"/>
<source>Delete selected trigger</source>
<translation>Удалить выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="48"/>
+ <location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
<translation>Перейти к следующей вкладке</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation>Перейти к предыдущей вкладке</translation>
@@ -4922,47 +5139,53 @@ find next</source>
<translation>Заменить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation>SQL-код сохранён в файле %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation>Сохранить в файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для записи: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Скрипты SQL (*.sql);;Все файлы (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation>Открыть файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для чтения: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Достигнут конец документа. Нажмите Найти снова для перезапуска поиска.</translation>
</message>
@@ -4970,36 +5193,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
<translation>Столбец:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
<translation>Тип данных:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
<translation>Таблица:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
<translation>Ограничения:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation>Эта ячейка нередактируема, причина: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation>Невозможно загрузить данные ячейки, которая ссылается на уже закрытую базу данных.</translation>
</message>
@@ -5007,83 +5230,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation>Невозможно редактировать данную ячейку. Подробности: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation>Строка помечена для удаления.</translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Одновременно может быть выполнен только один запрос.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation>Неподтверждённые данные</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation>Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Невозможно начать транзакцию в базе данных. Подробности: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation>При завершении транзакции возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation>При отмене транзакции возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation>При подтверждении данных произошла ошибка: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Ошибка при выполнении SQL запроса к базе данных &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation>Ошибка при загрузке результатов запроса: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation>Вставить несколько строк</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation>Количество вставляемых строк:</translation>
</message>
@@ -5091,92 +5319,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation>Копировать как...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation>Вставить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation>Вставить как...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation>Установить значения на NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation>Стереть содержимое</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation>Править содержимое в редакторе</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation>Подтвердить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation>Откатить</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation>Подтвердить выбранные ячейки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation>Откатить выбранные ячейки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation>Определить столбцы для сортировки</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation>Сбросить указанную сортировку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation>Вставить строку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation>Вставить несколько строк</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation>Удалить выбранную строку</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<source>No items selected to paste clipboard contents to.</source>
<translation>Не выбраны элементы для вставки в них содержимого буфера обмена.</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation>Править содержимое</translation>
</message>
@@ -5184,12 +5437,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation>Ошибка при подтверждении новой строки: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Ошибка при удалении строки из таблицы %1: %2</translation>
</message>
@@ -5382,19 +5635,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Name</source>
<comment>table structure columns</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="303"/>
<source>Data type</source>
<comment>table structure columns</comment>
<translation>Тип данных</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>Значение по умолчанию</translation>
@@ -5414,6 +5706,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation>Данные</translation>
</message>
@@ -5438,194 +5731,194 @@ but it&apos;s okay to use them anyway.</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Экспортировать таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Импортировать данные в таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Заполнить таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Обновить структуру</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Подтвердить изменения структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Откатить изменения структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Добавить столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Редактировать столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Удалить столбец</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Переместить столбец вверх</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Переместить столбец вниз</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Создать подобную таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Сбросить счётчик автоинкремента</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Добавить ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Редактировать ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Удалить ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Переместить ограничение на таблицу вверх</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Переместить ограничение на таблицу вниз</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Добавить первичный ключ таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Добавить внешний ключ таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Добавить табличное ограничение на уникальность</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation>Добавить проверочное ограничение на таблицу</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Обновить список индексов</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Создать индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Редактировать индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Удалить индекс</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Обновить список триггеров</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Создать триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Редактировать триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Удалить триггер</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Вы действительно хотите удалить столбец &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<source>Following problems will take place while modifying the table.
Would you like to proceed?</source>
<comment>table window</comment>
@@ -5633,212 +5926,222 @@ Would you like to proceed?</source>
Вы хотите продолжить?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation>Изменение таблицы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation>Невозможно загрузить данные таблицы %1. Подробности ошибки: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<source>Could not process the %1 table correctly. Unable to open a table window.</source>
<translation>Не удалось корректно обработать таблицу %1. Невозможно открыть окно таблицы.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<source>Could not restore window %1, because no database or table was stored in session for this window.</source>
<translation>Невозможно восстановить окно %1, так как в сессии для этого окна не была сохранена база данных или таблица.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как в сессии для этого окна не была сохранена база данных или таблица.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как невозможно определить базу данных %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как таблица %2 не существует в базе данных %3.</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be resolved.</source>
- <translation>Невозможно восстановить окно, так как невозможно определить базу данных %1</translation>
+ <translation type="obsolete">Невозможно восстановить окно, так как невозможно определить базу данных %1</translation>
</message>
<message>
<source>Could not restore window, because the table %1 doesn&apos;t exist in the database %2.</source>
- <translation>Невозможно восстановить окно, так как таблица %1 не существует в базе данных %2.</translation>
+ <translation type="obsolete">Невозможно восстановить окно, так как таблица %1 не существует в базе данных %2.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation>Новая таблица %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<source>Could not commit table structure. Error message: %1</source>
<comment>table window</comment>
<translation>Невозможно подтвердить структуру таблицы. Сообщение об ошибке: %1</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation>Сброс счётчика автоинкремента</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Вы действительно хотите сбросить счётчик автоинкремента у таблицы &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>При попытке сброса счётчика автоинкремента у таблицы &apos;%1&apos; произошла ошибка: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>Сброс счётчика автоинкремента у таблицы &apos;%1&apos; успешно выполнен.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation>Пустое имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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>SQLite позволяет таблице иметь пустое имя, хотя это не рекомендуется.
Вы действительно хотите создать таблицу с пустым именем?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation>Невозможно создать таблицу без хотя бы одного столбца.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
<translation>Невозможно создать таблицу %1, если не определён первичный ключ. Отключите %2, либо определите первичный ключ.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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>Невозможно использовать автоинкремент первичного ключа при использовании оператора %1. Отключите либо %2, либо автоинкремент первичного ключа.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Вы действительно хотите удалить ограничение на таблицу &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Удалить ограничение</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation>Неподтверждённые изменения</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура таблицы не подтверждена.
Подтвердить структуру таблицы или вернуться на вкладку структуры?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation>Вернуться на вкладку структуры</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation>Подтвердить изменения и перейти к данным.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Уникальность</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Столбцы</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation>Условие для частичного индекса</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Событие</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Условие</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Подробности</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>В окне таблицы &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
</message>
@@ -5995,209 +6298,280 @@ 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="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation>Данные</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation>Триггеры</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be resolved.</source>
- <translation>Невозможно восстановить окно, так как невозможно определить базу данных %1.</translation>
+ <translation type="obsolete">Невозможно восстановить окно, так как невозможно определить базу данных %1.</translation>
</message>
<message>
<source>Could not restore window, because database %1 could not be open.</source>
- <translation>Невозможно восстановить окно, так как невозможно открыть базу данных %1.</translation>
+ <translation type="obsolete">Невозможно восстановить окно, так как невозможно открыть базу данных %1.</translation>
</message>
<message>
<source>Could not restore window, because the view %1 doesn&apos;t exist in the database %2.</source>
- <translation>Невозможно восстановить окно, так как представление %1 не существует в базе данных %2.</translation>
+ <translation type="obsolete">Невозможно восстановить окно, так как представление %1 не существует в базе данных %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, because no database or view was stored in session for this window.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как в сессии для этого окна не была сохранена база данных или представление.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как невозможно определить базу данных %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как невозможно открыть базу данных %2.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation>Невозможно восстановить окно &apos;%1&apos;, так как представление %2 не существует в базе данных %3.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <location filename="../windows/viewwindow.cpp" line="162"/>
+ <location filename="../windows/viewwindow.cpp" line="164"/>
<source>New view %1</source>
<translation>Новое представление %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Обновить представление</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation>Подтвердить изменения представления</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation>Откатить изменения представления</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Добавить столбец</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Редактировать столбец</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Удалить столбец</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Переместить столбец вверх</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Переместить столбец вниз</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Обновить список триггеров</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Создать новый триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Редактировать выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Удалить выбранный триггер</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры и данных.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения данных.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>В окне представления &quot;%1&quot; имеются неподтверждённые изменения структуры.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation>Невозможно загрузить данные представления %1. Подробности ошибки: %2</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation>Неподтверждённые изменения</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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>Имеются неподтверждённые изменения структуры. Невозможно просматривать или редактировать данные, пока структура представления не подтверждена.
Подтвердить структуру представления или вернуться на вкладку структуры?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation>Вернуться на вкладку структуры</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation>Подтвердить изменения и перейти к данным.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Имя</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation>Вместо</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Условие</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Подробности</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation>Пустое имя</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation>Невозможно корректно проанализировать структуру представления для выполнения. Это ошибка SQLiteStudio. Пожалуйста, сообщите о ней.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<source>Following problems will take place while modifying the view.
Would you like to proceed?</source>
<comment>view window</comment>
@@ -6205,7 +6579,7 @@ Would you like to proceed?</source>
Вы хотите продолжить?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<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
index 47656ef..ac0f46e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
index 39f70f8..e6625c1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
@@ -588,95 +588,110 @@
<translation>Rozšírený mód</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>Pridať obmedzenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>Upraviť obmedzenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation>Vymazať obmedzenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>Posunúť obmedzenie hore</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>Posunúť obmedzenie dole</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
<translation>Pridať primárny kľúč</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
<translation>Pridať cudzí kľúč</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>Pridať jedinečné obmedzenie</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <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="93"/>
+ <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="94"/>
+ <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="95"/>
+ <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="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation>Ste si istý, že chcete vymazať obmedzenie &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -890,530 +905,624 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation>Konfigurácia</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>Hľadať</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>Všeobecné</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>Klávesové skratky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation>Vzhľad</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>Štýl</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>Fonty</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>Farby</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>Pluginy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>Formát kódu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>Prezeranie dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation>Editory dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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>Prezeranie a úprava dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation>Počet data riadkov na stranu:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <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>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation>Datové typy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation>Dostupné editory:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation>Úprava schémy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<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="443"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation>Veľkosť DDL histórie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Nezobrazovať náhľad DDL pri potvrdzovaní zmien v schéme</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation>SQL dotazy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<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="491"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation>Veľkosť SQL histórie:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;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.&lt;/p&gt; </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<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="514"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation>Aktualizácie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation>Kontrolovať aktualizácie pri štarte</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation>Sedenie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<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="581"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<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="622"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation>Akcia</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation>Klávesová skratka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation>Jazyk</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<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="694"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>Zoznam databáz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <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="728"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>Zoradiť stĺpce tabuľky abecedne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>Rozbaliť zoznam tabuliek po pripojení k databáze</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="271"/>
<source>Display additional labels on the list</source>
<translation>Zobraziť doplnkové popisky v zozname</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <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="769"/>
+ <location filename="../dialogs/configdialog.ui" line="289"/>
<source>Display labels for regular tables</source>
<translation>Zobraziť popisky pre regulárne tabuľky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="302"/>
<source>Display labels for virtual tables</source>
<translation>Zobraziť popisky pre virtuálne tabuľky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="315"/>
<source>Expand views node when connected to a database</source>
<translation>Rozbaliť zoznam pohľadov po pripojení k databáze</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <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="808"/>
+ <location filename="../dialogs/configdialog.ui" line="328"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Zoradiť objekty (tabuľky, indexy, spúšťače a pohľady) abecedne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="338"/>
<source>Display system tables and indexes on the list</source>
<translation>Zobraziť systémové tabuľky a indexy v zozname</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation>Okná tabuľky</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie štruktúra tabuľky.</translation>
+ <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="840"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<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="853"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation>Okná pohľadov</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation>Ak je táto možnosť zaškrtnutá, tak sa v okne zobrazia dáta a nie SQL dotaz.</translation>
+ <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="862"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<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="875"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation>Nezobrazovať interné pluginy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation>Aktuálny štýl:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation>Náhľad</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation>Zapnutý</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation>Vypnutý</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation>Aktívny formátovací plugin</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation>Písmo SQL editora</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation>Font zoznamu databáz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation>Font doplnkového popisku</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation>Font dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation>Font status okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation>Farby SQL editora</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation>Farba BLOB hodnoty</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation>Farby dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Všetky zmeny dát budú ohraničené touto farbou, dokiaľ nebudú potvrdené.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation>Farba rámčeka nepotvrdených dát</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;V prípade chyby pri potvrdzovaní zmien dát, budú problematické bunky ohraničené touto farbou.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<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="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation>Farba NULL hodnoty</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation>Pozadie vymazaného riadka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation>Farby zoznamu databáz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation>Farba doplnkového popisku</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation>Farby status okna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation>Farba informačnej správy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation>Farba upozornenia</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation>Farba chybovej správy</translation>
</message>
@@ -1465,43 +1574,43 @@ but it&apos;s okay to use it.</source>
<translation>Detaily pluginu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (interný)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>Detaily</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation>Pridať nový datový typ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>Premenovať vybraný datový typ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>Vymazať vybraný datový typ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation type="unfinished"></translation>
</message>
@@ -1653,120 +1762,138 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation>Filtrovať</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation>Tabuľkové zobrazenie</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation>Formulárové zobrazenie</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation>Obnoviť dáta v tabuľke</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>Prvá strana</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Predchádzajúca strana</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Nasledujúca strana</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Posledná strana</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Aplikovať filter</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="207"/>
<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="204"/>
+ <location filename="../dataview.cpp" line="208"/>
<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="205"/>
+ <location filename="../dataview.cpp" line="209"/>
<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="206"/>
+ <location filename="../dataview.cpp" line="210"/>
<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="275"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Filtrovať pomocou textu</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="285"/>
<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="277"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Filtrovať pomocou SQL výrazu</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Záložky hore</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Záložky dole</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="343"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="344"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="345"/>
+ <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"/>
<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="566"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation>Riadok:%1</translation>
</message>
@@ -1908,11 +2035,11 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<source>Name</source>
- <translation>Názov</translation>
+ <translation type="obsolete">Názov</translation>
</message>
<message>
<source>Type</source>
- <translation>Typ</translation>
+ <translation type="obsolete">Typ</translation>
</message>
<message>
<source>Browse for database file on local computer</source>
@@ -1925,7 +2052,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation>Súbor</translation>
</message>
@@ -1941,7 +2068,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<source>Permanent</source>
- <translation>Uložiť natrvalo</translation>
+ <translation type="obsolete">Uložiť natrvalo</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="114"/>
@@ -1951,54 +2078,54 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<source>Test database connection</source>
- <translation>Otestovať spojenie s databázou</translation>
+ <translation type="obsolete">Otestovať spojenie s databázou</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation>Hľadať databázový súbor na lokálnom počítači</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation>Prehľadávať</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation>Zadajte názov databázy.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="477"/>
<source>This name is already in use. Please enter unique name.</source>
<translation>Tento názov už existuje. Prosím zadajte iný názov.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation>Zadajte cestu k databázovému súboru.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This database is already on the list under name: %1</source>
<translation>Táto databáza už je v zozname pod názvom: %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation>Vyberte typ databázy.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation>Automaticky vygenerovaný</translation>
</message>
<message>
<source>The name will be auto-generated</source>
- <translation>Názov bude vygenerovaný automaticky</translation>
+ <translation type="obsolete">Názov bude vygenerovaný automaticky</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation>Zadajte meno</translation>
</message>
@@ -2048,9 +2175,31 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
+ <location filename="../dbobjectdialogs.cpp" line="315"/>
<source>Error while dropping %1: %2</source>
<translation>Vyskystla sa chyba počas mazania %1: %2</translation>
</message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="282"/>
+ <source>Delete objects</source>
+ <translation type="unfinished">Odstránenie objektov</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>
@@ -2065,344 +2214,366 @@ 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="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>Vložiť</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>Vybrať všetko</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation>Vytvoriť skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation>Vymazať skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation>Premenovať skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation>Pridať databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>Upraviť databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation>Odstrániť databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation>Pripojiť sa k databáze</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>Odpojiť sa od databázy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>Importovať</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>Exportovať databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>Konvertovať databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation>Vacuum</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation>Kontrola integrity</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>Vytvoriť tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation>Upraviť tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation>Vymazať tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation>Exportovať tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation>Importovať do tabuľky</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>Naplniť tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>Vytvoriť rovnakú tabuľku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation>Resetovať sekvenciu autoinkrementu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>Vytvoriť index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation>Upraviť index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation>Vymazať index</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>Vytvoriť spúšťač</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation>Upraviť spúšťač</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation>Vymazať spúšťač</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>Vytvoriť pohľad</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation>Upraviť pohľad</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation>Vymazať pohľad</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>Pridať stĺpec</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation>Upraviť stĺpec</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation>Vymazať stĺpec</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>Vymazať vybrané položky</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>Zrušiť filter</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation>Obnoviť všetky databázové schémy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation>Obnoviť vybranú databázovú schému</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation>Vymazať dáta z tabuľky</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>Databáza</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>Zoskupovanie</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation>Vytvoriť skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation>Názov skupiny</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<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="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation>Vymazať skupinu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1136"/>
+ <source>Remove database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
- <translation>Odstrániť databázu</translation>
+ <translation type="obsolete">Odstrániť databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Ste si istý, že chcete odstrániť databázu &apos;%1&apos;?</translation>
+ <translation type="obsolete">Ste si istý, že chcete odstrániť databázu &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
<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="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
<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="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>Vyskytla sa chyba počas vykonávania príkazu VACUUM na databáze %1: %2</translation>
+ <translation type="obsolete">Vyskytla sa chyba počas vykonávania príkazu VACUUM na databáze %1: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>VACUUM úspešne skončilo.</translation>
+ <translation type="obsolete">VACUUM úspešne skončilo.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation>Kontrola integrity (%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation>Resetovať autoinkrement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation>Ste si istý, že chcete vymazať všetky dáta z tabuľky &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse vymazať dáta z tabuľky &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>Všetky dáta z tabuľky &apos;%1&apos; boli vymazané.</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<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="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<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="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;Ste si istý, že chcete pokračovať?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation>Odstránenie objektov</translation>
</message>
@@ -2437,25 +2608,25 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
<translation type="unfinished">Databáza: %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
<translation>Verzia:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
<translation>Veľkosť súboru:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
<translation>Kódovanie:</translation>
@@ -2463,102 +2634,107 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<message>
<source>Error details:</source>
<comment>dbtree tooltip</comment>
- <translation>Detaily chyby:</translation>
+ <translation type="obsolete">Detaily chyby:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <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="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
<translation>Tabuľka : %1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Stĺpce (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Indexy (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
<translation>Spúšťače (%1):</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>Zrušiť</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation type="unfinished"></translation>
</message>
@@ -3077,12 +3253,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.ui" line="211"/>
<source>Register in all databases</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Registrovať vo všetkých databázach</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="218"/>
<source>Register in following databases:</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Registrovať v nasledujúcich databázach:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="293"/>
@@ -3173,7 +3349,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.cpp" line="422"/>
<source>Pick the implementation language.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Vyberte implementačný jazyk.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="426"/>
@@ -3183,7 +3359,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.cpp" line="432"/>
<source>Enter a non-empty implementation code.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Zadajte implementačný kód.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="505"/>
@@ -3260,42 +3436,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Nastavenia dátového zdroja</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation>Zrušiť</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;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="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation>Zadajte názov tabuľky</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation>Vyberte importný plugin.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<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="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation>Súbor %1 neexistuje.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation>Výber súboru, z ktorého sa budú importovať dáta</translation>
</message>
@@ -3309,102 +3485,175 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation>Na tabuľke:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation>Názov indexu:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>Jedinečný index</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation>Stĺpec</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation>Porovnávanie</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>Zoradiť</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <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="131"/>
+ <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="185"/>
+ <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="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>Vyberte minimálne jeden stĺpec.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <location filename="../dialogs/indexdialog.cpp" line="209"/>
<source>Enter a valid condition.</source>
<translation>Zadajte platnú podmienku.</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <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="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
<translation>Zoradiť</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Chyba</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <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>Nemôžem vytvoriť jedinečný index, pretože hodnoty vo vybraných stĺpcoch nie sú jedinečné. Chcete spustiť dotaz SELECT na zobrazenie problematických hodnôt?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3445,273 +3694,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Lišta pohľadov</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation>Editory dát</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="211"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<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="254"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation>Otvoriť SQL editor</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation>Otvoriť DDL históriu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation>Otvoriť editor SQL funkcií</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation>Otvoriť editor porovnávaní</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>Import</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>Export</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation>Konfigurácia</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation>Oddeliť okná</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation>Oddeliť okná horizontálne</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation>Oddeliť okná vertikálne</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>Okná kaskádovito</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>Nasledujúce okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>Predchádzajúce okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation>Zatvoriť vybrané okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation>Zatvoriť všetky okná okrem vybraného</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation>Zatvoriť všetky okná</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation>Obnoviť posledné zatvorené okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation>Premenovať vybrané okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>Otvoriť ladiacu konzolu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation>Otvoriť CSS konzolu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation>Nahlásiť chybu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation>Navrhnúť novú funkciu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>O programe</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>Licencie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation>Otvoriť domovskú stránku</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation>Otvoriť fórum</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation>Používateľský manuál</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation>Dokumentácia SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation>História hlásení</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation>Skontrolovať akutalizácie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Databázy</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Štruktúry</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>Zobrazenie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Lišta okien</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Nástroje</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<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="642"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<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="658"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<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="691"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>Premenovať okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation>Zadajte nový názov pre okno:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Nové aktualizácie sú dostupné. &lt;a href=&quot;%1&quot;&gt;Kliknite sem pre zobrazenie detailov&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;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="891"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation>Nemôžem pridať databázu %1 do zoznamu.</translation>
</message>
@@ -4111,129 +4360,129 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Názov porovnánavania: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation>Tabuľkové zobrazenie dát</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<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="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<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="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<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="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<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="26"/>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Commit changes to cell(s) contents</source>
<translation>Potvrdiť zmeny v bunkách</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<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="28"/>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Delete selected data row</source>
<translation>Vymazať vybraný riadok</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation>Vložiť nový riadok</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<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="532"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation>Celkový počet strán: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation>Celkový počet riadkov: %1</translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<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="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation>Obnoviť dáta</translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<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="21"/>
+ <location filename="../dataview.h" line="22"/>
<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="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation>Zoznam databáz</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation>Vymazať vybranú položku</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation>Vymazať filter</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation>Obnoviť schému</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation>Obnoviť všetky schémy</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation>Pridať databázu</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation>Vybrať všetky položky</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation>Kopírovať vybrané položky</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation>Vložiť zo schránky</translation>
</message>
@@ -4345,7 +4594,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.h" line="50"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Otvoriť CSS konzolu</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="12"/>
@@ -4354,110 +4603,115 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation>Vystrihnúť vybraný text</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<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="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation>Vymazať vybraný text</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation>Označiť všetko</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation>Uložiť SQL do súboru</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation>Načítať SQL zo súboru</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation>Nájsť v SQL</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation>Nájsť ďalší</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation>Nájsť predchádzajúci</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation>Nahradiť v SQL</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation>Vymazať aktuálny riadok</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation>Otvoriť SQL pomocníka</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation>Formátovať SQL</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<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="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<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="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<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="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<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"/>
+ <source>Toggle comment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
<translation>Všetky SQLite databázy</translation>
@@ -4529,106 +4783,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Prepnúť kurzor do editora</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation>Okno tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation>Obnoviť štruktúru tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation>Pridať nový stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation>Upraviť vybraný stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation>Vymazať vybraný stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation>Exportovať dáta z tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <location filename="../windows/tablewindow.h" line="37"/>
<source>Import data to the table</source>
<translation>Importovať dáta do tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="37"/>
+ <location filename="../windows/tablewindow.h" line="38"/>
<source>Add new table constraint</source>
<translation>Pridať nové obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="38"/>
+ <location filename="../windows/tablewindow.h" line="39"/>
<source>Edit selected table constraint</source>
<translation>Upraviť vybrané obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="39"/>
+ <location filename="../windows/tablewindow.h" line="40"/>
<source>Delete selected table constraint</source>
<translation>Vymazať vybrané obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="40"/>
+ <location filename="../windows/tablewindow.h" line="41"/>
<source>Refresh table index list</source>
<translation>Obnoviť zoznam indexov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation>Pridať nový index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation>Upraviť vybraný index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation>Vymazať vybraný index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <location filename="../windows/tablewindow.h" line="45"/>
<source>Refresh table trigger list</source>
<translation>Obnoviť zoznam spúšťačov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="45"/>
+ <location filename="../windows/tablewindow.h" line="46"/>
<location filename="../windows/viewwindow.h" line="25"/>
<source>Add new trigger</source>
<translation>Pridať nový spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="46"/>
+ <location filename="../windows/tablewindow.h" line="47"/>
<location filename="../windows/viewwindow.h" line="26"/>
<source>Edit selected trigger</source>
<translation>Upraviť vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="47"/>
+ <location filename="../windows/tablewindow.h" line="48"/>
<location filename="../windows/viewwindow.h" line="27"/>
<source>Delete selected trigger</source>
<translation>Vymazať vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="48"/>
+ <location filename="../windows/tablewindow.h" line="49"/>
<location filename="../windows/viewwindow.h" line="28"/>
<source>Go to next tab</source>
<translation>Prechod na nasledujúcu záložku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation>Prechod na predchádzajúcu záložku</translation>
@@ -4747,173 +5001,179 @@ nájsť ďalší</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Vystrihnúť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Vložiť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Vymazať</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Vybrať všetko</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Formátovať SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<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="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<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="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Vymazať riadok</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Nájsť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Nájsť ďalší</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Nájsť predchádzajúci</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Nahradiť</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="819"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1054"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation>Uložiť do súboru</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Nemôžem otvoriť súbor &apos;%1&apos; pre zápis: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation>Otvoriť súbor</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Nemôžem otvoriť súbor &apos;%1&apos; na čítanie: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<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>
@@ -4921,36 +5181,36 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
<translation>Stĺpec:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
<translation>Datový typ:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
<translation>Tabuľka:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
<translation>Obmedzenia:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation>Táto bunka nieje editovateľná, pretože: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -4958,83 +5218,88 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation>Nemôže byť spustených viacero dotazov súčasne.</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation>Nepotvrdené dáta</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation>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="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation>Nemôžem začať tranzakciu na databáze. Detaily: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation>Vyskytla sa chyba počas potvrdzovania tranzakcie: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<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="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation>Vyskytla sa chyba počas potvrdzovania dát: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba počas vykonávania SQL dotazu na databáze &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<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="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation>Vložiť viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation>Počet vkládaných riadkov:</translation>
</message>
@@ -5042,92 +5307,117 @@ nájsť ďalší</translation>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation>Kopírovať</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation>Kopírovať ako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation>Vložiť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation>Vložiť ako...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation>Nastaviť null hodnoty</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation>Vymazať hodnoty</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation>Upraviť hodnotu v editory</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation>Potvrdiť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation>Vrátiť späť</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation>Potvrdiť vybrané bunky</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation>Vrátiť späť vybrané bunky</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation>Vybrať stĺpce na zoradenie podľa</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation>Odstrániť užívateľské triedenie</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation>Vložiť riadok</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation>Vložiť viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation>Vymazať viacero riadkov</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<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="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation>Upraviť hodnotu</translation>
</message>
@@ -5135,12 +5425,12 @@ nájsť ďalší</translation>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation>Vyskytla sa chyba počas potvrdzovania nového riadka: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation>Vyskytla sa chyba počas mazania riadka z tabuľky %1: %2</translation>
</message>
@@ -5332,19 +5622,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Name</source>
<comment>table structure columns</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <location filename="../windows/tablestructuremodel.cpp" line="303"/>
<source>Data type</source>
<comment>table structure columns</comment>
<translation>Datový typ</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>Prednastavená hodnota</translation>
@@ -5364,6 +5693,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation>Dáta</translation>
</message>
@@ -5388,397 +5718,407 @@ but it&apos;s okay to use them anyway.</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation>Exportovať tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation>Importovať dáta do tabuľky</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation>Naplniť tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation>Obnoviť štruktúru</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation>Potvrdiť zmeny štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation>Vrátiť späť zmeny štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation>Pridať stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation>Upraviť stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation>Vymazať stĺpec</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation>Posunúť stĺpec hore</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation>Posunúť stĺpec dole</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
<translation>Vytvoriť rovnakú tabuľku</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation>Resetovať hodnotu autoinkrementu</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation>Pridať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation>Upraviť obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation>Vymazať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation>Posunúť obmedzenie hore</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation>Posunúť obmedzenie dole</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation>Pridať primárny kľúč</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation>Pridať cudzí kľúč</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation>Pridať jedinečné obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation>Obnoviť zoznam indexov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation>Vytvoriť index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation>Upraviť index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation>Vymazať index</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation>Obnoviť zoznam spúšťačov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation>Vytvoriť spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation>Upraviť spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation>Vymazať spúšťač</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Ste si istý, že chcete vymazať stĺpec &apos;%1&apos; ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation>Resetovať autoinkrement</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation>Ste si istý, že chcete vymazať obmedzenie &apos;%1&apos;?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation>Vymazať obmedzenie</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished">Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished">Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation>Nepotvrdené zmeny</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation>Choď späť na záložku štruktúr</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation>Potvrdiť zmeny a prezerať dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation>Jedinečný</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation>Stĺpce</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation>Udalosť</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation>Podmienka</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Detaily</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry a dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation>V okne tabuľky %1 sú nepotvrdené dáta.</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry.</translation>
</message>
@@ -5889,7 +6229,7 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>Error</source>
<comment>trigger dialog</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Chyba</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
@@ -5934,203 +6274,274 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<translation>Názov pohľadu:</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation>Dáta</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation>Spúšťače</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
<translation>DDL</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <location filename="../windows/viewwindow.cpp" line="162"/>
+ <location filename="../windows/viewwindow.cpp" line="164"/>
<source>New view %1</source>
<translation>Nový pohľad %1</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation>Obnoviť pohľad</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<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="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<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="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Pridať stĺpec</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Upraviť stĺpec</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished">Vymazať stĺpec</translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <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="329"/>
+ <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="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation>Obnoviť zoznam spúšťačov</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation>Vytvoriť nový spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation>Upraviť vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation>Vymazať vybraný spúšťač</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr a dát.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<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>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation>Nepotvrdené zmeny</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná.
Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<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="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation>Potvrdiť zmeny a prezerať dáta.</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation>Názov</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation>Podmienka</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation>Detaily</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<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
index 2cb7445..47beaf2 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm
Binary files differ
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
index acefaa8..e6a2c1d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="zh_CN">
+<TS version="2.0" language="zh_CN">
<context>
<name>AboutDialog</name>
<message>
@@ -590,95 +590,110 @@
<translation>高级模式</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Add constraint</source>
<comment>column dialog</comment>
<translation>添加约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
<translation>编辑约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="85"/>
- <location filename="../dialogs/columndialog.cpp" line="229"/>
+ <location filename="../dialogs/columndialog.cpp" line="88"/>
+ <location filename="../dialogs/columndialog.cpp" line="232"/>
<source>Delete constraint</source>
<comment>column dialog</comment>
<translation>删除约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
<translation>上移约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
<translation>下移约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
<source>Add a primary key</source>
<comment>column dialog</comment>
<translation>添加主键</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <location filename="../dialogs/columndialog.cpp" line="93"/>
<source>Add a foreign key</source>
<comment>column dialog</comment>
<translation>添加外键</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
<source>Add an unique constraint</source>
<comment>column dialog</comment>
<translation>添加唯一约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
<source>Add a check constraint</source>
<comment>column dialog</comment>
<translation>添加条件约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="93"/>
+ <location filename="../dialogs/columndialog.cpp" line="96"/>
<source>Add a not null constraint</source>
<comment>column dialog</comment>
<translation>添加非空约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <location filename="../dialogs/columndialog.cpp" line="97"/>
<source>Add a collate constraint</source>
<comment>column dialog</comment>
<translation>添加排序规则约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <location filename="../dialogs/columndialog.cpp" line="98"/>
<source>Add a default constraint</source>
<comment>column dialog</comment>
<translation>添加默认约束</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <location filename="../dialogs/columndialog.cpp" line="231"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
<translation>您确定要删除约束“%1”吗?</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <location filename="../dialogs/columndialog.cpp" line="293"/>
<source>Correct the constraint&apos;s configuration.</source>
<translation type="unfinished">修正约束配置。</translation>
</message>
<message>
- <location filename="../dialogs/columndialog.cpp" line="293"/>
+ <location filename="../dialogs/columndialog.cpp" line="296"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
<translation>SQLite2没有官方支持该约束,但是可以使用。</translation>
</message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="385"/>
+ <source>Scale is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="386"/>
+ <source>Precision cannot be defined without the scale.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="407"/>
+ <source>Precision is not allowed for INTEGER PRIMARY KEY columns.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ColumnDialogConstraintsModel</name>
@@ -892,557 +907,616 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <location filename="../dialogs/configdialog.ui" line="1491"/>
<source>Configuration</source>
<translation>配置</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="73"/>
+ <location filename="../dialogs/configdialog.ui" line="63"/>
<source>Search</source>
<translation>搜索</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="104"/>
+ <location filename="../dialogs/configdialog.ui" line="94"/>
<source>General</source>
<translation>通用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="116"/>
+ <location filename="../dialogs/configdialog.ui" line="106"/>
<source>Keyboard shortcuts</source>
<translation>快捷键</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="128"/>
+ <location filename="../dialogs/configdialog.ui" line="118"/>
<source>Look &amp; feel</source>
<translation>外观</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="139"/>
+ <location filename="../dialogs/configdialog.ui" line="129"/>
<source>Style</source>
<translation>风格</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="151"/>
+ <location filename="../dialogs/configdialog.ui" line="141"/>
<source>Fonts</source>
<translation>字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="163"/>
+ <location filename="../dialogs/configdialog.ui" line="153"/>
<source>Colors</source>
<translation>颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="176"/>
+ <location filename="../dialogs/configdialog.ui" line="202"/>
<source>Plugins</source>
<translation>插件</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="187"/>
+ <location filename="../dialogs/configdialog.ui" line="213"/>
<source>Code formatters</source>
<translation>代码格式化</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="196"/>
+ <location filename="../dialogs/configdialog.ui" line="178"/>
<source>Data browsing</source>
<translation>浏览数据</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="207"/>
+ <location filename="../dialogs/configdialog.ui" line="189"/>
<source>Data editors</source>
<translation>数据编辑器</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="237"/>
+ <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>&lt;p&gt;When adding new database it is marked to be &quot;permanent&quot; (stored in configuration) by default. Checking this option makes every new database to NOT be &quot;permanent&quot; by default.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="360"/>
+ <source>Do not mark database to be &quot;permanent&quot; by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="370"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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>流量和编辑数据</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="243"/>
+ <location filename="../dialogs/configdialog.ui" line="424"/>
<source>Number of data rows per page:</source>
<translation>每页的行数:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="269"/>
- <location filename="../dialogs/configdialog.ui" line="279"/>
+ <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="460"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;在以列表方式显示数据时,列宽度会自动调整。该值控制初始列宽度,之后您可以手动调整列宽度,不受此限制。&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="272"/>
+ <location filename="../dialogs/configdialog.ui" line="453"/>
<source>Limit initial data column width to (in pixels):</source>
<translation>限制宽度(单位:像素):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="301"/>
- <source>Inserting new row in data grid</source>
+ <location filename="../dialogs/configdialog.ui" line="479"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="307"/>
- <source>Before currently selected row</source>
- <translation>在已选列之前</translation>
+ <location filename="../dialogs/configdialog.ui" line="482"/>
+ <source>Show column and row details tooltip in data view</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="316"/>
- <location filename="../dialogs/configdialog.ui" line="329"/>
- <location filename="../dialogs/configdialog.ui" line="342"/>
- <source>General.InsertRowPlacement</source>
+ <location filename="../dialogs/configdialog.ui" line="495"/>
+ <source>Inserting new row in data grid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="323"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Before currently selected row</source>
+ <translation>在已选列之前</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="517"/>
<source>After currently selected row</source>
<translation>在已选列之后</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="336"/>
+ <location filename="../dialogs/configdialog.ui" line="530"/>
<source>At the end of data view</source>
<translation>在数据显示区域的末尾</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="379"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>&lt;p&gt;When enabled, Table Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every Table Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="568"/>
+ <source>Place data tab as first tab in a Table Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="587"/>
+ <source>&lt;p&gt;When enabled, View Windows will show up with the data tab, instead of the structure tab.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="600"/>
+ <source>&lt;p&gt;When enabled the &quot;Data&quot; tab will be placed as first tab in every View Window, instead of being at second place.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="603"/>
+ <source>Place data tab as first tab in a View Window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="647"/>
<source>Data types</source>
<translation>数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="417"/>
+ <location filename="../dialogs/configdialog.ui" line="685"/>
<source>Available editors:</source>
<translation>可用的编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="433"/>
+ <location filename="../dialogs/configdialog.ui" line="701"/>
<source>Editors selected for this data type:</source>
<translation>已选的该数据类型编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="469"/>
+ <location filename="../dialogs/configdialog.ui" line="737"/>
<source>Schema editing</source>
<translation>架构编辑</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="481"/>
+ <location filename="../dialogs/configdialog.ui" line="749"/>
<source>Number of DDL changes kept in history.</source>
<translation>数据库定义(DDL)的更改历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="494"/>
+ <location filename="../dialogs/configdialog.ui" line="762"/>
<source>DDL history size:</source>
<translation>数据库定义(DDL)历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="769"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>当提交schema变动时不显示数据库定义(DDL)预览对话框</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="782"/>
<source>SQL queries</source>
<translation>SQL查询</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="526"/>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="794"/>
+ <location filename="../dialogs/configdialog.ui" line="807"/>
<source>Number of queries kept in the history.</source>
<translation>查询历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="542"/>
+ <location filename="../dialogs/configdialog.ui" line="810"/>
<source>History size:</source>
<translation>历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="549"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;如果SQL编辑器中有多个语句,如果启用该选项,只执行光标下的语句;反之则执行全部语句。另外您可以选择需要执行的语句来执行&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="552"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Execute only the query under the cursor</source>
<translation>只执行光标下的语句</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="565"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Updates</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="571"/>
+ <location filename="../dialogs/configdialog.ui" line="839"/>
<source>Automatically check for updates at startup</source>
<translation>在启动时自己检查更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="584"/>
+ <location filename="../dialogs/configdialog.ui" line="852"/>
<source>Session</source>
<translation>会话</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="590"/>
+ <location filename="../dialogs/configdialog.ui" line="858"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>启动后恢复上一次会话。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="632"/>
+ <location filename="../dialogs/configdialog.ui" line="871"/>
+ <source>Status Field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="877"/>
+ <source>&lt;p&gt;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&apos;s disabled, then Status panel can only be open manually by the user from the &quot;View&quot; menu.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="880"/>
+ <source>Always open Status panel when new message is printed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="922"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="673"/>
+ <location filename="../dialogs/configdialog.ui" line="963"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="678"/>
+ <location filename="../dialogs/configdialog.ui" line="968"/>
<source>Key combination</source>
<translation>按键编定</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="722"/>
- <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <location filename="../dialogs/configdialog.ui" line="1012"/>
+ <location filename="../dialogs/configdialog.ui" line="1481"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="1018"/>
<source>Changing language requires application restart to take effect.</source>
<translation>更改语言后,重启程序生效。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="745"/>
+ <location filename="../dialogs/configdialog.ui" line="1035"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="1041"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="754"/>
+ <location filename="../dialogs/configdialog.ui" line="1044"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="760"/>
- <source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="770"/>
+ <location filename="../dialogs/configdialog.ui" line="166"/>
+ <location filename="../dialogs/configdialog.ui" line="239"/>
<source>Database list</source>
<translation>数据库列表</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="776"/>
+ <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>如果关闭,将会以 CREATE TABLE 中的顺序对列进行排序。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="248"/>
<source>Sort table columns alphabetically</source>
<translation>按字母对列排序</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="789"/>
+ <location filename="../dialogs/configdialog.ui" line="258"/>
<source>Expand tables node when connected to a database</source>
<translation>当连接到数据库时,展开数据库节点。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="799"/>
+ <location filename="../dialogs/configdialog.ui" line="268"/>
<source>&lt;p&gt;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.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="802"/>
+ <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="817"/>
+ <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="820"/>
+ <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="830"/>
+ <location filename="../dialogs/configdialog.ui" line="299"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="833"/>
+ <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="846"/>
+ <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="856"/>
+ <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="859"/>
+ <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="869"/>
+ <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="882"/>
+ <location filename="../dialogs/configdialog.ui" line="546"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="888"/>
- <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="891"/>
+ <location filename="../dialogs/configdialog.ui" line="555"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="904"/>
+ <location filename="../dialogs/configdialog.ui" line="581"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="910"/>
- <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../dialogs/configdialog.ui" line="913"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="926"/>
+ <location filename="../dialogs/configdialog.ui" line="1060"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="932"/>
+ <location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="952"/>
+ <location filename="../dialogs/configdialog.ui" line="1086"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <location filename="../dialogs/configdialog.ui" line="1208"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <location filename="../dialogs/configdialog.ui" line="1237"/>
<source>Current style:</source>
<translation>当前风格:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <location filename="../dialogs/configdialog.ui" line="1254"/>
<source>Preview</source>
<translation>预览</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <location filename="../dialogs/configdialog.ui" line="1264"/>
<source>Enabled</source>
<translation>已启用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <location filename="../dialogs/configdialog.ui" line="1437"/>
<source>Disabled</source>
<translation>已禁用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <location filename="../dialogs/configdialog.ui" line="1486"/>
<source>Active formatter plugin</source>
<translation>启用格式化插件</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <location filename="../dialogs/configdialog.ui" line="1524"/>
<source>SQL editor font</source>
<translation>SQL编辑器字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <location filename="../dialogs/configdialog.ui" line="1540"/>
<source>Database list font</source>
<translation>数据库字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <location filename="../dialogs/configdialog.ui" line="1556"/>
<source>Database list additional label font</source>
<translation>数据库额外标签字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <location filename="../dialogs/configdialog.ui" line="1572"/>
<source>Data view font</source>
<translation>数据浏览字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <location filename="../dialogs/configdialog.ui" line="1588"/>
<source>Status field font</source>
<translation>状态栏字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <location filename="../dialogs/configdialog.ui" line="1646"/>
<source>SQL editor colors</source>
<translation>SQL编辑器颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <location filename="../dialogs/configdialog.ui" line="1652"/>
<source>Current line background</source>
<translation>当前行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <location filename="../dialogs/configdialog.ui" line="1659"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;单引号内的SQL字符串&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <location filename="../dialogs/configdialog.ui" line="1662"/>
<source>String foreground</source>
<translation>字符串颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <location filename="../dialogs/configdialog.ui" line="1765"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <location filename="../dialogs/configdialog.ui" line="1768"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <location filename="../dialogs/configdialog.ui" line="1791"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <location filename="../dialogs/configdialog.ui" line="1798"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1801"/>
<source>BLOB value foreground</source>
<translation>BLOB值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Regular foreground</source>
<translation type="unfinished">背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <location filename="../dialogs/configdialog.ui" line="1815"/>
<source>Line numbers area background</source>
<translation>行号的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Keyword foreground</source>
<translation>关键字的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <location filename="../dialogs/configdialog.ui" line="1845"/>
<source>Number foreground</source>
<translation>数字颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <location filename="../dialogs/configdialog.ui" line="1852"/>
<source>Comment foreground</source>
<translation>注释颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <location filename="../dialogs/configdialog.ui" line="1891"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <location filename="../dialogs/configdialog.ui" line="1894"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <location filename="../dialogs/configdialog.ui" line="1920"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <location filename="../dialogs/configdialog.ui" line="1926"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <location filename="../dialogs/configdialog.ui" line="1929"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <location filename="../dialogs/configdialog.ui" line="1952"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <location filename="../dialogs/configdialog.ui" line="1955"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <location filename="../dialogs/configdialog.ui" line="1978"/>
<source>NULL value foreground</source>
<translation>NULL值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <location filename="../dialogs/configdialog.ui" line="2001"/>
<source>Deleted row background</source>
<translation>已删除行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <location filename="../dialogs/configdialog.ui" line="2027"/>
<source>Database list colors</source>
<translation>数据库列表颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <location filename="../dialogs/configdialog.ui" line="2033"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <location filename="../dialogs/configdialog.ui" line="2036"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <location filename="../dialogs/configdialog.ui" line="2062"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <location filename="../dialogs/configdialog.ui" line="2068"/>
<source>Information message foreground</source>
<translation>信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <location filename="../dialogs/configdialog.ui" line="2091"/>
<source>Warning message foreground</source>
<translation>警告信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <location filename="../dialogs/configdialog.ui" line="2114"/>
<source>Error message foreground</source>
<translation>错误信息颜色</translation>
</message>
@@ -1494,43 +1568,43 @@ but it&apos;s okay to use it.</source>
<translation>插件详情</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <location filename="../dialogs/configdialog.cpp" line="1208"/>
<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="1266"/>
+ <location filename="../dialogs/configdialog.cpp" line="1272"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
<translation>%1 (内建)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <location filename="../dialogs/configdialog.cpp" line="1285"/>
<source>Details</source>
<translation>详情</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <location filename="../dialogs/configdialog.cpp" line="1297"/>
<source>No plugins in this category.</source>
<translation>该分类下没有插件。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Add new data type</source>
<translation>添加新的数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <location filename="../dialogs/configdialog.cpp" line="1403"/>
<source>Rename selected data type</source>
<translation>重命名选择的数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <location filename="../dialogs/configdialog.cpp" line="1407"/>
<source>Delete selected data type</source>
<translation>删除已选数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <location filename="../dialogs/configdialog.cpp" line="1411"/>
<source>Help for configuring data type editors</source>
<translation type="unfinished"></translation>
</message>
@@ -1682,137 +1756,137 @@ but it&apos;s okay to use it.</source>
<context>
<name>DataView</name>
<message>
- <location filename="../dataview.cpp" line="98"/>
+ <location filename="../dataview.cpp" line="99"/>
<source>Filter data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="107"/>
+ <location filename="../dataview.cpp" line="108"/>
<source>Grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="108"/>
+ <location filename="../dataview.cpp" line="109"/>
<source>Form view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="165"/>
+ <location filename="../dataview.cpp" line="166"/>
<source>Refresh table data</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>First page</source>
<comment>data view</comment>
<translation>首页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="184"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>上一页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="185"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Next page</source>
<comment>data view</comment>
<translation>下一页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="186"/>
+ <location filename="../dataview.cpp" line="187"/>
<source>Last page</source>
<comment>data view</comment>
<translation>末页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="191"/>
+ <location filename="../dataview.cpp" line="192"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="207"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Rollback 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="209"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="209"/>
+ <location filename="../dataview.cpp" line="210"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="278"/>
+ <location filename="../dataview.cpp" line="284"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="279"/>
+ <location filename="../dataview.cpp" line="285"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="280"/>
+ <location filename="../dataview.cpp" line="286"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="311"/>
+ <location filename="../dataview.cpp" line="317"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="312"/>
+ <location filename="../dataview.cpp" line="318"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="337"/>
+ <location filename="../dataview.cpp" line="343"/>
<source>Place new rows above selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="338"/>
+ <location filename="../dataview.cpp" line="344"/>
<source>Place new rows below selected row</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="339"/>
+ <location filename="../dataview.cpp" line="345"/>
<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="596"/>
+ <location filename="../dataview.cpp" line="613"/>
<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="607"/>
+ <location filename="../dataview.cpp" line="624"/>
<source>Row: %1</source>
<translation>行:%1</translation>
</message>
@@ -1912,7 +1986,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="215"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">忽略错误并继续?</translation>
</message>
</context>
<context>
@@ -1967,7 +2041,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="156"/>
<source>File</source>
<translation>文件</translation>
</message>
@@ -1988,47 +2062,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <location filename="../dialogs/dbdialog.cpp" line="157"/>
<source>Browse for existing database file on local computer</source>
<translation>浏览计算上已存在的文件</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <location filename="../dialogs/dbdialog.cpp" line="290"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <location filename="../dialogs/dbdialog.cpp" line="469"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <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="501"/>
+ <location filename="../dialogs/dbdialog.cpp" line="485"/>
<source>Enter a database file path.</source>
<translation>输入数据库文件位置。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This database is already on the list under name: %1</source>
<translation>该数据库已在列表中:%1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>Select a database type.</source>
<translation>选择数据库类型。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <location filename="../dialogs/dbdialog.cpp" line="573"/>
<source>Auto-generated</source>
<translation>自动产生</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <location filename="../dialogs/dbdialog.cpp" line="578"/>
<source>Type the name</source>
<translation>输入名字</translation>
</message>
@@ -2077,9 +2151,31 @@ Browsing other pages will be possible after the row counting is done.</source>
</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>
@@ -2094,344 +2190,366 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>过滤名</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="102"/>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Paste</source>
<translation>粘贴</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Select all</source>
<translation>全选</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Create a group</source>
<translation>创建分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Delete the group</source>
<translation>删除分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Rename the group</source>
<translation>重命名分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Add a database</source>
<translation>添加数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Edit the database</source>
<translation>编辑数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Remove the database</source>
<translation>移除数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Connect to the database</source>
<translation>连接到数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Disconnect from the database</source>
<translation>断开数据库连接</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Import</source>
<translation>导入</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Export the database</source>
<translation>导数该数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Convert database type</source>
<translation>转换数据库类型</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Vacuum</source>
<translation>清理</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Integrity check</source>
<translation>检查完整性</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Create a table</source>
<translation>新建表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Edit the table</source>
<translation>编辑该表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Delete the table</source>
<translation>删除该表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Export the table</source>
<translation>导出该表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Import into the table</source>
<translation>导入到该表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Populate table</source>
<translation>填充表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create similar table</source>
<translation>创建一个相似的表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Reset autoincrement sequence</source>
<translation>重设 autoincrement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Create an index</source>
<translation>创建索引</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Edit the index</source>
<translation>编辑该索引</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Delete the index</source>
<translation>删除该索引</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Create a trigger</source>
<translation>创建触发器</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Edit the trigger</source>
<translation>编辑该触发器</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Delete the trigger</source>
<translation>删除该触发器</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Create a view</source>
<translation>创建视图</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Edit the view</source>
<translation>编辑该视图</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Delete the view</source>
<translation>删除该视图</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Add a column</source>
<translation>添加字段</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Edit the column</source>
<translation>编辑该字段</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Delete the column</source>
<translation>删除该字段</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Delete selected items</source>
<translation>删除已选项目</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Clear filter</source>
<translation>清除过滤器</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
<source>Refresh all database schemas</source>
<translation>刷新全部数据库的结构</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <location filename="../dbtree/dbtree.cpp" line="143"/>
<source>Refresh selected database schema</source>
<translation>刷新已选数据库的结构</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="142"/>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="144"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Erase table data</source>
<translation>擦除该表的数据</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="312"/>
- <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <location filename="../dbtree/dbtree.cpp" line="319"/>
+ <location filename="../dbtree/dbtree.cpp" line="324"/>
<source>Database</source>
<translation>数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <location filename="../dbtree/dbtree.cpp" line="334"/>
<source>Grouping</source>
<translation>分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="339"/>
+ <source>Generate query for table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Create group</source>
<translation>创建分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="1041"/>
<source>Group name</source>
<translation>分组名</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <location filename="../dbtree/dbtree.cpp" line="1044"/>
<source>Entry with name %1 already exists in group %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <location filename="../dbtree/dbtree.cpp" line="1062"/>
<source>Delete group</source>
<translation>删除分组</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <location filename="../dbtree/dbtree.cpp" line="1063"/>
<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="1019"/>
+ <location filename="../dbtree/dbtree.cpp" line="1126"/>
+ <source>Are you sure you want to remove database &apos;%1&apos; from the list?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1134"/>
+ <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="1136"/>
+ <source>Remove database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1442"/>
+ <source>Vacuum (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Delete database</source>
- <translation>删除数据库</translation>
+ <translation type="obsolete">删除数据库</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>您确定要删除数据库“%1”吗?</translation>
+ <translation type="obsolete">您确定要删除数据库“%1”吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1055"/>
- <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <location filename="../dbtree/dbtree.cpp" line="1173"/>
+ <location filename="../dbtree/dbtree.cpp" line="1366"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1075"/>
- <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <location filename="../dbtree/dbtree.cpp" line="1193"/>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation>在数据库%1上运行 VACUUM 命令时出错:%2</translation>
+ <translation type="obsolete">在数据库%1上运行 VACUUM 命令时出错:%2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation>VACUUM 命令执行完成。</translation>
+ <translation type="obsolete">VACUUM 命令执行完成。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <location filename="../dbtree/dbtree.cpp" line="1456"/>
<source>Integrity check (%1)</source>
<translation>完整性检查(%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Reset autoincrement</source>
<translation>重置autoincrement</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <location filename="../dbtree/dbtree.cpp" line="1492"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
<translation>您确定要重设“%1”的autoincrement吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <location filename="../dbtree/dbtree.cpp" line="1499"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
<translation>在重设表“%1”的autoincrement时出现错误:%2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <location filename="../dbtree/dbtree.cpp" line="1501"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
<translation>表“%1”的auincrement重设成功。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <location filename="../dbtree/dbtree.cpp" line="1518"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
<translation>您确定要删除表“%1”中的全部数据吗?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <location filename="../dbtree/dbtree.cpp" line="1526"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
<translation>删除表“%1”中的数据时出错:%2</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <location filename="../dbtree/dbtree.cpp" line="1530"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
<translation>表“%1”中的数据全部被删除。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <location filename="../dbtree/dbtree.cpp" line="1639"/>
<source>Following objects will be deleted: %1.</source>
<translation>以下内容将被删除:%1。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <location filename="../dbtree/dbtree.cpp" line="1642"/>
<source>Following databases will be removed from list: %1.</source>
<translation>以下数据库将从列表中移除:%1。</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <location filename="../dbtree/dbtree.cpp" line="1645"/>
<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="1543"/>
+ <location filename="../dbtree/dbtree.cpp" line="1647"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
<translation>%1&lt;br&gt;&lt;br&gt;继续?</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <location filename="../dbtree/dbtree.cpp" line="1649"/>
<source>Delete objects</source>
<translation>删除对象</translation>
</message>
@@ -2466,123 +2584,128 @@ All objects from this group will be moved to parent group.</source>
<context>
<name>DbTreeModel</name>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="423"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
<translation>数据库:%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="428"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
<translation>版本:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="431"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
<translation>文件大小:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="434"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
<translation>编码:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="439"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
<translation>错误:</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="449"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
<translation>表:%1</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="472"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
<translation>字段(%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="475"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
<translation>索引(%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="478"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
<translation>触发器(%1)</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Move</source>
<translation>移动</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Include data</source>
<translation>包含数据</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1100"/>
<source>Include indexes</source>
<translation>包含索引</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1101"/>
<source>Include triggers</source>
<translation>包含触发器</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1103"/>
<source>Abort</source>
<translation>中止</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1162"/>
+ <source>Could not add dropped database file &apos;%1&apos; automatically. Manual setup is necessary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1209"/>
<source>Referenced tables</source>
<translation>参照表</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1210"/>
<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="1185"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1219"/>
<source>Name conflict</source>
<translation>名字冲突</translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1220"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1233"/>
<source>SQL statements conversion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1241"/>
<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="1208"/>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1242"/>
<source>Would you like to ignore those errors and proceed?</source>
<translation>忽略错误并继续?</translation>
</message>
@@ -3333,102 +3456,175 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>索引</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <location filename="../dialogs/indexdialog.ui" line="88"/>
<source>On table:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <location filename="../dialogs/indexdialog.ui" line="142"/>
<source>Index name:</source>
<translation>索引名:</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <location filename="../dialogs/indexdialog.ui" line="128"/>
<source>Partial index condition</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <location filename="../dialogs/indexdialog.ui" line="135"/>
<source>Unique index</source>
<translation>唯一索引</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <location filename="../dialogs/indexdialog.ui" line="70"/>
<source>Column</source>
<translation type="unfinished">字段</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <location filename="../dialogs/indexdialog.ui" line="75"/>
<source>Collation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <location filename="../dialogs/indexdialog.ui" line="80"/>
<source>Sort</source>
<translation>排序</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <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="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>DDL</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <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="131"/>
+ <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="185"/>
+ <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="186"/>
+ <location filename="../dialogs/indexdialog.cpp" line="208"/>
<source>Select at least one column.</source>
<translation>至少选择一列</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <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="236"/>
+ <location filename="../dialogs/indexdialog.cpp" line="276"/>
<source>default</source>
<comment>index dialog</comment>
<translation>默认</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <location filename="../dialogs/indexdialog.cpp" line="281"/>
<source>Sort order</source>
<comment>table constraints</comment>
<translation>排序</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
- <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="752"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>错误</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="455"/>
+ <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="467"/>
+ <location filename="../dialogs/indexdialog.cpp" line="765"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>在执行SQL语句时发生了错误:%1</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 &apos;%1&apos; 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&apos;s forbidden to use &apos;SELECT&apos; 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"/>
@@ -3469,273 +3665,273 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>查看工具栏</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="107"/>
+ <location filename="../mainwindow.cpp" line="108"/>
<source>Configuration widgets</source>
<translation>配置部件</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="108"/>
+ <location filename="../mainwindow.cpp" line="109"/>
<source>Syntax highlighting engines</source>
<translation>语法高亮引擎</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="109"/>
+ <location filename="../mainwindow.cpp" line="110"/>
<source>Data editors</source>
<translation>数据编辑器</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="121"/>
+ <location filename="../mainwindow.cpp" line="122"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="123"/>
+ <location filename="../mainwindow.cpp" line="124"/>
<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="213"/>
+ <location filename="../mainwindow.cpp" line="214"/>
<source>You need to restart application to make the language change take effect.</source>
<translation>更改语言后重启程序生效。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open SQL editor</source>
<translation>打开SQL编辑器</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open DDL history</source>
<translation>打开数据库定义(DDL)历史</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open SQL functions editor</source>
<translation>打开SQL函数编辑器</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="260"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Import</source>
<translation>导入</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="262"/>
<source>Export</source>
<translation>导出</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="264"/>
<source>Open configuration dialog</source>
<translation>打开配置对话框</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows</source>
<translation>平铺窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows horizontally</source>
<translation>水平排列窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Tile windows vertically</source>
<translation>垂直排列窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Cascade windows</source>
<translation>层叠窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Next window</source>
<translation>下一个窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="270"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Previous window</source>
<translation>上一个窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>Hide status field</source>
<translation>隐藏状态栏</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close selected window</source>
<translation>关闭当前窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows but selected</source>
<translation>关闭其它窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Close all windows</source>
<translation>关闭全部窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="276"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Restore recently closed window</source>
<translation>恢复最近关闭的窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="278"/>
<source>Rename selected window</source>
<translation>重命名当前窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open Debug Console</source>
<translation>打开调试终端</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Open CSS Console</source>
<translation>打开CSS控制台</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Report a bug</source>
<translation>提交Bug</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>Propose a new feature</source>
<translation>提交新功能建议</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>About</source>
<translation>关于</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Licenses</source>
<translation>许可</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open home page</source>
<translation>访问主页</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>Open forum page</source>
<translation>访问论坛</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>User Manual</source>
<translation>用户手册</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="288"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>SQLite documentation</source>
<translation>SQLite文档</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="290"/>
<source>Report history</source>
<translation>报告历史</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="291"/>
+ <location filename="../mainwindow.cpp" line="292"/>
<source>Check for updates</source>
<translation>检查更新</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="329"/>
+ <location filename="../mainwindow.cpp" line="330"/>
<source>Database</source>
<comment>menubar</comment>
<translation>数据库</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="349"/>
+ <location filename="../mainwindow.cpp" line="350"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>结构</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="370"/>
+ <location filename="../mainwindow.cpp" line="371"/>
<source>View</source>
<comment>menubar</comment>
<translation>查看</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="374"/>
+ <location filename="../mainwindow.cpp" line="375"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>窗口列表</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="395"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>工具</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="409"/>
+ <location filename="../mainwindow.cpp" line="410"/>
<source>Help</source>
<translation>帮助</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="571"/>
+ <location filename="../mainwindow.cpp" line="572"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation>未能设置风格:%1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="644"/>
+ <location filename="../mainwindow.cpp" line="669"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="660"/>
+ <location filename="../mainwindow.cpp" line="685"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Rename window</source>
<translation>重命名窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="693"/>
+ <location filename="../mainwindow.cpp" line="718"/>
<source>Enter new name for the window:</source>
<translation>窗口的新名称:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="779"/>
+ <location filename="../mainwindow.cpp" line="804"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>有新更新 &lt;a href=&quot;%1&quot;&gt;点此查看更新详情&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="787"/>
+ <location filename="../mainwindow.cpp" line="812"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation>您使用的是最新版,不需要更新。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="904"/>
+ <location filename="../mainwindow.cpp" line="929"/>
<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="911"/>
+ <location filename="../mainwindow.cpp" line="936"/>
<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="916"/>
+ <location filename="../mainwindow.cpp" line="941"/>
<source>Could not add database %1 to list.</source>
<translation>未能将数据%1添加到列表</translation>
</message>
@@ -4135,127 +4331,127 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Data grid view</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <location filename="../datagrid/sqlqueryview.h" line="21"/>
<source>Copy cell(s) contents to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <location filename="../datagrid/sqlqueryview.h" line="23"/>
<source>Paste cell(s) contents from clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set empty value to selected cell(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Set NULL 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="27"/>
<source>Commit changes to cell(s) contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Rollback 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="29"/>
<source>Delete selected data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <location filename="../datagrid/sqlqueryview.h" line="30"/>
<source>Insert new data row</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.h" line="30"/>
+ <location filename="../datagrid/sqlqueryview.h" line="31"/>
<source>Open contents of selected cell in a separate editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="573"/>
+ <location filename="../dataview.cpp" line="590"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="583"/>
+ <location filename="../dataview.cpp" line="600"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="18"/>
+ <location filename="../dataview.h" line="19"/>
<source>Data view (both grid and form)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="19"/>
+ <location filename="../dataview.h" line="20"/>
<source>Refresh data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="20"/>
+ <location filename="../dataview.h" line="21"/>
<source>Switch to grid view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.h" line="21"/>
+ <location filename="../dataview.h" line="22"/>
<source>Switch to form view of the data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="26"/>
+ <location filename="../dbtree/dbtree.h" line="27"/>
<source>Database list</source>
<translation type="unfinished">数据库列表</translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="27"/>
+ <location filename="../dbtree/dbtree.h" line="28"/>
<source>Delete selected item</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="28"/>
+ <location filename="../dbtree/dbtree.h" line="29"/>
<source>Clear filter contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="29"/>
+ <location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh schema</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="30"/>
+ <location filename="../dbtree/dbtree.h" line="31"/>
<source>Refresh all schemas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="31"/>
+ <location filename="../dbtree/dbtree.h" line="32"/>
<source>Add database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="32"/>
+ <location filename="../dbtree/dbtree.h" line="33"/>
<source>Select all items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="33"/>
+ <location filename="../dbtree/dbtree.h" line="34"/>
<source>Copy selected item(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../dbtree/dbtree.h" line="35"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
<location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
@@ -4369,7 +4565,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.h" line="50"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">打开CSS控制台</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="12"/>
@@ -4482,6 +4678,11 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../sqleditor.h" line="43"/>
+ <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>
@@ -4515,7 +4716,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/editorwindow.h" line="27"/>
<source>Execute query</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">执行语句</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="28"/>
@@ -4553,106 +4754,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="30"/>
+ <location filename="../windows/tablewindow.h" line="31"/>
<source>Table window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="31"/>
+ <location filename="../windows/tablewindow.h" line="32"/>
<source>Refresh table structure</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="32"/>
+ <location filename="../windows/tablewindow.h" line="33"/>
<source>Add new column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="33"/>
+ <location filename="../windows/tablewindow.h" line="34"/>
<source>Edit selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="34"/>
+ <location filename="../windows/tablewindow.h" line="35"/>
<source>Delete selected column</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="35"/>
+ <location filename="../windows/tablewindow.h" line="36"/>
<source>Export table data</source>
<translation type="unfinished">导出表里的数据</translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="36"/>
+ <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="37"/>
+ <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="38"/>
+ <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="39"/>
+ <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="40"/>
+ <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="41"/>
+ <location filename="../windows/tablewindow.h" line="42"/>
<source>Add new index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="42"/>
+ <location filename="../windows/tablewindow.h" line="43"/>
<source>Edit selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="43"/>
+ <location filename="../windows/tablewindow.h" line="44"/>
<source>Delete selected index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.h" line="44"/>
+ <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="45"/>
+ <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="46"/>
+ <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="47"/>
+ <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="48"/>
+ <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="49"/>
+ <location filename="../windows/tablewindow.h" line="50"/>
<location filename="../windows/viewwindow.h" line="29"/>
<source>Go to previous tab</source>
<translation type="unfinished"></translation>
@@ -4896,47 +5097,53 @@ find next</source>
<translation>替换</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="255"/>
+ <location filename="../sqleditor.cpp" line="142"/>
+ <source>Toggle comment</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="256"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="434"/>
+ <location filename="../sqleditor.cpp" line="450"/>
<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="822"/>
+ <location filename="../sqleditor.cpp" line="838"/>
<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="1057"/>
+ <location filename="../sqleditor.cpp" line="1073"/>
<source>Save to file</source>
<translation>保存到文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="245"/>
+ <location filename="../sqleditor.cpp" line="246"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1069"/>
+ <location filename="../sqleditor.cpp" line="1085"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished">SQL文件 (*.sql);;所有文件 (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1070"/>
+ <location filename="../sqleditor.cpp" line="1086"/>
<source>Open file</source>
<translation>打开文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1079"/>
+ <location filename="../sqleditor.cpp" line="1095"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1288"/>
+ <location filename="../sqleditor.cpp" line="1304"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>已搜索到文档底部。点击查找从头程序开始搜索。</translation>
</message>
@@ -4944,36 +5151,36 @@ find next</source>
<context>
<name>SqlQueryItem</name>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Column:</source>
<comment>data view tooltip</comment>
<translation>字段:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="253"/>
<source>Data type:</source>
<comment>data view</comment>
<translation>数据类型:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="256"/>
<source>Table:</source>
<comment>data view tooltip</comment>
<translation>表:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="286"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
<translation>约束:</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="402"/>
<source>This cell is not editable, because: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="419"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
<translation type="unfinished"></translation>
</message>
@@ -4981,83 +5188,88 @@ find next</source>
<context>
<name>SqlQueryItemDelegate</name>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="56"/>
<source>Cannot edit this cell. Details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="50"/>
<source>The row is marked for deletion.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="303"/>
+ <source>Foreign key for column %2 has more than %1 possible values. It&apos;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="63"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="70"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="469"/>
<source>Only one query can be executed simultaneously.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="103"/>
<source>Uncommited data</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="96"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="104"/>
<source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="343"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="351"/>
<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="374"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="359"/>
<source>Could not begin transaction on the database. Details: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="405"/>
<source>An error occurred while commiting the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="430"/>
<source>An error occurred while rolling back the transaction: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="625"/>
<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="599"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="651"/>
<source>An error occurred while commiting the data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1116"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1173"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1170"/>
<source>Error while loading query results: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Insert multiple rows</source>
<translation type="unfinished">插入多行</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1564"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5065,92 +5277,117 @@ find next</source>
<context>
<name>SqlQueryView</name>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="55"/>
+ <source>Go to referenced row in...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Copy as...</source>
<translation>复制为...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Paste</source>
<translation>粘贴</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Paste as...</source>
<translation>粘贴为...</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Set NULL values</source>
<translation>设置为NULL</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Erase values</source>
<translation>擦除</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="78"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Edit value in editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="79"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Rollback</source>
<translation>回滚</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Commit selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="88"/>
<source>Rollback selected cells</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="83"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="93"/>
<source>Define columns to sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="84"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="94"/>
<source>Remove custom sorting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="95"/>
<source>Insert row</source>
<translation>插入行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="96"/>
<source>Insert multiple rows</source>
<translation>插入多行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="97"/>
<source>Delete selected row</source>
<translation>删除已选行</translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="256"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="155"/>
+ <source>Generate query for selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="312"/>
<source>No items selected to paste clipboard contents to.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlqueryview.cpp" line="510"/>
+ <location filename="../datagrid/sqlqueryview.cpp" line="370"/>
+ <source>Go to referenced row in table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="382"/>
+ <source>table &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="403"/>
+ <source>Referenced row (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="668"/>
<source>Edit value</source>
<translation>编辑值</translation>
</message>
@@ -5158,12 +5395,12 @@ find next</source>
<context>
<name>SqlTableModel</name>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="75"/>
<source>Error while commiting new row: %1</source>
<translation>写入新行时发生了错误:%1</translation>
</message>
<message>
- <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <location filename="../datagrid/sqltablemodel.cpp" line="133"/>
<source>Error while deleting row from table %1: %2</source>
<translation>删除行时发生了错误 %1:%2</translation>
</message>
@@ -5339,7 +5576,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/>
<source>Sort order</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">排序</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/>
@@ -5355,19 +5592,58 @@ but it&apos;s okay to use them anyway.</source>
<context>
<name>TableStructureModel</name>
<message>
- <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <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="301"/>
+ <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>
@@ -5387,6 +5663,7 @@ but it&apos;s okay to use them anyway.</source>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
+ <location filename="../windows/tablewindow.cpp" line="1566"/>
<source>Data</source>
<translation type="unfinished">数据</translation>
</message>
@@ -5408,399 +5685,409 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../windows/tablewindow.ui" line="282"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="191"/>
+ <location filename="../windows/tablewindow.cpp" line="200"/>
<source>Export table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="192"/>
+ <location filename="../windows/tablewindow.cpp" line="201"/>
<source>Import data to table</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="193"/>
+ <location filename="../windows/tablewindow.cpp" line="202"/>
<source>Populate table</source>
<comment>table window</comment>
<translation type="unfinished">填充表</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="207"/>
+ <location filename="../windows/tablewindow.cpp" line="216"/>
<source>Refresh structure</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="209"/>
+ <location filename="../windows/tablewindow.cpp" line="218"/>
<source>Commit structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="210"/>
+ <location filename="../windows/tablewindow.cpp" line="219"/>
<source>Rollback structure changes</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="211"/>
+ <location filename="../windows/tablewindow.cpp" line="220"/>
<source>Add column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="212"/>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
<source>Edit column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="213"/>
- <location filename="../windows/tablewindow.cpp" line="300"/>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="309"/>
<source>Delete column</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="214"/>
+ <location filename="../windows/tablewindow.cpp" line="223"/>
<source>Move column up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="215"/>
+ <location filename="../windows/tablewindow.cpp" line="224"/>
<source>Move column down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="221"/>
+ <location filename="../windows/tablewindow.cpp" line="230"/>
<source>Create similar table</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">创建一个相似的表</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="222"/>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
<source>Reset autoincrement value</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="225"/>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
<source>Add table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="226"/>
+ <location filename="../windows/tablewindow.cpp" line="235"/>
<source>Edit table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="227"/>
+ <location filename="../windows/tablewindow.cpp" line="236"/>
<source>Delete table constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="228"/>
+ <location filename="../windows/tablewindow.cpp" line="237"/>
<source>Move table constraint up</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="229"/>
+ <location filename="../windows/tablewindow.cpp" line="238"/>
<source>Move table constraint down</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="231"/>
+ <location filename="../windows/tablewindow.cpp" line="240"/>
<source>Add table primary key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="232"/>
+ <location filename="../windows/tablewindow.cpp" line="241"/>
<source>Add table foreign key</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="233"/>
+ <location filename="../windows/tablewindow.cpp" line="242"/>
<source>Add table unique constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="234"/>
+ <location filename="../windows/tablewindow.cpp" line="243"/>
<source>Add table check constraint</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="252"/>
+ <location filename="../windows/tablewindow.cpp" line="261"/>
<source>Refresh index list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="254"/>
+ <location filename="../windows/tablewindow.cpp" line="263"/>
<source>Create index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="255"/>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
<source>Edit index</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="256"/>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
<source>Delete index</source>
<comment>table window</comment>
<translation type="unfinished">删除索引</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="262"/>
+ <location filename="../windows/tablewindow.cpp" line="271"/>
<source>Refresh trigger list</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="264"/>
+ <location filename="../windows/tablewindow.cpp" line="273"/>
<source>Create trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="265"/>
+ <location filename="../windows/tablewindow.cpp" line="274"/>
<source>Edit trigger</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="266"/>
+ <location filename="../windows/tablewindow.cpp" line="275"/>
<source>Delete trigger</source>
<comment>table window</comment>
<translation type="unfinished">删除触发器</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="299"/>
+ <location filename="../windows/tablewindow.cpp" line="308"/>
<source>Are you sure you want to delete column &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="327"/>
+ <location filename="../windows/tablewindow.cpp" line="336"/>
<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="329"/>
+ <location filename="../windows/tablewindow.cpp" line="338"/>
<source>Table modification</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="467"/>
+ <location filename="../windows/tablewindow.cpp" line="476"/>
<source>Could not load data for table %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="580"/>
+ <location filename="../windows/tablewindow.cpp" line="595"/>
<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="635"/>
+ <location filename="../windows/tablewindow.cpp" line="650"/>
<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="641"/>
+ <location filename="../windows/tablewindow.cpp" line="656"/>
<source>Could not restore window &apos;%1&apos;, 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="648"/>
+ <location filename="../windows/tablewindow.cpp" line="663"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="657"/>
+ <location filename="../windows/tablewindow.cpp" line="672"/>
<source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="682"/>
- <location filename="../windows/tablewindow.cpp" line="684"/>
+ <location filename="../windows/tablewindow.cpp" line="697"/>
+ <location filename="../windows/tablewindow.cpp" line="699"/>
<source>New table %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="835"/>
+ <location filename="../windows/tablewindow.cpp" line="824"/>
+ <source>Commited changes for table &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="826"/>
+ <source>Commited changes for table &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="858"/>
<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="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Reset autoincrement</source>
<translation type="unfinished">重置autoincrement</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="857"/>
+ <location filename="../windows/tablewindow.cpp" line="880"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">您确定要重设“%1”的autoincrement吗?</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="864"/>
+ <location filename="../windows/tablewindow.cpp" line="887"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">在重设表“%1”的autoincrement时出现错误:%2</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="866"/>
+ <location filename="../windows/tablewindow.cpp" line="889"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">表“%1”的auincrement重设成功。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="946"/>
+ <location filename="../windows/tablewindow.cpp" line="969"/>
<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="955"/>
+ <location filename="../windows/tablewindow.cpp" line="978"/>
<source>Cannot create a table without at least one column.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="981"/>
+ <location filename="../windows/tablewindow.cpp" line="1004"/>
<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="988"/>
+ <location filename="../windows/tablewindow.cpp" line="1011"/>
<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="1125"/>
+ <location filename="../windows/tablewindow.cpp" line="1161"/>
<source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
<comment>table window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <location filename="../windows/tablewindow.cpp" line="1162"/>
<source>Delete constraint</source>
<comment>table window</comment>
<translation type="unfinished">删除约束</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <location filename="../windows/tablewindow.cpp" line="1216"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished">未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished">未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <location filename="../windows/tablewindow.cpp" line="1262"/>
<source>Uncommited changes</source>
<translation type="unfinished">未提交的更改</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <location filename="../windows/tablewindow.cpp" line="1263"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <location filename="../windows/tablewindow.cpp" line="1266"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <location filename="../windows/tablewindow.cpp" line="1447"/>
<source>Name</source>
<comment>table window indexes</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <location filename="../windows/tablewindow.cpp" line="1448"/>
<source>Unique</source>
<comment>table window indexes</comment>
<translation type="unfinished">唯一</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <location filename="../windows/tablewindow.cpp" line="1449"/>
<source>Columns</source>
<comment>table window indexes</comment>
<translation type="unfinished">字段</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <location filename="../windows/tablewindow.cpp" line="1450"/>
<source>Partial index condition</source>
<comment>table window indexes</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <location filename="../windows/tablewindow.cpp" line="1504"/>
<source>Name</source>
<comment>table window triggers</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <location filename="../windows/tablewindow.cpp" line="1505"/>
<source>Event</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <location filename="../windows/tablewindow.cpp" line="1506"/>
<source>Condition</source>
<comment>table window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <location filename="../windows/tablewindow.cpp" line="1507"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">详情</translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <location filename="../windows/tablewindow.cpp" line="1608"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <location filename="../windows/tablewindow.cpp" line="1610"/>
<source>Table window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <location filename="../windows/tablewindow.cpp" line="1612"/>
<source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
@@ -5885,7 +6172,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/triggerdialog.ui" line="132"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="159"/>
@@ -5956,201 +6243,272 @@ Do you want to commit the structure, or do you want to go back to the structure
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="77"/>
+ <location filename="../windows/viewwindow.ui" line="113"/>
+ <source>Output column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="835"/>
<source>Data</source>
<translation>数据</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="87"/>
+ <location filename="../windows/viewwindow.ui" line="166"/>
<source>Triggers</source>
<translation>触发器</translation>
</message>
<message>
- <location filename="../windows/viewwindow.ui" line="119"/>
+ <location filename="../windows/viewwindow.ui" line="198"/>
<source>DDL</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">DDL</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="103"/>
- <location filename="../windows/viewwindow.cpp" line="109"/>
+ <location filename="../windows/viewwindow.cpp" line="108"/>
+ <location filename="../windows/viewwindow.cpp" line="114"/>
<source>Could not restore window &apos;%1&apos;, 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="116"/>
+ <location filename="../windows/viewwindow.cpp" line="121"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="122"/>
+ <location filename="../windows/viewwindow.cpp" line="127"/>
<source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="131"/>
+ <location filename="../windows/viewwindow.cpp" line="136"/>
<source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="156"/>
- <location filename="../windows/viewwindow.cpp" line="158"/>
+ <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="283"/>
+ <location filename="../windows/viewwindow.cpp" line="311"/>
<source>Refresh the view</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="285"/>
+ <location filename="../windows/viewwindow.cpp" line="313"/>
<source>Commit the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="286"/>
+ <location filename="../windows/viewwindow.cpp" line="314"/>
<source>Rollback the view changes</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="293"/>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>Explicit column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="324"/>
+ <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="325"/>
+ <source>Add column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="326"/>
+ <source>Edit column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="327"/>
+ <source>Delete column</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="328"/>
+ <source>Move column up</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="329"/>
+ <source>Move column down</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="334"/>
<source>Refresh trigger list</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="295"/>
+ <location filename="../windows/viewwindow.cpp" line="336"/>
<source>Create new trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="296"/>
+ <location filename="../windows/viewwindow.cpp" line="337"/>
<source>Edit selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="297"/>
+ <location filename="../windows/viewwindow.cpp" line="338"/>
<source>Delete selected trigger</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="318"/>
+ <location filename="../windows/viewwindow.cpp" line="359"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="320"/>
+ <location filename="../windows/viewwindow.cpp" line="361"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="322"/>
+ <location filename="../windows/viewwindow.cpp" line="363"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="463"/>
+ <location filename="../windows/viewwindow.cpp" line="560"/>
<source>Could not load data for view %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="474"/>
+ <location filename="../windows/viewwindow.cpp" line="572"/>
<source>Uncommited changes</source>
<translation type="unfinished">未提交的更改</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="475"/>
+ <location filename="../windows/viewwindow.cpp" line="573"/>
<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="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Go back to structure tab</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="478"/>
+ <location filename="../windows/viewwindow.cpp" line="576"/>
<source>Commit modifications and browse data.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="536"/>
+ <location filename="../windows/viewwindow.cpp" line="627"/>
+ <source>Commited changes for view &apos;%1&apos; successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="629"/>
+ <source>Commited changes for view &apos;%1&apos; (named before &apos;%2&apos;) successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="640"/>
<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="614"/>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <source>Override columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="782"/>
+ <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="805"/>
+ <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="866"/>
<source>Name</source>
<comment>view window triggers</comment>
<translation type="unfinished">名称</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="615"/>
+ <location filename="../windows/viewwindow.cpp" line="867"/>
<source>Instead of</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="616"/>
+ <location filename="../windows/viewwindow.cpp" line="868"/>
<source>Condition</source>
<comment>view window triggers</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="617"/>
+ <location filename="../windows/viewwindow.cpp" line="869"/>
<source>Details</source>
<comment>table window triggers</comment>
<translation type="unfinished">详情</translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="657"/>
+ <location filename="../windows/viewwindow.cpp" line="909"/>
<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="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<source>Empty name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="692"/>
+ <location filename="../windows/viewwindow.cpp" line="956"/>
<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="707"/>
+ <location filename="../windows/viewwindow.cpp" line="968"/>
<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="715"/>
+ <location filename="../windows/viewwindow.cpp" line="976"/>
<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="741"/>
+ <location filename="../windows/viewwindow.cpp" line="1002"/>
<source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../windows/viewwindow.cpp" line="754"/>
+ <location filename="../windows/viewwindow.cpp" line="1015"/>
<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="756"/>
+ <location filename="../windows/viewwindow.cpp" line="1017"/>
<source>View modification</source>
<comment>view window</comment>
<translation type="unfinished"></translation>
diff --git a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
index 25a8e27..75ea87d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
+++ b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h
@@ -63,35 +63,44 @@ CFG_CATEGORIES(Ui,
CFG_ENTRY(QColor, JavaScriptMarker, "#ffff00")
)
+ CFG_CATEGORY(DbList,
+ )
+
CFG_CATEGORY(General,
- CFG_ENTRY(QString, DataViewTabs, QString())
- CFG_ENTRY(QString, SqlEditorTabs, QString())
- CFG_ENTRY(QString, SqlEditorDbListOrder, "LikeDbTree")
- CFG_ENTRY(bool, ExpandTables, true)
- CFG_ENTRY(bool, ExpandViews, true)
- CFG_ENTRY(bool, SortObjects, true)
- CFG_ENTRY(bool, SortColumns, false)
- CFG_ENTRY(bool, ExecuteCurrentQueryOnly, true)
- CFG_ENTRY(bool, ShowSystemObjects, false)
- CFG_ENTRY(bool, ShowDbTreeLabels, true) // any labels at all
- CFG_ENTRY(bool, ShowRegularTableLabels, false)
- CFG_ENTRY(bool, ShowVirtualTableLabels, true)
- CFG_ENTRY(int, NumberOfRowsPerPage, 1000)
- CFG_ENTRY(QString, Style, &Cfg::getStyleDefaultValue)
- CFG_ENTRY(Cfg::Session, Session, Cfg::Session())
- CFG_ENTRY(bool, RestoreSession, true)
- CFG_ENTRY(bool, DontShowDdlPreview, false)
- CFG_ENTRY(bool, OpenTablesOnData, false)
- CFG_ENTRY(bool, OpenViewsOnData, false)
- CFG_ENTRY(Cfg::DataEditorsOrder, DataEditorsOrder, Cfg::DataEditorsOrder())
- CFG_ENTRY(QString, FileDialogLastPath, QString())
- CFG_ENTRY(int, MaxInitialColumnWith, 600)
- CFG_ENTRY(bool, LanguageAsked, false)
- CFG_ENTRY(bool, OpenMaximized, true)
- CFG_ENTRY(QString, DockLayout, "vertical")
- CFG_ENTRY(QString, CustomCss, QString())
- CFG_ENTRY(bool, CompactLayout, true)
- CFG_ENTRY(int, InsertRowPlacement, Cfg::BEFORE_CURRENT)
+ CFG_ENTRY(QString, DataViewTabs, QString())
+ CFG_ENTRY(QString, SqlEditorTabs, QString())
+ CFG_ENTRY(QString, SqlEditorDbListOrder, "LikeDbTree")
+ CFG_ENTRY(bool, ExpandTables, true)
+ CFG_ENTRY(bool, ExpandViews, true)
+ CFG_ENTRY(bool, SortObjects, true)
+ CFG_ENTRY(bool, SortColumns, false)
+ CFG_ENTRY(bool, ExecuteCurrentQueryOnly, true)
+ CFG_ENTRY(bool, ShowSystemObjects, false)
+ CFG_ENTRY(bool, ShowDbTreeLabels, true) // any labels at all
+ CFG_ENTRY(bool, ShowRegularTableLabels, false)
+ CFG_ENTRY(bool, ShowVirtualTableLabels, true)
+ CFG_ENTRY(int, NumberOfRowsPerPage, 1000)
+ CFG_ENTRY(QString, Style, &Cfg::getStyleDefaultValue)
+ CFG_ENTRY(Cfg::Session, Session, Cfg::Session())
+ CFG_ENTRY(bool, RestoreSession, true)
+ CFG_ENTRY(bool, DontShowDdlPreview, false)
+ CFG_ENTRY(bool, OpenTablesOnData, false)
+ CFG_ENTRY(bool, DataTabAsFirstInTables, false)
+ CFG_ENTRY(bool, OpenViewsOnData, false)
+ CFG_ENTRY(bool, DataTabAsFirstInViews, false)
+ CFG_ENTRY(bool, AutoOpenStatusField, true)
+ CFG_ENTRY(bool, NewDbNotPermanentByDefault, false)
+ CFG_ENTRY(bool, BypassDbDialogWhenDropped, false)
+ CFG_ENTRY(Cfg::DataEditorsOrder, DataEditorsOrder, Cfg::DataEditorsOrder())
+ CFG_ENTRY(QString, FileDialogLastPath, QString())
+ CFG_ENTRY(int, MaxInitialColumnWith, 600)
+ CFG_ENTRY(bool, LanguageAsked, false)
+ CFG_ENTRY(bool, OpenMaximized, true)
+ CFG_ENTRY(QString, DockLayout, "vertical")
+ CFG_ENTRY(QString, CustomCss, QString())
+ CFG_ENTRY(bool, CompactLayout, true)
+ CFG_ENTRY(int, InsertRowPlacement, Cfg::BEFORE_CURRENT)
+ CFG_ENTRY(bool, ShowDataViewTooltips, true)
)
)
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp
index 80c4567..1c817de 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablestructuremodel.cpp
@@ -128,14 +128,16 @@ QVariant TableStructureModel::data(const QModelIndex& index, int role) const
QVariant TableStructureModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if (role != Qt::DisplayRole)
- return QAbstractTableModel::headerData(section, orientation, role);
+ if (role == Qt::DisplayRole)
+ {
+ if (orientation == Qt::Vertical)
+ return section + 1;
- if (orientation == Qt::Vertical)
- return section + 1;
+ // Now it's horizontal orientation with DisplayRole
+ return columnLabel(section);
+ }
- // Now it's horizontal orientation with DisplayRole
- return columnLabel(section);
+ return QAbstractTableModel::headerData(section, orientation, role);
}
TableStructureModel::Columns TableStructureModel::getHeaderColumn(int colIdx) const
@@ -300,17 +302,17 @@ QString TableStructureModel::columnLabel(int column) const
case Columns::TYPE:
return tr("Data type", "table structure columns");
case Columns::PK:
- return "P";
+ return tr("Primary\nKey", "table structure columns");
case Columns::FK:
- return "F";
+ return tr("Foreign\nKey", "table structure columns");
case Columns::UNIQUE:
- return "U";
+ return tr("Unique", "table structure columns");
case Columns::CHECK:
- return "H";
+ return tr("Check", "table structure columns");
case Columns::NOTNULL:
- return "N";
+ return tr("Not\nNULL", "table structure columns");
case Columns::COLLATE:
- return "C";
+ return tr("Collate", "table structure columns");
case Columns::DEFAULT:
return tr("Default value", "table structure columns");
}
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
index cd1ba72..fd344e8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
@@ -33,9 +33,11 @@
#include "services/importmanager.h"
#include "dbobjectdialogs.h"
#include "dialogs/exportdialog.h"
+#include "common/centerediconitemdelegate.h"
#include "themetuner.h"
#include "dialogs/importdialog.h"
#include "dialogs/populatedialog.h"
+#include "datagrid/sqlqueryitem.h"
#include <QMenu>
#include <QToolButton>
#include <QLabel>
@@ -46,7 +48,6 @@
#include <QPushButton>
#include <QDebug>
#include <QStyleFactory>
-#include <datagrid/sqlqueryitem.h>
// TODO extend QTableView for columns and constraints, so they show full-row-width drop indicator,
// instead of single column drop indicator.
@@ -142,6 +143,9 @@ void TableWindow::init()
{
ui->setupUi(this);
ui->structureSplitter->setStretchFactor(0, 2);
+ ui->structureView->horizontalHeader()->setSectionsClickable(false);
+ ui->structureView->verticalHeader()->setSectionsClickable(false);
+ constraintColumnsDelegate = new CenteredIconItemDelegate(this);
#ifdef Q_OS_MACX
QStyle *fusion = QStyleFactory::create("Fusion");
@@ -159,6 +163,7 @@ void TableWindow::init()
ui->dataView->init(dataModel);
initActions();
+ updateTabsOrder();
connect(dataModel, SIGNAL(executionSuccessful()), this, SLOT(executionSuccessful()));
connect(dataModel, SIGNAL(executionFailed(QString)), this, SLOT(executionFailed(QString)));
@@ -168,6 +173,9 @@ void TableWindow::init()
connect(ui->tableNameEdit, SIGNAL(textChanged(QString)), this, SLOT(nameChanged()));
connect(ui->indexList, SIGNAL(itemSelectionChanged()), this, SLOT(updateIndexesState()));
connect(ui->triggerList, SIGNAL(itemSelectionChanged()), this, SLOT(updateTriggersState()));
+ connect(CFG_UI.General.DataTabAsFirstInTables, SIGNAL(changed(const QVariant&)), this, SLOT(updateTabsOrder()));
+ connect(ui->structureView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(structureViewDoubleClicked(const QModelIndex&)));
+ connect(ui->tableConstraintsView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(constraintsViewDoubleClicked(const QModelIndex&)));
structureExecutor = new ChainExecutor(this);
connect(structureExecutor, SIGNAL(success()), this, SLOT(changesSuccessfullyCommited()));
@@ -253,9 +261,9 @@ void TableWindow::createIndexActions()
createAction(REFRESH_INDEXES, ICONS.RELOAD, tr("Refresh index list", "table window"), this, SLOT(updateIndexes()), ui->indexToolBar, ui->indexList);
ui->indexToolBar->addSeparator();
createAction(ADD_INDEX, ICONS.INDEX_ADD, tr("Create index", "table window"), this, SLOT(addIndex()), ui->indexToolBar, ui->indexList);
- createAction(EDIT_INDEX, ICONS.INDEX_EDIT, tr("Edit index", "table window"), this, SLOT(editIndex()), ui->indexToolBar, ui->indexList);
+ createAction(EDIT_INDEX, ICONS.INDEX_EDIT, tr("Edit index", "table window"), this, SLOT(editCurrentIndex()), ui->indexToolBar, ui->indexList);
createAction(DEL_INDEX, ICONS.INDEX_DEL, tr("Delete index", "table window"), this, SLOT(delIndex()), ui->indexToolBar, ui->indexList);
- connect(ui->indexList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editIndex()));
+ connect(ui->indexList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(indexViewDoubleClicked(QModelIndex)));
}
void TableWindow::createTriggerActions()
@@ -265,14 +273,14 @@ void TableWindow::createTriggerActions()
createAction(ADD_TRIGGER, ICONS.TRIGGER_ADD, tr("Create trigger", "table window"), this, SLOT(addTrigger()), ui->triggerToolBar, ui->triggerList);
createAction(EDIT_TRIGGER, ICONS.TRIGGER_EDIT, tr("Edit trigger", "table window"), this, SLOT(editTrigger()), ui->triggerToolBar, ui->triggerList);
createAction(DEL_TRIGGER, ICONS.TRIGGER_DEL, tr("Delete trigger", "table window"), this, SLOT(delTrigger()), ui->triggerToolBar, ui->triggerList);
- connect(ui->triggerList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editTrigger()));
+ connect(ui->triggerList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(triggerViewDoubleClicked(QModelIndex)));
}
void TableWindow::editColumn(const QModelIndex& idx)
{
if (!idx.isValid())
{
- qWarning() << "Called TableWindow::editColumn() with invalid index.";
+ addColumn();
return;
}
@@ -352,6 +360,8 @@ void TableWindow::executeStructureChanges()
modifyingThisTable = true;
structureExecutor->setDb(db);
structureExecutor->setQueries(sqls);
+ structureExecutor->setDisableForeignKeys(true);
+ structureExecutor->setDisableObjectDropsDetection(true);
widgetCover->show();
structureExecutor->exec();
}
@@ -458,23 +468,27 @@ void TableWindow::setupDefShortcuts()
void TableWindow::executionSuccessful()
{
- modifyingThisTable = false;
dataLoaded = true;
}
void TableWindow::executionFailed(const QString& errorText)
{
- modifyingThisTable = false;
notifyError(tr("Could not load data for table %1. Error details: %2").arg(table).arg(errorText));
}
void TableWindow::initDbAndTable()
{
+ int totalConstrCols = 6;
if (db->getVersion() == 2)
{
ui->withoutRowIdCheck->setVisible(false);
+ totalConstrCols -= 2;
}
+ totalConstrCols += 2; // we start at 3rd column
+ for (int colIdx = 2; colIdx < totalConstrCols; colIdx++)
+ ui->structureView->setItemDelegateForColumn(colIdx, constraintColumnsDelegate);
+
if (existingTable)
{
dataModel->setDb(db);
@@ -785,6 +799,8 @@ void TableWindow::commitStructure(bool skipWarning)
void TableWindow::changesSuccessfullyCommited()
{
+ modifyingThisTable = false;
+
QStringList sqls = structureExecutor->getQueries();
CFG->addDdlHistory(sqls.join("\n"), db->getName(), db->getPath());
@@ -804,6 +820,11 @@ void TableWindow::changesSuccessfullyCommited()
updateNewTableState();
updateWindowTitle();
+ if (oldTable.compare(table, Qt::CaseInsensitive) == 0 || oldTable.isEmpty())
+ notifyInfo(tr("Commited changes for table '%1' successfly.").arg(table));
+ else
+ notifyInfo(tr("Commited changes for table '%1' (named before '%2') successfly.").arg(table, oldTable));
+
DBTREE->refreshSchema(db);
if (tableModifier)
@@ -832,6 +853,7 @@ void TableWindow::changesFailedToCommit(int errorCode, const QString& errorText)
{
qDebug() << "TableWindow::changesFailedToCommit:" << errorCode << errorText;
+ modifyingThisTable = false;
widgetCover->hide();
notifyError(tr("Could not commit table structure. Error message: %1", "table window").arg(errorText));
}
@@ -1011,8 +1033,8 @@ TokenList TableWindow::indexColumnTokens(SqliteCreateIndexPtr index)
if (index->indexedColumns.size() == 0)
return TokenList();
- SqliteIndexedColumn* firstCol = index->indexedColumns.first();
- SqliteIndexedColumn* lastCol = index->indexedColumns.last();
+ SqliteOrderBy* firstCol = index->indexedColumns.first();
+ SqliteOrderBy* lastCol = index->indexedColumns.last();
if (firstCol->tokens.size() == 0)
return TokenList();
@@ -1048,9 +1070,9 @@ QString TableWindow::getCurrentTrigger() const
void TableWindow::applyInitialTab()
{
if (existingTable && !table.isNull() && CFG_UI.General.OpenTablesOnData.get())
- ui->tabWidget->setCurrentIndex(1);
+ ui->tabWidget->setCurrentIndex(getDataTabIdx());
else
- ui->tabWidget->setCurrentIndex(0);
+ ui->tabWidget->setCurrentIndex(getStructureTabIdx());
}
void TableWindow::resizeStructureViewColumns()
@@ -1060,6 +1082,16 @@ void TableWindow::resizeStructureViewColumns()
ui->structureView->resizeColumnToContents(c);
}
+int TableWindow::getDataTabIdx() const
+{
+ return ui->tabWidget->indexOf(ui->dataTab);
+}
+
+int TableWindow::getStructureTabIdx() const
+{
+ return ui->tabWidget->indexOf(ui->structureTab);
+}
+
void TableWindow::updateDdlTab()
{
createTable->rebuildTokens();
@@ -1103,7 +1135,10 @@ void TableWindow::delConstraint()
void TableWindow::editConstraint(const QModelIndex& idx)
{
if (!idx.isValid())
+ {
+ addConstraint();
return;
+ }
SqliteCreateTable::Constraint* constr = structureConstraintsModel->getConstraint(idx.row());
ConstraintDialog dialog(ConstraintDialog::EDIT, constr, createTable.data(), db, this);
@@ -1217,39 +1252,37 @@ void TableWindow::createSimilarTable()
void TableWindow::tabChanged(int newTab)
{
- switch (newTab)
+ if (tabsMoving)
+ return;
+
+ if (newTab == getDataTabIdx())
{
- case 1:
+ if (isModified())
{
- if (isModified())
- {
- int res = QMessageBox::question(this, tr("Uncommited changes"),
- tr("There are uncommited structure modifications. You cannot browse or edit data until you have "
- "table structure settled.\n"
- "Do you want to commit the structure, or do you want to go back to the structure tab?"),
- tr("Go back to structure tab"), tr("Commit modifications and browse data."));
-
- ui->tabWidget->setCurrentIndex(0);
- if (res == 1)
- commitStructure(true);
-
- break;
- }
+ int res = QMessageBox::question(this, tr("Uncommited changes"),
+ tr("There are uncommited structure modifications. You cannot browse or edit data until you have "
+ "table structure settled.\n"
+ "Do you want to commit the structure, or do you want to go back to the structure tab?"),
+ tr("Go back to structure tab"), tr("Commit modifications and browse data."));
- if (!dataLoaded)
- ui->dataView->refreshData();
+ ui->tabWidget->setCurrentIndex(0);
+ if (res == 1)
+ commitStructure(true);
- break;
+ return;
}
+
+ if (!dataLoaded)
+ ui->dataView->refreshData();
}
}
-void TableWindow::on_structureView_doubleClicked(const QModelIndex &index)
+void TableWindow::structureViewDoubleClicked(const QModelIndex &index)
{
editColumn(index);
}
-void TableWindow::on_tableConstraintsView_doubleClicked(const QModelIndex &index)
+void TableWindow::constraintsViewDoubleClicked(const QModelIndex &index)
{
editConstraint(index);
}
@@ -1280,7 +1313,7 @@ void TableWindow::addIndex()
updateIndexes();
}
-void TableWindow::editIndex()
+void TableWindow::editCurrentIndex()
{
QString index = getCurrentIndex();
if (index.isNull())
@@ -1291,6 +1324,22 @@ void TableWindow::editIndex()
updateIndexes();
}
+void TableWindow::indexViewDoubleClicked(const QModelIndex& idx)
+{
+ if (!idx.isValid())
+ {
+ addIndex();
+ return;
+ }
+
+ QString index = ui->indexList->item(idx.row(), 0)->text();
+
+ DbObjectDialogs dialogs(db, this);
+ dialogs.editIndex(index);
+ updateIndexes();
+}
+
+
void TableWindow::delIndex()
{
QString index = getCurrentIndex();
@@ -1313,7 +1362,25 @@ void TableWindow::editTrigger()
{
QString trigger = getCurrentTrigger();
if (trigger.isNull())
+ {
+ addTrigger();
+ return;
+ }
+
+ DbObjectDialogs dialogs(db, this);
+ dialogs.editTrigger(trigger);
+ updateTriggers();
+}
+
+void TableWindow::triggerViewDoubleClicked(const QModelIndex& idx)
+{
+ if (!idx.isValid())
+ {
+ addTrigger();
return;
+ }
+
+ QString trigger = ui->triggerList->item(idx.row(), 0)->text();
DbObjectDialogs dialogs(db, this);
dialogs.editTrigger(trigger);
@@ -1488,6 +1555,18 @@ void TableWindow::delColumn(const QString& columnName)
delColumn(colIdx);
}
+void TableWindow::updateTabsOrder()
+{
+ tabsMoving = true;
+ ui->tabWidget->removeTab(getDataTabIdx());
+ int idx = 1;
+ if (CFG_UI.General.DataTabAsFirstInTables.get())
+ idx = 0;
+
+ ui->tabWidget->insertTab(idx, ui->dataTab, tr("Data"));
+ tabsMoving = false;
+}
+
bool TableWindow::restoreSessionNextTime()
{
return existingTable && db && !DBLIST->isTemporary(db);
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
index 69f210b..d8738f1 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.h
@@ -21,6 +21,7 @@ class TableConstraintsModel;
class QProgressBar;
class WidgetCover;
class SqliteSyntaxHighlighter;
+class CenteredIconItemDelegate;
class ConstraintTabModel;
namespace Ui {
@@ -159,6 +160,8 @@ class GUI_API_EXPORT TableWindow : public MdiChild
QString getCurrentTrigger() const;
void applyInitialTab();
void resizeStructureViewColumns();
+ int getDataTabIdx() const;
+ int getStructureTabIdx() const;
int newTableWindowNum = 1;
@@ -178,6 +181,8 @@ class GUI_API_EXPORT TableWindow : public MdiChild
ChainExecutor* structureExecutor = nullptr;
TableModifier* tableModifier = nullptr;
bool modifyingThisTable = false;
+ CenteredIconItemDelegate* constraintColumnsDelegate = nullptr;
+ bool tabsMoving = false;
private slots:
void executionSuccessful();
@@ -215,12 +220,14 @@ class GUI_API_EXPORT TableWindow : public MdiChild
void updateTableConstraintsToolbarState();
void updateDdlTab();
void updateNewTableState();
- void on_structureView_doubleClicked(const QModelIndex &index);
- void on_tableConstraintsView_doubleClicked(const QModelIndex &index);
+ void structureViewDoubleClicked(const QModelIndex &index);
+ void constraintsViewDoubleClicked(const QModelIndex &index);
void nameChanged();
void withOutRowIdChanged();
void addIndex();
- void editIndex();
+ void editCurrentIndex();
+ void indexViewDoubleClicked(const QModelIndex& idx);
+ void triggerViewDoubleClicked(const QModelIndex& idx);
void delIndex();
void addTrigger();
void editTrigger();
@@ -229,6 +236,7 @@ class GUI_API_EXPORT TableWindow : public MdiChild
void updateTriggersState();
void nextTab();
void prevTab();
+ void updateTabsOrder();
public slots:
void updateIndexes();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.ui b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.ui
index 0dd7fe6..14e278a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.ui
@@ -105,7 +105,7 @@
<property name="childrenCollapsible">
<bool>false</bool>
</property>
- <widget class="QTableView" name="structureView">
+ <widget class="ExtTableView" name="structureView">
<property name="dragEnabled">
<bool>true</bool>
</property>
@@ -152,7 +152,7 @@
<widget class="QToolBar" name="tableConstraintsToolbar"/>
</item>
<item>
- <widget class="QTableView" name="tableConstraintsView">
+ <widget class="ExtTableView" name="tableConstraintsView">
<property name="dragEnabled">
<bool>true</bool>
</property>
@@ -225,7 +225,7 @@
<widget class="QToolBar" name="indexToolBar"/>
</item>
<item>
- <widget class="QTableWidget" name="indexList">
+ <widget class="ExtTableWidget" name="indexList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
@@ -254,7 +254,7 @@
<widget class="QToolBar" name="triggerToolBar"/>
</item>
<item>
- <widget class="QTableWidget" name="triggerList">
+ <widget class="ExtTableWidget" name="triggerList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
@@ -307,6 +307,16 @@
<header>dataview.h</header>
<container>1</container>
</customwidget>
+ <customwidget>
+ <class>ExtTableView</class>
+ <extends>QTableView</extends>
+ <header>common/exttableview.h</header>
+ </customwidget>
+ <customwidget>
+ <class>ExtTableWidget</class>
+ <extends>QTableWidget</extends>
+ <header>common/exttablewidget.h</header>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
index cb3a11e..07c927c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
@@ -21,10 +21,12 @@
#include "services/config.h"
#include "services/codeformatter.h"
#include "themetuner.h"
+#include "datagrid/sqlviewmodel.h"
#include <QPushButton>
#include <QProgressBar>
#include <QDebug>
#include <QMessageBox>
+#include <QCheckBox>
CFG_KEYS_DEFINE(ViewWindow)
@@ -44,6 +46,7 @@ ViewWindow::ViewWindow(Db* db, QWidget* parent) :
newView();
init();
applyInitialTab();
+ updateDbRelatedUiElements();
}
ViewWindow::ViewWindow(const ViewWindow& win) :
@@ -56,6 +59,7 @@ ViewWindow::ViewWindow(const ViewWindow& win) :
init();
initView();
applyInitialTab();
+ updateDbRelatedUiElements();
}
ViewWindow::ViewWindow(QWidget* parent, Db* db, const QString& database, const QString& view) :
@@ -68,6 +72,7 @@ ViewWindow::ViewWindow(QWidget* parent, Db* db, const QString& database, const Q
init();
initView();
applyInitialTab();
+ updateDbRelatedUiElements();
}
ViewWindow::~ViewWindow()
@@ -134,6 +139,7 @@ bool ViewWindow::restoreSession(const QVariant& sessionValue)
initView();
applyInitialTab();
+ updateDbRelatedUiElements();
return true;
}
@@ -209,10 +215,10 @@ void ViewWindow::init()
ui->queryTab,
ui->dataTab,
ui->triggersTab,
- ui->ddl
+ ui->ddlTab
});
- dataModel = new SqlQueryModel(this);
+ dataModel = new SqlViewModel(this);
ui->dataView->init(dataModel);
ui->queryEdit->setVirtualSqlExpression("CREATE VIEW name AS %1");
@@ -225,6 +231,12 @@ void ViewWindow::init()
connect(ui->queryEdit, SIGNAL(textChanged()), this, SLOT(updateQueryToolbarStatus()));
connect(ui->queryEdit, SIGNAL(errorsChecked(bool)), this, SLOT(updateQueryToolbarStatus()));
connect(ui->triggersList, SIGNAL(itemSelectionChanged()), this, SLOT(updateTriggersState()));
+ connect(ui->triggersList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(triggerViewDoubleClicked(QModelIndex)));
+ connect(ui->outputColumnsTable, SIGNAL(currentRowChanged(int)), this, SLOT(updateColumnButtons()));
+ connect(ui->outputColumnsTable->model(), SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), this, SLOT(updateColumnButtons()));
+ connect(ui->outputColumnsTable->model(), SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), this, SLOT(updateQueryToolbarStatus()));
+ connect(ui->outputColumnsTable, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(updateQueryToolbarStatus()));
+ connect(CFG_UI.General.DataTabAsFirstInViews, SIGNAL(changed(const QVariant&)), this, SLOT(updateTabsOrder()));
structureExecutor = new ChainExecutor(this);
connect(structureExecutor, SIGNAL(success()), this, SLOT(changesSuccessfullyCommited()));
@@ -234,9 +246,17 @@ void ViewWindow::init()
initActions();
+ ui->splitter->setStretchFactor(0, 1);
+ ui->splitter->setStretchFactor(1, 3);
+
+ updateOutputColumnsVisibility();
+
+ updateTabsOrder();
+
refreshTriggers();
updateQueryToolbarStatus();
updateTriggersState();
+ updateColumnButtons();
}
void ViewWindow::newView()
@@ -258,10 +278,18 @@ void ViewWindow::initView()
{
dataModel->setDb(db);
dataModel->setQuery(originalCreateView->select->detokenize());
+ dataModel->setView(view);
}
ui->queryEdit->setDb(db);
ui->queryEdit->setPlainText(createView->select->detokenize());
+
+ if (createView->columns.size() > 0)
+ {
+ columnsFromViewToList();
+ outputColumnsCheck->setChecked(true);
+ }
+
updateDdlTab();
ui->ddlEdit->setSqliteVersion(db->getVersion());
@@ -286,6 +314,19 @@ void ViewWindow::createQueryTabActions()
createAction(ROLLBACK_QUERY, ICONS.ROLLBACK, tr("Rollback the view changes", "view window"), this, SLOT(rollbackView()), ui->queryToolbar);
ui->queryToolbar->addSeparator();
ui->queryToolbar->addAction(ui->queryEdit->getAction(SqlEditor::FORMAT_SQL));
+
+ outputColumnsCheck = new QAction(ICONS.COLUMNS, tr("Explicit column names"), this);
+ outputColumnsCheck->setCheckable(true);
+ connect(outputColumnsCheck, SIGNAL(toggled(bool)), this, SLOT(updateOutputColumnsVisibility()));
+
+ outputColumnsSeparator = ui->queryToolbar->addSeparator();
+ ui->queryToolbar->addAction(outputColumnsCheck);
+ createAction(GENERATE_OUTPUT_COLUMNS, ICONS.GENERATE_COLUMNS, tr("Generate output column names automatically basing on result columns of the view."), this, SLOT(generateOutputColumns()), ui->queryToolbar);
+ createAction(ADD_COLUMN, ICONS.TABLE_COLUMN_ADD, tr("Add column", "view window"), this, SLOT(addColumn()), ui->queryToolbar);
+ createAction(EDIT_COLUMN, ICONS.TABLE_COLUMN_EDIT, tr("Edit column", "view window"), this, SLOT(editColumn()), ui->queryToolbar);
+ createAction(DEL_COLUMN, ICONS.TABLE_COLUMN_DELETE, tr("Delete column", "view window"), this, SLOT(delColumn()), ui->queryToolbar);
+ createAction(MOVE_COLUMN_UP, ICONS.MOVE_UP, tr("Move column up", "view window"), this, SLOT(moveColumnUp()), ui->queryToolbar);
+ createAction(MOVE_COLUMN_DOWN, ICONS.MOVE_DOWN, tr("Move column down", "view window"), this, SLOT(moveColumnDown()), ui->queryToolbar);
}
void ViewWindow::createTriggersTabActions()
@@ -394,6 +435,7 @@ void ViewWindow::rollbackView()
ui->nameEdit->setText(createView->view);
ui->queryEdit->setPlainText(createView->select->detokenize());
+ columnsFromViewToList();
updateQueryToolbarStatus();
updateDdlTab();
}
@@ -411,15 +453,70 @@ QString ViewWindow::getCurrentTrigger() const
void ViewWindow::applyInitialTab()
{
if (existingView && !view.isNull() && CFG_UI.General.OpenViewsOnData.get())
- ui->tabWidget->setCurrentIndex(1);
+ ui->tabWidget->setCurrentIndex(getDataTabIdx());
else
- ui->tabWidget->setCurrentIndex(0);
+ ui->tabWidget->setCurrentIndex(getQueryTabIdx());
}
QString ViewWindow::getCurrentDdl() const
{
- static_qstring(ddlTpl, "CREATE VIEW %1 AS %2");
- return ddlTpl.arg(wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect())).arg(ui->queryEdit->toPlainText());
+ static_qstring(ddlTpl, "CREATE VIEW %1%2 AS %3");
+ QString columnsStr = "";
+ if (outputColumnsCheck->isChecked() && ui->outputColumnsTable->count() > 0)
+ columnsStr = "(" + collectColumnNames().join(", ") + ")";
+
+ return ddlTpl.arg(
+ wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect()),
+ columnsStr,
+ ui->queryEdit->toPlainText()
+ );
+}
+
+QStringList ViewWindow::indexedColumnsToNamesOnly(const QList<SqliteIndexedColumn*>& columns) const
+{
+ QStringList names;
+ for (SqliteIndexedColumn* col : columns)
+ names << col->name;
+
+ return names;
+}
+
+QStringList ViewWindow::collectColumnNames() const
+{
+ Dialect dialect = db ? db->getDialect() : Dialect::Sqlite3;
+ QStringList cols;
+ for (int row = 0; row < ui->outputColumnsTable->count(); row++)
+ cols << wrapObjIfNeeded(ui->outputColumnsTable->item(row)->text(), dialect);
+
+ return cols;
+}
+
+void ViewWindow::columnsFromViewToList()
+{
+ ui->outputColumnsTable->clear();
+ ui->outputColumnsTable->addItems(indexedColumnsToNamesOnly(createView->columns));
+
+ QListWidgetItem* item = nullptr;
+ for (int row = 0; row < ui->outputColumnsTable->count(); row++)
+ {
+ item = ui->outputColumnsTable->item(row);
+ item->setFlags(item->flags() | Qt::ItemIsEditable);
+ }
+}
+
+int ViewWindow::getDataTabIdx() const
+{
+ return ui->tabWidget->indexOf(ui->dataTab);
+}
+
+int ViewWindow::getQueryTabIdx() const
+{
+ return ui->tabWidget->indexOf(ui->queryTab);
+}
+
+int ViewWindow::getDdlTabIdx() const
+{
+ return ui->tabWidget->indexOf(ui->ddlTab);
}
void ViewWindow::addTrigger()
@@ -465,10 +562,11 @@ void ViewWindow::executionFailed(const QString& errorMessage)
void ViewWindow::tabChanged(int tabIdx)
{
- switch (tabIdx)
+ if (tabsMoving)
+ return;
+
+ if (tabIdx == getDataTabIdx())
{
- case 1:
- {
if (isModified())
{
int res = QMessageBox::question(this, tr("Uncommited changes"),
@@ -481,19 +579,19 @@ void ViewWindow::tabChanged(int tabIdx)
if (res == 1)
commitView(true);
- break;
+ return;
}
if (!dataLoaded)
ui->dataView->refreshData();
- break;
- }
- case 3:
- {
- updateDdlTab();
- break;
- }
+ return;
+ }
+
+ if (tabIdx == getDdlTabIdx())
+ {
+ updateDdlTab();
+ return;
}
}
@@ -518,12 +616,18 @@ void ViewWindow::changesSuccessfullyCommited()
//QString oldView = view; // uncomment when implementing notify manager call
database = createView->database;
+ QString oldView = view;
view = createView->view;
existingView = true;
initView();
updateQueryToolbarStatus();
updateWindowTitle();
+ if (oldView.compare(view, Qt::CaseInsensitive) == 0)
+ notifyInfo(tr("Commited changes for view '%1' successfly.").arg(view));
+ else
+ notifyInfo(tr("Commited changes for view '%1' (named before '%2') successfly.").arg(view, oldView));
+
DBTREE->refreshSchema(db);
}
@@ -599,6 +703,154 @@ void ViewWindow::checkIfViewDeleted(const QString& database, const QString& obje
}
}
+void ViewWindow::updateOutputColumnsVisibility()
+{
+ bool enabled = outputColumnsCheck->isChecked();
+
+ ui->outputColumnsContainer->setVisible(enabled);
+ actionMap[Action::GENERATE_OUTPUT_COLUMNS]->setVisible(enabled);
+ actionMap[Action::ADD_COLUMN]->setVisible(enabled);
+ actionMap[Action::EDIT_COLUMN]->setVisible(enabled);
+ actionMap[Action::DEL_COLUMN]->setVisible(enabled);
+ actionMap[Action::MOVE_COLUMN_UP]->setVisible(enabled);
+ actionMap[Action::MOVE_COLUMN_DOWN]->setVisible(enabled);
+
+ updateQueryToolbarStatus();
+}
+
+void ViewWindow::addColumn()
+{
+ QListWidgetItem* item = new QListWidgetItem();
+ item->setFlags(item->flags() | Qt::ItemIsEditable);
+ ui->outputColumnsTable->addItem(item);
+ ui->outputColumnsTable->editItem(item);
+ ui->outputColumnsTable->setCurrentItem(item);
+ updateColumnButtons();
+}
+
+void ViewWindow::editColumn()
+{
+ QListWidgetItem* item = ui->outputColumnsTable->currentItem();
+ ui->outputColumnsTable->editItem(item);
+ updateColumnButtons();
+}
+
+void ViewWindow::delColumn()
+{
+ QListWidgetItem* item = ui->outputColumnsTable->takeItem(ui->outputColumnsTable->currentRow());
+ delete item;
+ updateColumnButtons();
+}
+
+void ViewWindow::moveColumnUp()
+{
+ int row = ui->outputColumnsTable->currentRow();
+ if (row <= 0)
+ return;
+
+ QListWidgetItem* item = ui->outputColumnsTable->takeItem(row);
+ ui->outputColumnsTable->insertItem(--row, item);
+ ui->outputColumnsTable->setCurrentItem(item);
+}
+
+void ViewWindow::moveColumnDown()
+{
+ int row = ui->outputColumnsTable->currentRow();
+ if (row + 1 >= ui->outputColumnsTable->count())
+ return;
+
+ QListWidgetItem* item = ui->outputColumnsTable->takeItem(row);
+ ui->outputColumnsTable->insertItem(++row, item);
+ ui->outputColumnsTable->setCurrentItem(item);
+}
+
+void ViewWindow::updateColumnButtons()
+{
+ QListWidgetItem* item = ui->outputColumnsTable->currentItem();
+ int row = ui->outputColumnsTable->currentRow();
+
+ actionMap[MOVE_COLUMN_UP]->setEnabled(row > 0);
+ actionMap[MOVE_COLUMN_DOWN]->setEnabled(row + 1 < ui->outputColumnsTable->count());
+ actionMap[EDIT_COLUMN]->setEnabled(item != nullptr);
+ actionMap[DEL_COLUMN]->setEnabled(item != nullptr);
+}
+
+void ViewWindow::generateOutputColumns()
+{
+ if (ui->outputColumnsTable->count() > 0)
+ {
+ QMessageBox::StandardButton res = QMessageBox::question(this, tr("Override columns"), tr("Currently defined columns will be overriden. Do you want to continue?"));
+ if (res != QMessageBox::Yes)
+ return;
+ }
+
+ // Validate and generate fresh createView instance
+ bool validated = validate(true);
+ if (!validated)
+ return;
+
+ // Make copy of CREATE statement and remove columns
+ SqliteCreateView* stmt = dynamic_cast<SqliteCreateView*>(createView->clone());
+ for (SqliteIndexedColumn* col : stmt->columns)
+ delete col;
+
+ stmt->columns.clear();
+
+ // Indentify columns
+ SchemaResolver resolver(db);
+ QStringList columns = resolver.getColumnsUsingPragma(stmt);
+ delete stmt;
+ if (columns.isEmpty())
+ {
+ notifyWarn(tr("Could not determinate columns returned from the view. The query is problably incomplete or contains errors."));
+ return;
+ }
+
+ ui->outputColumnsTable->clear();
+ ui->outputColumnsTable->addItems(columns);
+
+ QListWidgetItem* item = nullptr;
+ for (int row = 0; row < columns.size(); row++)
+ {
+ item = ui->outputColumnsTable->item(row);
+ item->setFlags(item->flags() | Qt::ItemIsEditable);
+ }
+}
+
+void ViewWindow::updateDbRelatedUiElements()
+{
+ bool enabled = db->getDialect() == Dialect::Sqlite3;
+ outputColumnsCheck->setVisible(enabled);
+ outputColumnsSeparator->setVisible(enabled);
+}
+
+void ViewWindow::updateTabsOrder()
+{
+ tabsMoving = true;
+ ui->tabWidget->removeTab(getDataTabIdx());
+ int idx = 1;
+ if (CFG_UI.General.DataTabAsFirstInViews.get())
+ idx = 0;
+
+ ui->tabWidget->insertTab(idx, ui->dataTab, tr("Data"));
+ tabsMoving = false;
+}
+
+void ViewWindow::triggerViewDoubleClicked(const QModelIndex& idx)
+{
+ if (!idx.isValid())
+ {
+ addTrigger();
+ return;
+ }
+
+ QString trigger = ui->triggersList->item(idx.row(), 0)->text();
+
+ DbObjectDialogs dialogs(db, this);
+ dialogs.editTrigger(trigger);
+ refreshTriggers();
+}
+
void ViewWindow::refreshTriggers()
{
if (!db || !db->isValid())
@@ -680,9 +932,21 @@ void ViewWindow::updateDdlTab()
bool ViewWindow::isModified() const
{
- return (originalCreateView && originalCreateView->view != ui->nameEdit->text()) ||
- ui->queryEdit->toPlainText() != originalQuery ||
- !existingView;
+ // Quick checks first
+ bool modified = !existingView || (originalCreateView && originalCreateView->view != ui->nameEdit->text()) ||
+ ui->queryEdit->toPlainText() != originalQuery;
+
+ if (modified)
+ return modified;
+
+ // And now a bit slower check
+ QStringList origCols = createView ? indexedColumnsToNamesOnly(createView->columns) : QStringList();
+ QStringList currentCols;
+ if (outputColumnsCheck->isChecked())
+ currentCols = collectColumnNames();
+
+ bool colsModified = origCols != currentCols;
+ return colsModified;
}
bool ViewWindow::validate(bool skipWarnings)
@@ -697,12 +961,9 @@ bool ViewWindow::validate(bool skipWarnings)
}
// Rebuilding createView statement and validating it on the fly.
- QString ddl = "CREATE VIEW %1 AS %2";
- QString viewName = wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect());
- QString select = ui->queryEdit->toPlainText();
-
+ QString ddl = getCurrentDdl();
Parser parser(db->getDialect());
- if (!parser.parse(ddl.arg(viewName).arg(select)) || parser.getQueries().size() < 1)
+ if (!parser.parse(ddl) || parser.getQueries().size() < 1)
{
notifyError(tr("The SELECT statement could not be parsed. Please correct the query and retry.\nDetails: %1").arg(parser.getErrorString()));
return false;
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
index 62e1218..65c3260 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
@@ -13,12 +13,12 @@ namespace Ui {
}
class SqliteSyntaxHighlighter;
-class SqlQueryModel;
class WidgetCover;
class QPushButton;
class QProgressBar;
class ChainExecutor;
class ViewModifier;
+class SqlViewModel;
CFG_KEY_LIST(ViewWindow, QObject::tr("A view window"),
CFG_KEY_ENTRY(REFRESH_TRIGGERS, Qt::Key_F5, QObject::tr("Refresh view trigger list"))
@@ -41,6 +41,12 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
REFRESH_QUERY,
COMMIT_QUERY,
ROLLBACK_QUERY,
+ ADD_COLUMN,
+ EDIT_COLUMN,
+ DEL_COLUMN,
+ MOVE_COLUMN_UP,
+ MOVE_COLUMN_DOWN,
+ GENERATE_OUTPUT_COLUMNS,
// Triggers tab
REFRESH_TRIGGERS,
ADD_TRIGGER,
@@ -103,6 +109,12 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
QString getCurrentTrigger() const;
void applyInitialTab();
QString getCurrentDdl() const;
+ QStringList indexedColumnsToNamesOnly(const QList<SqliteIndexedColumn*>& columns) const;
+ QStringList collectColumnNames() const;
+ void columnsFromViewToList();
+ int getDataTabIdx() const;
+ int getQueryTabIdx() const;
+ int getDdlTabIdx() const;
Db* db = nullptr;
QString database;
@@ -113,13 +125,16 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
bool modified = false;
SqliteCreateViewPtr originalCreateView;
SqliteCreateViewPtr createView;
- SqlQueryModel* dataModel = nullptr;
+ SqlViewModel* dataModel = nullptr;
QString originalQuery;
WidgetCover* widgetCover = nullptr;
ChainExecutor* structureExecutor = nullptr;
ViewModifier* viewModifier = nullptr;
Ui::ViewWindow *ui = nullptr;
bool modifyingThisView = false;
+ QAction* outputColumnsCheck = nullptr;
+ QAction* outputColumnsSeparator = nullptr;
+ bool tabsMoving = false;
private slots:
void refreshView();
@@ -139,6 +154,17 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
void prevTab();
void dbClosedFinalCleanup();
void checkIfViewDeleted(const QString& database, const QString& object, DbObjectType type);
+ void updateOutputColumnsVisibility();
+ void addColumn();
+ void editColumn();
+ void delColumn();
+ void moveColumnUp();
+ void moveColumnDown();
+ void updateColumnButtons();
+ void generateOutputColumns();
+ void updateDbRelatedUiElements();
+ void updateTabsOrder();
+ void triggerViewDoubleClicked(const QModelIndex& idx);
public slots:
void refreshTriggers();
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.ui
index 0fdccc3..9112280 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>0</number>
+ <number>2</number>
</property>
<widget class="QWidget" name="queryTab">
<attribute name="title">
@@ -68,7 +68,86 @@
</widget>
</item>
<item>
- <widget class="SqlEditor" name="queryEdit"/>
+ <widget class="QWidget" name="widget" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <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::Vertical</enum>
+ </property>
+ <widget class="QWidget" name="outputColumnsContainer" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <property name="leftMargin">
+ <number>4</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>4</number>
+ </property>
+ <property name="bottomMargin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="outputColumnsGroup">
+ <property name="title">
+ <string>Output column names</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QListWidget" name="outputColumnsTable">
+ <property name="dragEnabled">
+ <bool>true</bool>
+ </property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::InternalMove</enum>
+ </property>
+ <property name="defaultDropAction">
+ <enum>Qt::MoveAction</enum>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="selectionRectVisible">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="SqlEditor" name="queryEdit"/>
+ </widget>
+ </item>
+ </layout>
+ </widget>
</item>
</layout>
</widget>
@@ -91,7 +170,7 @@
<widget class="QToolBar" name="triggersToolbar"/>
</item>
<item>
- <widget class="QTableWidget" name="triggersList">
+ <widget class="ExtTableWidget" name="triggersList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
@@ -114,7 +193,7 @@
</item>
</layout>
</widget>
- <widget class="QWidget" name="ddl">
+ <widget class="QWidget" name="ddlTab">
<attribute name="title">
<string>DDL</string>
</attribute>
@@ -149,6 +228,11 @@
<extends>QPlainTextEdit</extends>
<header>sqleditor.h</header>
</customwidget>
+ <customwidget>
+ <class>ExtTableWidget</class>
+ <extends>QTableWidget</extends>
+ <header>common/exttablewidget.h</header>
+ </customwidget>
</customwidgets>
<resources/>
<connections/>