aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-05-12 16:19:47 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-05-12 16:19:47 -0400
commit6ce5ee411d1e6093b68b1b4eca5dc6c12b927a96 (patch)
tree1a98416041b39765c1c42ffbeab6da9fd40e181b /SQLiteStudio3/coreSQLiteStudio
parent1fc9d1a4a1af320e39810cee21bed1201e2bddfd (diff)
parent9618f0ebbf4b88045247c01ce8c8f58203508ebf (diff)
Merge tag 'upstream/3.0.6'
Upstream version 3.0.6 # gpg: Signature made Tue 12 May 2015 04:19:45 PM EDT using RSA key ID EBE9BD91 # gpg: Good signature from "Unit 193 <unit193@gmail.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.org>" # gpg: aka "Unit 193 <unit193@ubuntu.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.com>"
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt27
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/TODO.txt29
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvformat.cpp5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvformat.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp54
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/datatype.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp18
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp40
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp28
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/importworker.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp42
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/selectresolver.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp51
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp42
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/updatemanager.cpp14
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/services/updatemanager.h7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/sqlitestudio.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp9
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts156
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qmbin3538 -> 4601 bytes
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts158
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts156
40 files changed, 902 insertions, 776 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
index 384fd8a..a94955a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
@@ -1,3 +1,30 @@
+[3.0.6]
+ * [ADDED]: #2740 Option to configure whether bottom dock area (with status field) should extend to left border, or should it leave space for database list.
+ * [ADDED]: #2819 Introduced "compact layout" as an option (enabled by default) to minimize all margins on the interface.
+ * [ADDED]: CSS console for SQLiteStudio (under F11 key) to allow customizing all aspects UI look and feel at a low level.
+ * [ADDED]: #2805 The 'Save SQL' action in SQL editor now uses the same file if repeated, unless user picks 'select file to save' from drop-down menu.
+ * [ADDED]: #2801 Added option to select where to position the new inserted row - above/below selected row, or at the end of data view.
+ * [CHANGE]: Database list is by default from top to bottom, making the status field placed next to the database list, instead of being below it.
+ * [BUGFIX]: Fixed 'rows affected' counter when using transactions and executing everything at once.
+ * [BUGFIX]: Fixed importing from CSV with empty (NULL) values in last column of last data row.
+ * [BUGFIX]: #2853 Allow '$' character as a part of an identifier.
+ * [BUGFIX]: #2846 Fixed crash when executing query on a database after just removed other database from the list.
+ * [BUGFIX]: #2856 Fixed not working updates manual checking if automatic checking was disabled.
+ * [BUGFIX]: #2863 Fixed config dialog to honor DbTree presentation options (sorting, labels) immediately, no manual refreshing required.
+ * [BUGFIX]: #2862 Fixed loading SQL scripts into editor when using Chinese language.
+ * [BUGFIX]: #2855 Automatic updates are now enabled only for portable build and are disabled by default for other builds.
+ * [BUGFIX]: #2867 Fixed support for "ISNULL" in query execution.
+ * [BUGFIX]: Fixed synchronization bug in DbSqlite2 plugin causing random crashes.
+ * [BUGFIX]: Views are recreated after table modification only if they really need to be updated according to the table change.
+ * [BUGFIX]: Fixed querying selects with numerous subselects with '*' operators for result columns.
+ * [BUGFIX]: #2868 Global configuration directory is not created (even empty) when using portable configuration.
+ * [BUGFIX]: #2866 Fixed Search dialog in SQL editor to honor changes of the searched value during the single session of searching.
+ * [BUGFIX]: Fixed importing from data source that provides columns with special characters - they are no longer splitted to column name and datatype.
+ * [BUGFIX]: Fixed problem with keyboard focus for syntax completer under Gnome 3.
+ * [BUGFIX]: #2872 'Enter' key in table name of import dialog now triggers 'Next' action, not clearing the table name.
+ * [BUGFIX]: #2864 & #2791 Fixed synchronouse execution in QueryExecutor, which also fixes the misterious bug in export dialog, causing empty files being exported.
+ * [BUGFIX]: Fixed encoding detection and connection testing for SQLite2.
+
[3.0.5]
* [ADDED]: #2831 Ported 'Erase table data' feature (in table's context menu) from version 2.1.5.
* [CHANGE]: Data view has now a 'cover' with progress bar when commiting more changes at once. This eliminates weird GUI freeze when commiting lots of new/deleted rows.
diff --git a/SQLiteStudio3/coreSQLiteStudio/TODO.txt b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
index d18c16a..e6f699e 100644
--- a/SQLiteStudio3/coreSQLiteStudio/TODO.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
@@ -1,21 +1,25 @@
* Outstanding features for 3.1:
+- migrate updates engine to Qt Install Framework
+- loadable extensions full support
- BLOB preview engine based on plugins
- ERD plugin
- DB compare plugin
- Foreign Key value suggestions in GridView
-- code templates
+- Foreign Key previews in subframes
- executing query with bind params
-- migrate updates engine to Qt Install Framework
+- comments support in formatter
* Next versions:
- object names (columns, tables, etc) in dialogs should be validated against suffix/prefix whitespaces and if they appear, user should be asked for confirmation
- small useful features: generating template queries from context menu for table/view, from data view.
+- code templates
- commiting DataView should be async
- syntax checkers as services - per language
- code assistants as services - per language
- specialized validation of expressions for DEFAULT constraint.
- "recovery" after failed startup - detecting if previous start crashed and if yes, propose cleaning of configuration.
- tcl highlighter
+- highlighting occurrences of the same object in the query when cursor is on it
- plugin to do performance testing
- plugins to generate artifacts
- qtscript syntax checker
@@ -54,24 +58,3 @@ UNIT TESTS:
* Advanced syntax error checks:
- many idxColumns are not allowed for column FK
- autoincrement not allowed for not integer type
-
-
-
-
-
-
-
-
-
-Qt mingw:
-Not an easy task. I got Perl, Python, Ruby and MinGw/bin in path and
-use this line
-
-configure -opensource -confirm-license -platform win32-g++ -make libs
--qt-libjpeg -qt-libpng -no-openssl -no-icu -qt-zlib -qt-pcre
--no-iconv -nomake examples -nomake tests -qt-style-windowsxp
--qt-style-windowsvista -opengl
-desktop
-
-Qt linux:
-./configure -no-icu -nomake examples -nomake tests -no-dbus -opensource -skip webkit -skip quickcontrols -prefix /home/spakowane/qt5.3.1/output
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
index 20ac736..3ace551 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
@@ -10,7 +10,7 @@
#include <QDebug>
#include <QMetaType>
-QString invalidIdCharacters = "[]()$\"'@*.,+-=/%&|:; \t\n<>";
+QString invalidIdCharacters = "[]()\"'@*.,+-=/%&|:; \t\n<>";
QHash<NameWrapper,QPair<QChar,QChar> > wrapperChars;
QList<NameWrapper> sqlite3Wrappers;
QList<NameWrapper> sqlite2Wrappers;
diff --git a/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp b/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
index 2876b88..f5daa60 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
@@ -11,3 +11,8 @@ CsvFormat::CsvFormat(const QString& columnSeparator, const QString& rowSeparator
columnSeparator(columnSeparator), rowSeparator(rowSeparator)
{
}
+
+CsvFormat::CsvFormat(const QString& columnSeparator, const QString& rowSeparator, bool strictRowSeparator, bool strictColumnSeparator) :
+ columnSeparator(columnSeparator), rowSeparator(rowSeparator), strictColumnSeparator(strictColumnSeparator), strictRowSeparator(strictRowSeparator)
+{
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/csvformat.h b/SQLiteStudio3/coreSQLiteStudio/csvformat.h
index c569147..5ce00ad 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvformat.h
+++ b/SQLiteStudio3/coreSQLiteStudio/csvformat.h
@@ -8,9 +8,12 @@ struct API_EXPORT CsvFormat
{
CsvFormat();
CsvFormat(const QString& columnSeparator, const QString& rowSeparator);
+ CsvFormat(const QString& columnSeparator, const QString& rowSeparator, bool strictRowSeparator, bool strictColumnSeparator);
QString columnSeparator;
QString rowSeparator;
+ bool strictColumnSeparator = false;
+ bool strictRowSeparator = false;
static const CsvFormat DEFAULT;
};
diff --git a/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp b/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
index 7d7d20b..c89074f 100644
--- a/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/csvserializer.cpp
@@ -36,6 +36,38 @@ QString CsvSerializer::serialize(const QStringList& data, const CsvFormat& forma
}
template <class T>
+bool isCsvColumnSeparator(const T& data, int pos, const CsvFormat& format)
+{
+ if (!format.strictColumnSeparator && format.columnSeparator.contains(data[pos]))
+ return true;
+
+ for (const QChar& c : format.columnSeparator)
+ {
+ if (c != data[pos++])
+ return false;
+ }
+
+ return true;
+}
+
+template <class T>
+bool isCsvRowSeparator(const T& data, int& pos, const CsvFormat& format)
+{
+ if (!format.strictRowSeparator && format.rowSeparator.contains(data[pos]))
+ return true;
+
+ int localPos = pos;
+ for (const QChar& c : format.rowSeparator)
+ {
+ if (localPos >= data.size() || c != data[localPos++])
+ return false;
+ }
+
+ pos = localPos - 1;
+ return true;
+}
+
+template <class T>
QList<QList<T>> typedDeserialize(const T& data, const CsvFormat& format)
{
QList<QList<T>> rows;
@@ -58,23 +90,33 @@ QList<QList<T>> typedDeserialize(const T& data, const CsvFormat& format)
}
else if (quotes && c == '"' )
{
- if (pos + 1 < data.length() && data[pos+1] == '"' )
+ if (pos + 1 < data.length())
{
- field += c;
- pos++;
+ if (data[pos+1] == '"' )
+ {
+ field += c;
+ pos++;
+ }
+ else
+ {
+ quotes = false;
+ }
}
else
{
- quotes = false;
+ if (field.length() == 0)
+ cells << field;
+
+ quotes = false;
}
}
- else if (!quotes && format.columnSeparator.contains(c))
+ else if (!quotes && isCsvColumnSeparator(data, pos, format))
{
cells << field;
field.clear();
sepAsLast = true;
}
- else if (!quotes && format.rowSeparator.contains(c))
+ else if (!quotes && isCsvRowSeparator(data, pos, format))
{
cells << field;
rows << cells;
diff --git a/SQLiteStudio3/coreSQLiteStudio/datatype.cpp b/SQLiteStudio3/coreSQLiteStudio/datatype.cpp
index 613e6dc..d90a6b0 100644
--- a/SQLiteStudio3/coreSQLiteStudio/datatype.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/datatype.cpp
@@ -2,7 +2,7 @@
#include <QMetaEnum>
#include <QRegularExpression>
-QList<DataType::Enum> DataType::values = [=]() -> QList<DataType::Enum>
+QList<DataType::Enum> DataType::values = []() -> QList<DataType::Enum>
{
QList<DataType::Enum> list;
QMetaEnum metaEnum = DataType::staticMetaObject.enumerator(0);
@@ -19,7 +19,7 @@ QList<DataType::Enum> DataType::values = [=]() -> QList<DataType::Enum>
return list;
}();
-const QStringList DataType::names = [=]() -> QStringList
+const QStringList DataType::names = []() -> QStringList
{
QStringList list;
QMetaEnum metaEnum = DataType::staticMetaObject.enumerator(0);
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h
index 0620a7d..5b95f61 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h
@@ -109,7 +109,6 @@ class AbstractDb2 : public AbstractDb
int colCount = -1;
QStringList colNames;
QList<QVariant> nextRowValues;
- int affected = 0;
bool rowAvailable = false;
};
@@ -725,6 +724,8 @@ SqlResultsRowPtr AbstractDb2<T>::Query::nextInternal()
if (!rowAvailable || db.isNull())
return SqlResultsRowPtr();
+ ReadWriteLocker locker(&(db->dbOperLock), query, Dialect::Sqlite2, flags.testFlag(Db::Flag::NO_LOCK));
+
Row* row = new Row;
row->init(colNames, nextRowValues);
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h
index fe37d5e..e7b0a4b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h
@@ -107,7 +107,6 @@ class AbstractDb3 : public AbstractDb
QString errorMessage;
int colCount = 0;
QStringList colNames;
- int affected = 0;
bool rowAvailable = false;
};
@@ -1076,13 +1075,14 @@ int AbstractDb3<T>::Query::fetchFirst()
for (int i = 0; i < colCount; i++)
colNames << QString::fromUtf8(T::column_name(stmt, i));
+ int changesBefore = T::total_changes(db->dbHandle);
rowAvailable = true;
int res = fetchNext();
affected = 0;
if (res == T::OK)
{
- affected = T::changes(db->dbHandle);
+ affected = T::total_changes(db->dbHandle) - changesBefore;
insertRowId["ROWID"] = T::last_insert_rowid(db->dbHandle);
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
index 9fc49df..b790ffa 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
@@ -40,7 +40,8 @@ QueryExecutor::QueryExecutor(Db* db, const QString& query, QObject *parent) :
setAutoDelete(false);
connect(this, SIGNAL(executionFailed(int,QString)), this, SLOT(cleanupAfterExecFailed(int,QString)));
- connect(DBLIST, SIGNAL(dbAboutToBeUnloaded(Db*, DbPlugin*)), this, SLOT(cleanupBeforeDbDestroy(Db*, DbPlugin*)));
+ connect(DBLIST, SIGNAL(dbAboutToBeUnloaded(Db*, DbPlugin*)), this, SLOT(cleanupBeforeDbDestroy(Db*)));
+ connect(DBLIST, SIGNAL(dbRemoved(Db*)), this, SLOT(cleanupBeforeDbDestroy(Db*)));
}
QueryExecutor::~QueryExecutor()
@@ -146,9 +147,8 @@ void QueryExecutor::cleanupAfterExecFailed(int code, QString errorMessage)
cleanup();
}
-void QueryExecutor::cleanupBeforeDbDestroy(Db* dbToBeUnloaded, DbPlugin* plugin)
+void QueryExecutor::cleanupBeforeDbDestroy(Db* dbToBeUnloaded)
{
- UNUSED(plugin);
if (!dbToBeUnloaded || dbToBeUnloaded != db)
return;
@@ -404,7 +404,16 @@ void QueryExecutor::executeSimpleMethod()
simpleExecution = true;
context->editionForbiddenReasons << EditionForbiddenReason::SMART_EXECUTION_FAILED;
simpleExecutionStartTime = QDateTime::currentMSecsSinceEpoch();
- asyncId = db->asyncExec(originalQuery, context->queryParameters, Db::Flag::PRELOAD);
+
+ if (asyncMode)
+ {
+ asyncId = db->asyncExec(originalQuery, context->queryParameters, Db::Flag::PRELOAD);
+ }
+ else
+ {
+ SqlQueryPtr results = db->exec(originalQuery, context->queryParameters, Db::Flag::PRELOAD);
+ simpleExecutionFinished(results);
+ }
}
void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
@@ -435,6 +444,7 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
context->executionTime = QDateTime::currentMSecsSinceEpoch() - simpleExecutionStartTime;
context->rowsAffected = results->rowsAffected();
context->totalRowsReturned = 0;
+ context->executionResults = results;
requiredDbAttaches = context->dbNameToAttach.leftValues();
executionMutex.lock();
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
index c6d7701..83d0436 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
@@ -1407,7 +1407,7 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
* from deleted Db. Keeping results is dangerous, becuase the Db driver (plugin) is most likely to
* be unloaded soon and we won't be able to call results destructor.
*/
- void cleanupBeforeDbDestroy(Db* dbToBeUnloaded, DbPlugin* plugin);
+ void cleanupBeforeDbDestroy(Db* dbToBeUnloaded);
};
int qHash(QueryExecutor::EditionForbiddenReason reason);
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
index 9307d13..ea42baf 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
@@ -59,6 +59,16 @@ QHash<SelectResolver::Table,QHash<QString,QString>> QueryExecutorAddRowIds::addR
return rowIdColsMap;
}
+ bool hasStar = false;
+ for (SqliteSelect::Core::ResultColumn* resCol : core->resultColumns)
+ {
+ if (resCol->star)
+ {
+ hasStar = true;
+ break;
+ }
+ }
+
// Getting all tables we need to get ROWID for
SelectResolver resolver(db, select->tokens.detokenize(), context->dbNameToAttach);
resolver.resolveMultiCore = false; // multicore subselects result in not editable columns, skip them
@@ -69,7 +79,7 @@ QHash<SelectResolver::Table,QHash<QString,QString>> QueryExecutorAddRowIds::addR
if (table.flags & (SelectResolver::FROM_COMPOUND_SELECT | SelectResolver::FROM_DISTINCT_SELECT | SelectResolver::FROM_GROUPED_SELECT))
continue; // we don't get ROWID from compound, distinct or aggregated subselects
- if (!addResultColumns(core, table, rowIdColsMap, isTopSelect))
+ if (!addResultColumns(core, table, rowIdColsMap, isTopSelect, hasStar))
{
ok = false;
return rowIdColsMap;
@@ -146,12 +156,14 @@ QHash<QString,QString> QueryExecutorAddRowIds::getNextColNames(const SelectResol
}
bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table,
- QHash<SelectResolver::Table,QHash<QString,QString>>& rowIdColsMap, bool isTopSelect)
+ QHash<SelectResolver::Table,QHash<QString,QString>>& rowIdColsMap, bool isTopSelect, bool hasStar)
{
QHash<QString, QString> executorToRealColumns;
+ bool aliasOnlyAsSelectColumn = false;
if (rowIdColsMap.contains(table))
{
executorToRealColumns = rowIdColsMap[table]; // we already have resCol names from subselect
+ aliasOnlyAsSelectColumn = true;
}
else
{
@@ -169,7 +181,7 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
while (it.hasNext())
{
it.next();
- if (!addResultColumns(core, table, it.key(), it.value()))
+ if (!addResultColumns(core, table, it.key(), it.value(), aliasOnlyAsSelectColumn))
return false;
}
@@ -189,7 +201,7 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
}
bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table, const QString& queryExecutorColumn,
- const QString& realColumn)
+ const QString& realColumn, bool aliasOnlyAsSelectColumn)
{
SqliteSelect::Core::ResultColumn* resCol = new SqliteSelect::Core::ResultColumn();
resCol->setParent(core);
@@ -197,17 +209,25 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se
resCol->expr = new SqliteExpr();
resCol->expr->setParent(resCol);
- resCol->expr->initId(realColumn);
- if (!table.alias.isNull())
+ if (aliasOnlyAsSelectColumn)
{
- resCol->expr->table = table.alias;
+ // We are re-querying this column from subselect, we already have it as an alias
+ resCol->expr->initId(queryExecutorColumn);
}
else
{
- if (!table.database.isNull())
- resCol->expr->database = table.database;
+ resCol->expr->initId(realColumn);
+ if (!table.alias.isNull())
+ {
+ resCol->expr->table = table.alias;
+ }
+ else
+ {
+ if (!table.database.isNull())
+ resCol->expr->database = table.database;
- resCol->expr->table = table.table;
+ resCol->expr->table = table.table;
+ }
}
resCol->asKw = true;
resCol->alias = queryExecutorColumn;
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
index a5431fa..fa2167f 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
@@ -31,7 +31,7 @@ class QueryExecutorAddRowIds : public QueryExecutorStep
* Finds columns representing ROWID for the \p table and adds them to result columns and to the context.
*/
bool addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table,
- QHash<SelectResolver::Table, QHash<QString, QString> >& rowIdColsMap, bool isTopSelect);
+ QHash<SelectResolver::Table, QHash<QString, QString> >& rowIdColsMap, bool isTopSelect, bool hasStar);
/**
* @brief Adds the column to result columns list.
@@ -44,7 +44,7 @@ class QueryExecutorAddRowIds : public QueryExecutorStep
* Adds given column to the result column list in the SELECT statement.
*/
bool addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table, const QString& queryExecutorColumn,
- const QString& realColumn);
+ const QString& realColumn, bool aliasOnlyAsSelectColumn);
/**
* @brief Adds all necessary ROWID columns to result columns.
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
index df2ed68..a954da7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp
@@ -7,6 +7,7 @@
#include "datatype.h"
#include <QDateTime>
#include <QDebug>
+#include <QStack>
#include <schemaresolver.h>
#include <common/table.h>
@@ -34,6 +35,7 @@ bool QueryExecutorExecute::executeQueries()
QHash<QString, QVariant> bindParamsForQuery;
SqlQueryPtr results;
context->rowsAffected = 0;
+ QStack<int> rowsAffectedBeforeTransaction;
Db::Flags flags;
if (context->preloadResults)
@@ -51,6 +53,9 @@ bool QueryExecutorExecute::executeQueries()
if (queryCount == 0) // last query?
setupSqlite2ColumnDataTypes(results);
+ if (isBeginTransaction(query->queryType))
+ rowsAffectedBeforeTransaction.push(context->rowsAffected);
+
results->execute();
if (results->isError())
@@ -60,6 +65,14 @@ bool QueryExecutorExecute::executeQueries()
}
context->rowsAffected += results->rowsAffected();
+
+ if (rowsAffectedBeforeTransaction.size() > 0)
+ {
+ if (isCommitTransaction(query->queryType))
+ rowsAffectedBeforeTransaction.pop();
+ else if (isRollbackTransaction(query->queryType))
+ context->rowsAffected = rowsAffectedBeforeTransaction.pop();
+ }
}
handleSuccessfulResult(results);
return true;
@@ -152,3 +165,18 @@ void QueryExecutorExecute::setupSqlite2ColumnDataTypes(SqlQueryPtr results)
sqlite2Helper->setBinaryType(idx);
}
}
+
+bool QueryExecutorExecute::isBeginTransaction(SqliteQueryType queryType)
+{
+ return (queryType == SqliteQueryType::BeginTrans || queryType == SqliteQueryType::Savepoint);
+}
+
+bool QueryExecutorExecute::isCommitTransaction(SqliteQueryType queryType)
+{
+ return (queryType == SqliteQueryType::CommitTrans || queryType == SqliteQueryType::Release);
+}
+
+bool QueryExecutorExecute::isRollbackTransaction(SqliteQueryType queryType)
+{
+ return queryType == SqliteQueryType::Rollback;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.h
index a88bf56..ea6fed2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.h
@@ -80,6 +80,9 @@ class QueryExecutorExecute : public QueryExecutorStep
qint64 startTime;
void setupSqlite2ColumnDataTypes(SqlQueryPtr results);
+ bool isBeginTransaction(SqliteQueryType queryType);
+ bool isCommitTransaction(SqliteQueryType queryType);
+ bool isRollbackTransaction(SqliteQueryType queryType);
};
#endif // QUERYEXECUTOREXECUTE_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
index 94300a0..1f2e736 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorreplaceviews.cpp
@@ -25,6 +25,7 @@ bool QueryExecutorReplaceViews::exec()
return true;
replaceViews(select.data());
+ select->rebuildTokens();
updateQueries();
return true;
@@ -72,7 +73,7 @@ void QueryExecutorReplaceViews::replaceViews(SqliteSelect* select)
SqliteCreateViewPtr view;
QList<SqliteSelect::Core::SingleSource*> sources = core->getAllTypedStatements<SqliteSelect::Core::SingleSource>();
- foreach (SqliteSelect::Core::SingleSource* src, sources)
+ for (SqliteSelect::Core::SingleSource* src : sources)
{
if (src->table.isNull())
continue;
@@ -92,9 +93,9 @@ void QueryExecutorReplaceViews::replaceViews(SqliteSelect* select)
src->select = view->select;
src->database = QString::null;
src->table = QString::null;
- }
- select->rebuildTokens();
+ replaceViews(src->select);
+ }
}
uint qHash(const QueryExecutorReplaceViews::View& view)
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h b/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h
index 2f26aaf..6b0c422 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h
@@ -64,6 +64,7 @@
static int column_type(stmt* arg1, int arg2) {return Prefix##sqlite3_column_type(arg1, arg2);} \
static int column_count(stmt* arg1) {return Prefix##sqlite3_column_count(arg1);} \
static int changes(handle* arg) {return Prefix##sqlite3_changes(arg);} \
+ static int total_changes(handle* arg) {return Prefix##sqlite3_total_changes(arg);} \
static int last_insert_rowid(handle* arg) {return Prefix##sqlite3_last_insert_rowid(arg);} \
static int step(stmt* arg) {return Prefix##sqlite3_step(arg);} \
static int reset(stmt* arg) {return Prefix##sqlite3_reset(arg);} \
diff --git a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
index cf62a98..b8d5a5a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp
@@ -108,7 +108,7 @@ bool ImportWorker::prepareTable()
{
QStringList colDefs;
for (int i = 0; i < columnsFromPlugin.size(); i++)
- colDefs << (columnsFromPlugin[i] + " " + columnTypesFromPlugin[i]).trimmed();
+ colDefs << (wrapObjIfNeeded(columnsFromPlugin[i], dialect) + " " + columnTypesFromPlugin[i]).trimmed();
static const QString ddl = QStringLiteral("CREATE TABLE %1 (%2)");
SqlQueryPtr result = db->exec(ddl.arg(wrapObjIfNeeded(table, dialect), colDefs.join(", ")));
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
index 12adf80..b84a818 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
@@ -481,7 +481,7 @@ TokenList SqliteExpr::rebuildTokensFromContents()
builder.withKeyword("NULL");
break;
case SqliteExpr::Mode::NOTNULL:
- builder.withTokens(rebuildNotNull());
+ builder.withStatement(expr1).withSpace().withTokens(rebuildNotNull());
break;
case SqliteExpr::Mode::IS:
builder.withTokens(rebuildIs());
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp
index 01284b4..b21b6ae 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp
@@ -20,7 +20,8 @@ SqliteRollback::SqliteRollback(bool transactionKw, const QString& name)
this->transactionKw = transactionKw;
}
-SqliteRollback::SqliteRollback(bool transactionKw, bool savePoint, const QString& name)
+SqliteRollback::SqliteRollback(bool transactionKw, bool savePoint, const QString& name) :
+ SqliteRollback()
{
// we ignore name from trans_opt,
// it's not officialy supported in sqlite3
diff --git a/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp b/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
index 9e425a2..8107b94 100644
--- a/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/selectresolver.cpp
@@ -38,7 +38,7 @@ QList<QList<SelectResolver::Column> > SelectResolver::resolve(SqliteSelect *sele
{
errors.clear();
QList<QList<SelectResolver::Column> > results;
- foreach (SqliteSelect::Core* core, select->coreSelects)
+ for (SqliteSelect::Core* core : select->coreSelects)
{
results << resolveCore(core);
currentCoreResults.clear();
@@ -57,7 +57,7 @@ QList<QList<SelectResolver::Column> > SelectResolver::resolveAvailableColumns(Sq
{
errors.clear();
QList<QList<SelectResolver::Column> > results;
- foreach (SqliteSelect::Core* core, select->coreSelects)
+ for (SqliteSelect::Core* core : select->coreSelects)
results << resolveAvailableCoreColumns(core);
return results;
@@ -67,8 +67,13 @@ QSet<SelectResolver::Table> SelectResolver::resolveTables(SqliteSelect::Core *se
{
QSet<Table> tables;
QList<Column> columns = resolveAvailableColumns(selectCore);
- foreach (Column col, columns)
+ for (const Column& col : columns)
+ {
+ if (col.type != Column::Type::COLUMN)
+ continue;
+
tables << col.getTable();
+ }
return tables;
}
@@ -77,11 +82,16 @@ QList<QSet<SelectResolver::Table> > SelectResolver::resolveTables(SqliteSelect *
{
QList<QSet<Table> > results;
QList<QList<Column> > columnLists = resolveAvailableColumns(select);
- foreach (QList<Column> columns, columnLists)
+ for (const QList<Column>& columns : columnLists)
{
QSet<Table> tables;
- foreach (Column col, columns)
+ for (const Column& col : columns)
+ {
+ if (col.type != Column::Type::COLUMN)
+ continue;
+
tables << col.getTable();
+ }
results << tables;
}
@@ -93,7 +103,7 @@ QList<SelectResolver::Column> SelectResolver::translateToColumns(SqliteSelect* s
{
errors.clear();
QList<SelectResolver::Column> results;
- foreach (TokenPtr token, columnTokens)
+ for (const TokenPtr& token : columnTokens)
results << translateTokenToColumn(select, token);
return results;
@@ -120,7 +130,7 @@ QList<SelectResolver::Column> SelectResolver::resolveCore(SqliteSelect::Core* se
if (selectCore->from)
currentCoreSourceColumns = resolveJoinSource(selectCore->from);
- foreach (SqliteSelect::Core::ResultColumn* resCol, selectCore->resultColumns)
+ for (SqliteSelect::Core::ResultColumn* resCol : selectCore->resultColumns)
resolve(resCol);
if (selectCore->distinctKw)
@@ -188,7 +198,7 @@ SelectResolver::Column SelectResolver::translateTokenToColumn(SqliteSelect* sele
}
// Search through available columns
- foreach (const Column& availableColumn, resolveAvailableColumns(core))
+ for (const Column& availableColumn : resolveAvailableColumns(core))
{
if (availableColumn.type == Column::COLUMN && availableColumn.column.compare(token->value, Qt::CaseInsensitive) == 0)
return availableColumn;
@@ -256,7 +266,7 @@ void SelectResolver::resolve(SqliteSelect::Core::ResultColumn *resCol)
void SelectResolver::resolveStar(SqliteSelect::Core::ResultColumn *resCol)
{
bool foundAtLeastOne = false;
- foreach (SelectResolver::Column column, currentCoreSourceColumns)
+ for (SelectResolver::Column column : currentCoreSourceColumns)
{
if (!resCol->table.isNull())
{
@@ -379,7 +389,7 @@ void SelectResolver::resolveDbAndTable(SqliteSelect::Core::ResultColumn *resCol)
SelectResolver::Column SelectResolver::resolveRowIdColumn(SqliteExpr *expr)
{
// Looking for first source that can provide ROWID.
- foreach (Column column, currentCoreSourceColumns)
+ for (const Column& column : currentCoreSourceColumns)
{
if (column.table.isNull())
continue; // ROWID cannot be related to source with no table
@@ -392,7 +402,7 @@ SelectResolver::Column SelectResolver::resolveRowIdColumn(SqliteExpr *expr)
SelectResolver::Column SelectResolver::resolveExplicitColumn(const QString &columnName)
{
- foreach (const Column& column, currentCoreSourceColumns)
+ for (const Column& column : currentCoreSourceColumns)
{
if (columnName.compare(column.column, Qt::CaseInsensitive) != 0 && columnName.compare(column.alias, Qt::CaseInsensitive) != 0)
continue;
@@ -404,7 +414,7 @@ SelectResolver::Column SelectResolver::resolveExplicitColumn(const QString &colu
SelectResolver::Column SelectResolver::resolveExplicitColumn(const QString &table, const QString &columnName)
{
- foreach (const Column& column, currentCoreSourceColumns)
+ for (const Column& column : currentCoreSourceColumns)
{
if (columnName.compare(column.column, Qt::CaseInsensitive) != 0 && columnName.compare(column.alias, Qt::CaseInsensitive) != 0)
continue;
@@ -419,7 +429,7 @@ SelectResolver::Column SelectResolver::resolveExplicitColumn(const QString &tabl
SelectResolver::Column SelectResolver::resolveExplicitColumn(const QString &database, const QString &table, const QString &columnName)
{
- foreach (const Column& column, currentCoreSourceColumns)
+ for (const Column& column : currentCoreSourceColumns)
{
if (columnName.compare(column.column, Qt::CaseInsensitive) != 0 && columnName.compare(column.alias, Qt::CaseInsensitive) != 0)
continue;
@@ -481,7 +491,7 @@ QList<SelectResolver::Column> SelectResolver::resolveJoinSource(SqliteSelect::Co
{
QList<SelectResolver::Column> columnSources;
columnSources += resolveSingleSource(joinSrc->singleSource);
- foreach (SqliteSelect::Core::JoinSourceOther* otherSrc, joinSrc->otherSources)
+ for (SqliteSelect::Core::JoinSourceOther* otherSrc : joinSrc->otherSources)
columnSources += resolveOtherSource(otherSrc);
return columnSources;
@@ -504,7 +514,7 @@ QList<SelectResolver::Column> SelectResolver::resolveSingleSource(SqliteSelect::
QList<Column> columnSources;
QStringList columns = getTableColumns(joinSrc->database, joinSrc->table, joinSrc->alias);
Column column;
- foreach (QString columnName, columns)
+ for (const QString& columnName : columns)
{
column.type = Column::COLUMN;
column.column = columnName;
@@ -650,7 +660,7 @@ int SelectResolver::Column::operator ==(const SelectResolver::Column &other)
return table == other.table && database == other.database && column == other.column && tableAlias == other.tableAlias;
}
-SelectResolver::Table SelectResolver::Column::getTable()
+SelectResolver::Table SelectResolver::Column::getTable() const
{
Table resTable;
resTable.table = table;
diff --git a/SQLiteStudio3/coreSQLiteStudio/selectresolver.h b/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
index c634c5c..4213d73 100644
--- a/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
+++ b/SQLiteStudio3/coreSQLiteStudio/selectresolver.h
@@ -113,7 +113,7 @@ class API_EXPORT SelectResolver
SqliteSelect::Core::ResultColumn* originalColumn = nullptr;
int operator==(const Column& other);
- Table getTable();
+ Table getTable() const;
};
SelectResolver(Db* db, const QString &originalQuery);
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
index 046993f..5aed863 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp
@@ -560,47 +560,38 @@ void ConfigImpl::initDbFile()
QString globalPath = getConfigPath();
QString portablePath = getPortableConfigPath();
- QStringList paths;
+ QList<QPair<QString,bool>> paths;
if (!globalPath.isNull() && !portablePath.isNull())
{
if (QFileInfo(portablePath).exists())
{
- paths << portablePath+"/"+DB_FILE_NAME;
- paths << globalPath+"/"+DB_FILE_NAME;
+ paths << QPair<QString,bool>(portablePath+"/"+DB_FILE_NAME, false);
+ paths << QPair<QString,bool>(globalPath+"/"+DB_FILE_NAME, true);
}
else
{
- paths << globalPath+"/"+DB_FILE_NAME;
- paths << portablePath+"/"+DB_FILE_NAME;
+ paths << QPair<QString,bool>(globalPath+"/"+DB_FILE_NAME, true);
+ paths << QPair<QString,bool>(portablePath+"/"+DB_FILE_NAME, false);
}
}
else if (!globalPath.isNull())
{
- paths << globalPath+"/"+DB_FILE_NAME;
+ paths << QPair<QString,bool>(globalPath+"/"+DB_FILE_NAME, true);
}
else if (!portablePath.isNull())
{
- paths << portablePath+"/"+DB_FILE_NAME;
- }
-
- // Create global config directory if not existing
- QDir dir;
- if (!globalPath.isNull())
- {
- dir = QDir(globalPath);
- if (!dir.exists())
- QDir::root().mkpath(globalPath);
+ paths << QPair<QString,bool>(portablePath+"/"+DB_FILE_NAME, false);
}
// A fallback to in-memory db
- paths << ":memory:";
+ paths << QPair<QString,bool>(":memory:", false);
// Go through all candidates and pick one
- QString path;
- foreach (path, paths)
+ QDir dir;
+ for (const QPair<QString,bool>& path : paths)
{
- dir = QDir(path);
- if (path != ":memory:")
+ dir = QDir(path.first);
+ if (path.first != ":memory:")
dir.cdUp();
if (tryInitDbFile(path))
@@ -614,17 +605,29 @@ void ConfigImpl::initDbFile()
if (configDir == ":memory:")
{
paths.removeLast();
+ QStringList pathStrings;
+ for (const QPair<QString,bool>& path : paths)
+ pathStrings << path.first;
+
notifyError(QObject::tr("Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart."
- " Tried to initialize the file at following localizations: %1.").arg(paths.join(", ")));
+ " Tried to initialize the file at following localizations: %1.").arg(pathStrings.join(", ")));
}
qDebug() << "Using configuration directory:" << configDir;
db->exec("PRAGMA foreign_keys = 1;");
}
-bool ConfigImpl::tryInitDbFile(const QString &dbPath)
+bool ConfigImpl::tryInitDbFile(const QPair<QString, bool> &dbPath)
{
- db = new DbSqlite3("SQLiteStudio settings", dbPath, {{DB_PURE_INIT, true}});
+ // Create global config directory if not existing
+ if (dbPath.second && !dbPath.first.isNull())
+ {
+ QDir dir(dbPath.first.mid(0, dbPath.first.length() - DB_FILE_NAME.length() - 1));
+ if (!dir.exists())
+ QDir::root().mkpath(dir.absolutePath());
+ }
+
+ db = new DbSqlite3("SQLiteStudio settings", dbPath.first, {{DB_PURE_INIT, true}});
if (!db->open())
{
safe_delete(db);
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
index 3bdb7a5..bd31f0b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h
@@ -93,7 +93,7 @@ class API_EXPORT ConfigImpl : public Config
QString getPortableConfigPath();
void initTables();
void initDbFile();
- bool tryInitDbFile(const QString& dbPath);
+ bool tryInitDbFile(const QPair<QString, bool>& dbPath);
QVariant deserializeValue(const QVariant& value);
void asyncAddSqlHistory(qint64 id, const QString& sql, const QString& dbName, int timeSpentMillis, int rowsAffected);
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp
index a7bff0d..cbdc921 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp
@@ -578,46 +578,4 @@ void DbManagerImpl::loaded(Plugin* plugin, PluginType* type)
DbPlugin* dbPlugin = dynamic_cast<DbPlugin*>(plugin);
rescanInvalidDatabasesForPlugin(dbPlugin);
-// Db* db = nullptr;
-
-// QUrl url;
-// for (Db* invalidDb : getInvalidDatabases())
-// {
-// if (invalidDb->getConnectionOptions().contains(DB_PLUGIN) && invalidDb->getConnectionOptions()[DB_PLUGIN].toString() != dbPlugin->getName())
-// continue;
-
-// url = QUrl::fromUserInput(invalidDb->getPath());
-// if (url.isLocalFile() && !QFile::exists(invalidDb->getPath()))
-// continue;
-
-// db = createDb(invalidDb->getName(), invalidDb->getPath(), invalidDb->getConnectionOptions());
-// if (!db)
-// continue; // For this db driver was not loaded yet.
-
-// if (!dbPlugin->checkIfDbServedByPlugin(db))
-// {
-// qDebug() << "Managed to load database" << db->getPath() << " (" << db->getName() << ")"
-// << "but it doesn't use DbPlugin that was just loaded, so it will not be loaded to the db manager";
-
-// delete db;
-// continue;
-// }
-
-// removeDbInternal(invalidDb, false);
-// delete invalidDb;
-
-// addDbInternal(db, false);
-
-// if (!db->getConnectionOptions().contains(DB_PLUGIN))
-// {
-// db->getConnectionOptions()[DB_PLUGIN] = dbPlugin->getName();
-// if (!CFG->updateDb(db->getName(), db->getName(), db->getPath(), db->getConnectionOptions()))
-// qWarning() << "Could not store handling plugin in options for database" << db->getName();
-// }
-
-// if (CFG->getDbGroup(db->getName())->open)
-// db->open();
-
-// emit dbLoaded(db);
-// }
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp
index c3bc581..017d260 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/pluginmanagerimpl.cpp
@@ -20,7 +20,9 @@ PluginManagerImpl::~PluginManagerImpl()
void PluginManagerImpl::init()
{
- pluginDirs += qApp->applicationDirPath() + "/plugins";
+ if (getDistributionType() != DistributionType::OS_MANAGED)
+ pluginDirs += qApp->applicationDirPath() + "/plugins";
+
pluginDirs += QDir(CFG->getConfigDir()).absoluteFilePath("plugins");
QString envDirs = SQLITESTUDIO->getEnv("SQLITESTUDIO_PLUGINS");
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.cpp b/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.cpp
index 66620f3..3663a1b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.cpp
@@ -1,3 +1,5 @@
+#ifdef PORTABLE_CONFIG
+
#include "updatemanager.h"
#include "services/pluginmanager.h"
#include "services/notifymanager.h"
@@ -44,9 +46,9 @@ UpdateManager::~UpdateManager()
cleanup();
}
-void UpdateManager::checkForUpdates()
+void UpdateManager::checkForUpdates(bool force)
{
- getUpdatesMetadata(updatesCheckReply);
+ getUpdatesMetadata(updatesCheckReply, force);
}
void UpdateManager::update()
@@ -150,10 +152,10 @@ void UpdateManager::handleAvailableUpdatesReply(QNetworkReply* reply)
emit noUpdatesAvailable();
}
-void UpdateManager::getUpdatesMetadata(QNetworkReply*& replyStoragePointer)
+void UpdateManager::getUpdatesMetadata(QNetworkReply*& replyStoragePointer, bool force)
{
-#ifndef NO_AUTO_UPDATES
- if (!CFG_CORE.General.CheckUpdatesOnStartup.get() || !isPlatformEligibleForUpdate() || replyStoragePointer)
+#ifdef PORTABLE_CONFIG
+ if ((!CFG_CORE.General.CheckUpdatesOnStartup.get() && !force) || !isPlatformEligibleForUpdate() || replyStoragePointer)
return;
QUrlQuery query;
@@ -1056,3 +1058,5 @@ void UpdateManager::readDownload()
{
currentDownloadFile->write(updatesGetReply->readAll());
}
+
+#endif // PORTABLE_CONFIG
diff --git a/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.h b/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.h
index b8e6006..bb33487 100644
--- a/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.h
+++ b/SQLiteStudio3/coreSQLiteStudio/services/updatemanager.h
@@ -1,6 +1,8 @@
#ifndef UPDATEMANAGER_H
#define UPDATEMANAGER_H
+#ifdef PORTABLE_CONFIG
+
#include "common/global.h"
#include "sqlitestudio.h"
#include <QObject>
@@ -28,7 +30,7 @@ class API_EXPORT UpdateManager : public QObject
explicit UpdateManager(QObject *parent = 0);
~UpdateManager();
- void checkForUpdates();
+ void checkForUpdates(bool force = false);
void update();
bool isPlatformEligibleForUpdate() const;
static bool executeFinalStep(const QString& tempDir, const QString& backupDir, const QString& appDir);
@@ -54,7 +56,7 @@ class API_EXPORT UpdateManager : public QObject
QString getCurrentVersions() const;
void handleAvailableUpdatesReply(QNetworkReply* reply);
void handleDownloadReply(QNetworkReply* reply);
- void getUpdatesMetadata(QNetworkReply*& replyStoragePointer);
+ void getUpdatesMetadata(QNetworkReply*& replyStoragePointer, bool force = false);
void handleUpdatesMetadata(QNetworkReply* reply);
QList<UpdateEntry> readMetadata(const QJsonDocument& doc);
void downloadUpdates();
@@ -134,4 +136,5 @@ class API_EXPORT UpdateManager : public QObject
#define UPDATES SQLITESTUDIO->getUpdateManager()
+#endif // PORTABLE_CONFIG
#endif // UPDATEMANAGER_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
index 963ba7d..8d62b44 100644
--- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
@@ -39,7 +39,7 @@
DEFINE_SINGLETON(SQLiteStudio)
-static const int sqlitestudioVersion = 30005;
+static const int sqlitestudioVersion = 30006;
SQLiteStudio::SQLiteStudio()
{
@@ -87,6 +87,7 @@ void SQLiteStudio::setImmediateQuit(bool value)
immediateQuit = value;
}
+#ifdef PORTABLE_CONFIG
UpdateManager* SQLiteStudio::getUpdateManager() const
{
return updateManager;
@@ -96,6 +97,7 @@ void SQLiteStudio::setUpdateManager(UpdateManager* value)
{
updateManager = value;
}
+#endif
BugReporter* SQLiteStudio::getBugReporter() const
{
@@ -319,7 +321,9 @@ void SQLiteStudio::init(const QStringList& cmdListArguments, bool guiAvailable)
importManager = new ImportManager();
populateManager = new PopulateManager();
bugReporter = new BugReporter();
+#ifdef PORTABLE_CONFIG
updateManager = new UpdateManager();
+#endif
extraLicenseManager = new ExtraLicenseManager();
extraLicenseManager->addLicense("SQLiteStudio license (GPL v3)", ":/docs/licenses/sqlitestudio_license.txt");
@@ -349,7 +353,9 @@ void SQLiteStudio::cleanUp()
pluginManager->deinit();
safe_delete(pluginManager); // PluginManager before DbManager, so Db objects are deleted while DbManager still exists
+#ifdef PORTABLE_CONFIG
safe_delete(updateManager);
+#endif
safe_delete(bugReporter);
safe_delete(populateManager);
safe_delete(importManager);
diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.h b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.h
index f338e92..0b58b17 100644
--- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.h
+++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.h
@@ -25,7 +25,9 @@ class ImportManager;
class PopulateManager;
class PluginLoadingHandler;
class BugReporter;
+#ifdef PORTABLE_CONFIG
class UpdateManager;
+#endif
class ExtraLicenseManager;
/** @file */
@@ -138,8 +140,10 @@ class API_EXPORT SQLiteStudio : public QObject
QString getUserManualPage() const;
QString getSqliteDocsPage() const;
+#ifdef PORTABLE_CONFIG
UpdateManager* getUpdateManager() const;
void setUpdateManager(UpdateManager* value);
+#endif
bool getImmediateQuit() const;
void setImmediateQuit(bool value);
@@ -200,7 +204,9 @@ class API_EXPORT SQLiteStudio : public QObject
ImportManager* importManager = nullptr;
PopulateManager* populateManager = nullptr;
BugReporter* bugReporter = nullptr;
+#ifdef PORTABLE_CONFIG
UpdateManager* updateManager = nullptr;
+#endif
ExtraLicenseManager* extraLicenseManager = nullptr;
QString currentLang;
QStringList initialTranslationFiles;
diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
index 973402a..97e1fb3 100644
--- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
@@ -485,6 +485,15 @@ void TableModifier::handleView(SqliteCreateViewPtr view)
return;
}
+ view->select->rebuildTokens();
+ QString originalSelect = view->select->tokens.detokenize();
+
+ newSelect->rebuildTokens();
+ QString newSelectStr = newSelect->tokens.detokenize();
+
+ if (originalSelect == newSelectStr)
+ return;
+
delete view->select;
view->select = newSelect;
view->select->setParent(view.data());
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
index 46425fc..7d61000 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
@@ -147,30 +147,30 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation type="unfinished"></translation>
</message>
@@ -427,36 +427,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -464,33 +464,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
@@ -568,7 +568,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -750,12 +750,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -769,8 +769,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
</message>
@@ -910,43 +910,43 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
@@ -1008,7 +1008,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
@@ -1083,199 +1083,199 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
index 9545030..054d1dc 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
@@ -147,30 +147,30 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation type="unfinished"></translation>
</message>
@@ -427,36 +427,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -464,33 +464,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
@@ -568,7 +568,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -750,12 +750,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -769,8 +769,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
</message>
@@ -910,43 +910,43 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
@@ -1008,7 +1008,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
@@ -1083,199 +1083,199 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
index 6e53771..2931eff 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
@@ -147,30 +147,30 @@
<translation>Impossible d&apos;ajouter une base de données %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation>La base de données %1 ne peut ëtre mise à jour à cause de l&apos;erreur: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation>Le fichier de la base de données n&apos;existe pas.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation>Aucun plugin supporté chargé.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation>La base de données ne peut être initialisée.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation>Aucun pilote de base de données approprié trouvé.</translation>
</message>
@@ -428,36 +428,36 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<translation>Impossible d&apos;enregistrer la transaction d&apos;import de données: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation>La table %1 a moins de colonnes que de données à importer. Les colonnes supplèmentaires seront ignorées.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation>La table %1 a plus de colonnes que de colonnes de données à importer. Certaines colonnes de la table seront vides.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation>Impossible de créer la table d&apos;import: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation>Erreur lors de l&apos;import des données: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Transaction interrompue.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -465,33 +465,33 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation>Chargement impossible du plugin %1 celui-ci est en conflit avec le plugin %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation>Chargement impossible du plugin %1, les dépendances n&apos;ont pa été chargées: %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation>Chargement impossible du plugin %1, Détails de l&apos;erreur: %2</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation>Chargement impossible du plugin %1 (erreur à initialisation du plugin).</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation>min %1</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation>max %1</translation>
@@ -569,7 +569,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation>Table &apos;%1&apos; remplie avec succès.</translation>
</message>
@@ -751,12 +751,12 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<translation>Impossible d&apos;initialiser la transaction pour remplir la table.Détails de l&apos;erreur %1</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation>Erreur lors du remplissage de la table: %1</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation>Impossible d&apos;enregistrer la transaction après le remplissage de la table. Erreur %1</translation>
</message>
@@ -770,8 +770,8 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<translation>Impossible d&apos;ouvrir la base de données: %1</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation>Terminé ou aucune ligne valide.</translation>
</message>
@@ -912,43 +912,43 @@ Détails erreur: %2</translation>
<translation>Impossible d&apos;initialiser le fichier de configuration. Aucune modification et les requêtes seront perdues après redémarrage. Essayez d&apos;initialiser le fichier avec cette localisation: %1.</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation>Objectif général</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation>Support base de données</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation>Format code</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation>Langages script</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation>Export</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation>Import</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation>Peuplement de la table</translation>
@@ -1015,7 +1015,7 @@ La vue restera telque.</translation>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation>Exécution interrompue.</translation>
</message>
@@ -1090,201 +1090,201 @@ La vue restera telque.</translation>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation>Une erreur est apparue lors du contrôle pour la mise à jour:%1.
</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation>Impossible de vérifier la mise à jour, car le serveur a répondu avec un message invalide. Il est possible d&apos;ignorer le warning.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation>Erreur lors de la lecture de mise des méta données: %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation>Impossibles de télécharger les mises à jour, car le serveur répond avec un format de message invalide. Vous pover essayer plus tard ou télécharger et mettre à jour manuellement. Voir &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation>Impossible de créer un répertoire temporaire pour télécharger la mise à jour. Mise à jour abandonnée.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation>Il n&apos;y a aucune mise à jour à télécharger. Mise à jour abandonnée.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation>Téléchargement: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation>Impossible de déterminer le fichier de mise à jour URL: %1.Mise à jour abandonnée.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation>Erreur à l&apos;ouverture du fichier %1 pour l&apos;écriture: %2. Mise à jour abandonnée.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation>Installation des mises jour.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation>Impossible de copier le répertoire de l&apos;application courante dans %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation>Impossible de créer le répertoire: %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation>Impossible de renommer le répertoire %1 en %2. Détails: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation>Impossible de renommer le répertoire %1 en %2.Détails: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation>Impossible de déplacer le répertoire %1 vers %2 d&apos;où l&apos;impossibilité de restaurer le répertoire original. SQLiteStudio est maintenant localisé: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation>Impossible de renommer le répertoire %1 en %2, retour vers la version originale SQLiteStudio.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation>Impossible d&apos;extraire le composant %1 dans le répertoire %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation>Impossible d&apos;élever les autorisations pour lancer la mise à jour en tantque root. Bloqué: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation>Impossible de finaliser la mis à jour en tant que root: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation>Impossible de finaliser la mis à jour en tant que admin: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation>Impossible de créer un répertoire temporaire pour la mise à jour.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation>impossible de créer le fichier du scripte de mise à jour.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation>Mise à jour suspendue.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation>Impossible de finaliser la mis à jour en tant qu&apos;administrateur.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation>Impossible de finaliser la mis à jour en tant qu&apos;administrateur. Délai d&apos;attente de lancement dépassé.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation>Impossible de finaliser la mis à jour en tant qu&apos;administrateur. Délai d&apos;attente d&apos;opération dépassé.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation>Impossible de nettoyer le répertoire temporaire %1. Vous pouver le supprimer manuellement plutard.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation>Impossible de lancer la nouvelle version afin de continuer la mise à jour.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation>Installation impossible un paquet n&apos;est pas au format tar.zg: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant déplacé dans le répertoire: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation>Installation impossible, un paquet est manquant: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé dans le répertoire %2: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé dans le répertoire: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation>Impossible de renommer le répertoire %1 en %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation>Impossible de supprimer le répertoire %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation>Erreur d&apos;exécution de la commande de mise à jour: %1
Message d&apos;erreur: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation>Erreur lors du téléchargement de la mise à jour: %1. Mise à jour abandonnée.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
index 7c061e5..85cfca2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
@@ -147,30 +147,30 @@
<translation>Nie udało się dodać bazę danych %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation>Nie udało się zaktualizować baza danych %1 z powodu błędu: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation>Plik bazy danych nie istnieje.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation>Nie załadowano obsługującej wtyczki.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation>Nie udało się zainicjalizować bazy danych.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation>Nie znaleziono odpowiedniej wtyczki sterownika.</translation>
</message>
@@ -436,36 +436,36 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<translation>Nie udało się zatwierdzić transakcji w celu zaimportowania danych: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation>Tabela &apos;%1&apos; ma mniej kolumn, niż jest kolumn w danych do importu. Nadmiarowe kolumny zostaną zignorowane.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation>Tabela &apos;%1&apos; ma więcej kolumn, niż jest kolumn w danych do importu. Część kolumn w tabeli będzie pozostawiona pusta.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation>Nie udało się stworzyć tabeli do zaimportowania: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation>Błąd podczas importowania danych: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Przerwano.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation>Nie udało się zaimportować wiersza danych numer %1. Wiersz ten został zignorowany. Szczegóły problemu: %2</translation>
</message>
@@ -473,33 +473,33 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation>Nie udało się załadować wtyczki %1, ponieważ jest ona w konflikcie z wtyczką %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation>Nie udało się załadować wtyczki %1, ponieważ jej zależność nie została załadowana: %2</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation>Nie udało się załadować wtyczki %1. Szczegóły błędu: %2</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation>Nie udało się załadować wtyczki %1 (błąd podczas inicjalizacji wtyczki).</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation>min: %1</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation>maks: %1</translation>
@@ -577,7 +577,7 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation>Zaludnianie tabeli &apos;%1&apos; przebiegło pomyślnie.</translation>
</message>
@@ -759,12 +759,12 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<translation>Nie udało się rozpocząć transakcji w celu zaludnienia tabeli. Szczegóły błędu: %1</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation>Błąd podczas zaludniania tabeli: %2</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation>Nie udało się zatwierdzić transakcji po zaludnieniu tabeli. Szczegóły błędy: %1</translation>
</message>
@@ -907,43 +907,43 @@ Szczegóły błędu: %2</translation>
<translation>Nie udało się zainicjalizować pliku konfiguracyjnego. Jakiekolwiek zmiany w konfiguracji i historia zapytań będą utracone po zrestartowaniu aplikacji. Próbowano zainicjalizować plik konfiguracyjny w następujących lokalizacjach: %1.</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation>Ogólne</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation>Wsparcie baz danych</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation>Formatowanie kodu</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation>Języki skryptowe</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation>Eksportowanie</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation>Importowanie</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation>Zaludnianie tabel</translation>
@@ -1018,8 +1018,8 @@ Widok pozostanie nienaruszony.</translation>
<translation>Nie udało się zamknąć bazy danych: %1</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation>Wyniki zapytania są nieaktualne, lub nie ma dostępnych wierszy.</translation>
</message>
@@ -1034,7 +1034,7 @@ Widok pozostanie nienaruszony.</translation>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation>Wykonywanie przerwane.</translation>
</message>
@@ -1109,202 +1109,202 @@ Widok pozostanie nienaruszony.</translation>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation>Wystąpił błąd podczas sprawdzania aktualizacji: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation>Nie udało się sprawdzić aktualizacji, ponieważ serwer odpowiedział wiadomością w niepoprawnym formacie. Możesz spokojnie zignorować tą informację.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation>Wystąpił błąd podczas odczytu metadanych aktualizacji: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation>Nie udało się ściągnąć aktualizacji, ponieważ serwer odpowiedział wiadomością w niepoprawnym formacie. Możesz spróbować jeszcze raz później, lub ściągnąć i stainstalować aktualizację ręcznie. Szczegóły: &lt;a href=&quot;%1&quot;&gt;Podręcznik użytkownika&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation>Nie udało się stworzyć katalogu tymczasowego w celu pobrania aktualizacji. Aktualizacja została przerwana.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation>Nie znaleziono aktualizacji do pobrania. Aktualizacja przerwana.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation>Pobieranie: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation>Nie udało się określić nazwy pliku z URL aktualizacji: %1. Aktualizacja przerwana.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do zapisu: %2. Aktualizacja przerwana.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation>Instalowanie aktualizacji.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation>Nie udało się skopiować bieżącego katalogu aplikacji do katalogu %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation>Nie udało się stworzyć katalogu %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation>Nie udało się zmienić nazwy katalogu %1 na %2.
Szczegóły: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation>Nie można zmienić nazwy katalogu %1 na %2.
Szczegóły: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation>Nie udało się przenieść katalogu %1 do %2, oraz nie udało się przywrócić originalnego katalog, więc originalny katalog SQLiteStudio jest mieści się teraz w: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation>Nie udało się zmienić nazwy katalogu %1 na %2. Przywrócono originalną wersję SQLiteStudio.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation>Nie udało się rozpakować komponentu %1 do katalogu %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation>Nie udało się znaleźć narzędzia do podnoszenia uprawnień aplikacji, aby uruchomić aktualizację jako administrator. Szukano następujących: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation>Nie udało się wykonać ostatnich kroków jako administrator: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation>Nie udało się wykonać ostatnich kroków jako administrator: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation>Nie można stworzyć tymczasowego katalogu dla aktualizacji.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation>Nie można utworzyć skryptu aktualizacji.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation>Aktualizacja wycofana.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation>Nie udało się wykonać ostatich kroków aktualizacji jako administrator.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation>Nie udało się wykonać ostatich kroków aktualizacji jako administrator. Przekroczono limit czasu oczekiwania.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation>Nie udało się wykonać ostatich kroków aktualizacji jako administrator. Przekroczono limit czasu oczekiwania.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation>Nie udało się wyczyścić katalogu tymczasowego %1. Możesz go usunąć ręcznie w dowolnym momencie.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation>Nie udało się uruchomić nowej wersji w celu kontynuowania aktualizacji.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation>Paczka nie jest w formacie tar.gz, nie można zainstalować: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation>Paczka %1 nie może być zainstalowana, ponieważ nie można przenieść jej do katalogu: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation>Paczka %1 nie może być zainstalowana, ponieważ nie można jej rozpakować: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation>Paczka nie jest w formacie zip, nie można zainstalować: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation>Paczka %1 nie może być zainstalowana, ponieważ nie można jej rozpakować do katalogu %2: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation>Paczka %1 nie może być zainstalowana, ponieważ nie można jej rozpakować do katalogu %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation>Nie udało się zmienić nazwy katalogu %1 na %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation>Nie udało się skasować katalogu %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation>Błąd podczas wykonywania polecenia aktualizacji: %1
Treść błędu: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation>Wystąpił błąd podczas pobierania aktualizacji: %1. Aktualizacja przerwana.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
index d22af44..64f66a5 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
@@ -147,30 +147,30 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation type="unfinished"></translation>
</message>
@@ -427,36 +427,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -464,33 +464,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
@@ -568,7 +568,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -750,12 +750,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -769,8 +769,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
</message>
@@ -910,43 +910,43 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
@@ -1008,7 +1008,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
@@ -1083,199 +1083,199 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
index ca7fc68..8bbab69 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
@@ -147,31 +147,31 @@
<translation>Не удалось добавить базу данных %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation>Невозможно обновить базу данных %1 из-за ошибки: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation>Файл базы данных не существует.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translatorcomment>Unclear error string. Checking the source didn&apos;t help.</translatorcomment>
<translation>Модуль поддержки не загружен.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation>Невозможно инициализировать базу данных.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation>Не найден подходящий драйвер базы данных.</translation>
</message>
@@ -429,36 +429,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Невозможно завершить транзакцию для импортированных данных: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation>В таблице &apos;%1&apos; столбцов меньше, чем в импортируемых данных. Лишние столбцы будут проигнорированы.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation>В таблице &apos;%1&apos; столбцов больше, чем в импортируемых данных. Недостающие столбцы будут оставлены пустыми.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation>Невозможно создать таблицу для импорта: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation>Ошибка при импорте данных: %1</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation>Прервано.</translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation>Невозможно импортировать строку данных № %1. Строка пропущена. Подробности проблемы: %2</translation>
</message>
@@ -466,33 +466,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation>Невозможно загрузить модуль %1, так как он конфликтует с модулем %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation>Невозможно загрузить модуль %1, так как не загружен необходимый ему модуль: %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation>Невозможно загрузить модуль %1. Подробности ошибки: %2</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation>Невозможно загрузить модуль %1 (ошибка при инициализации модуля).</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation>минимальная: %1</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation>максимальная: %1</translation>
@@ -570,7 +570,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation>Таблица &apos;%1&apos; успешно заполнена.</translation>
</message>
@@ -752,12 +752,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Невозможно начать транзакцию для заполнения таблицы. Подробности ошибки: %1</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation>Ошибка при заполнении таблицы: %1</translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation>Невозможно завершить транзакцию после заполнения таблицы. Подробности ошибки: %1</translation>
</message>
@@ -771,8 +771,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Невозможно открыть базу данных: %1</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation>Результирующая выборка устарела или ни одна строка не доступна.</translation>
</message>
@@ -912,43 +912,43 @@ Error details: %2</source>
<translation>Невозможно инициализировать файл конфигурации. Любые изменения конфигурации и история запросов будут утеряны после перезапуска приложения. Попытки инициализации файла предпринимались в следующих местах: %1.</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation>Общего назначения</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation>Поддержка баз данных</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation>Форматирование кода</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation>Скриптовые языки</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation>Экспорт</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation>Импорт</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation>Заполнение таблиц</translation>
@@ -1015,7 +1015,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation>Выполнение прервано.</translation>
</message>
@@ -1090,202 +1090,202 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation>При проверке обновлений возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation>Невозможно проверить наличие обновлений, так как ответ сервера имеет некорректный формат. Это предупреждение можно проигнорировать.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation>При чтении метаданных об обновлениях возникла ошибка: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation>Невозможно загрузить обновления, так как ответ сервера имеет некорректный формат. Вы можете попробовать снова позже или скачать и установить обновления вручную. Подробности смотрите в &lt;a href=&quot;%1&quot;&gt;Руководстве пользователя&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation>Невозможно создать временный каталог для загрузки обновления. Обновление прервано.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation>Нет обновлений для загрузки. Обновление прервано.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation>Загрузка: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation>Невозможно определить имя файла из URL обновления. Обновление прервано.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation>Не удалось открыть файл %1 для записи: %2. Обновление прервано.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation>Установка обновлений.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation>Невозможно скопировать текущий каталог приложения в каталог %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation>Невозможно создать каталог %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation>Невозможно переименовать каталог %1 в %2.
Подробности: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation>Невозможно переименовать каталог %1 в %2.
Подробности: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation>Невозможно переместить каталог %1 в %2, а также не удалось восстановить оригинальный каталог, поэтому оригинальный каталог SQLiteStudio теперь расположен в: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation>Невозможно переименовать каталог %1 в %2. Восстановлена изначальная версия SQLiteStudio.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation>Невозможно распаковать компонент %1 в каталог %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation>Невозможно найти приложение повышения привилегий для запуска обновления с правами root. Были испробованы: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation>Невозможно выполнить финальные шаги обновления с правами root: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation>Невозможно выполнить финальные шаги обновления с правами администратора: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation>Невозможно создать временный каталог для установщика обновлений.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation>Невозможно создать файл скрипта обновления.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation>Обновление отменено.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation>Невозможно выполнить финальные шаги обновления с правами администратора.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation>Невозможно выполнить финальные шаги обновления с правами администратора. Превышен тайм-аут запуска программы обновления.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation>Невозможно выполнить финальные шаги обновления с правами администратора. Превышен тайм-аут операции программы обновления.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation>Невозможно очистить временный каталог %1. Вы можете удалить его вручную в любое время.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation>Невозможно запустить новую версию приложения для продолжения обновления.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation>Пакет не в формате tar.gz, установка невозможна: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation>Пакет %1 не может быть установлен, так как невозможно перенести его в каталог: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation>Пакет %1 не может быть установлен, так как его невозможно распаковать: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation>Пакет не в формате zip, установка невозможна: %1</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation>Пакет %1 не может быть установлен, так как его невозможно распаковать в каталог %2: %3</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation>Пакет %1 не может быть установлен, так как его невозможно распаковать в каталог: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation>Невозможно переименовать каталог %1 в %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation>Невозможно удалить каталог %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation>Ошибка при выполнении команды обновления: %1
Сообщение об ошибке: %2</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation>При загрузке обновлений произошла ошибка: %1. Обновление прервано.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm
index e857185..6dae38a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm
Binary files differ
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
index 74fb84c..e953940 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" language="sk_SK">
+<TS version="2.1" language="sk_SK">
<context>
<name>AbstractDb</name>
<message>
@@ -147,30 +147,30 @@
<translation>Nemôžem pridať databázu %1: %2</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation>Databázový súbor neexistuje.</translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation type="unfinished"></translation>
</message>
@@ -427,36 +427,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -464,33 +464,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation>Nemôžem načítať plugin %1, pretože je v konflikte s pluginom %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation>Nemôžem načítať plugin %1, pretože neboli načítané jeho závislosti %2.</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation>Nemôžem načítať plugin %1. Detaily chyby %2</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation>Nemôžem načítať plugin %1 (nastala chyba pri jeho inicializácii).</translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
@@ -568,7 +568,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation>Tabuľka %1 úspešne naplnená.</translation>
</message>
@@ -750,12 +750,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -769,8 +769,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
</message>
@@ -910,43 +910,43 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation>Skriptovacie jazyky</translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
@@ -1008,7 +1008,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
@@ -1084,199 +1084,199 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation>Nemôžem premenovať adresár %1na %2.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation>Nemôžem vymazať adresár %1.</translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
index 1c95d67..32cf3b8 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
@@ -147,30 +147,30 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
<translation type="unfinished"></translation>
</message>
@@ -427,36 +427,36 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="93"/>
+ <location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="98"/>
+ <location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="116"/>
+ <location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="162"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="125"/>
- <location filename="../importworker.cpp" line="169"/>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../importworker.cpp" line="157"/>
+ <location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
<translation type="unfinished"></translation>
</message>
@@ -464,33 +464,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PluginManagerImpl</name>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
<translation type="unfinished"></translation>
@@ -568,7 +568,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<context>
<name>PopulateManager</name>
<message>
- <location filename="../services/populatemanager.cpp" line="88"/>
+ <location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
<translation type="unfinished"></translation>
</message>
@@ -750,12 +750,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="56"/>
+ <location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../populateworker.cpp" line="65"/>
+ <location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -769,8 +769,8 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="796"/>
- <location filename="../db/abstractdb3.h" line="1092"/>
+ <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
</message>
@@ -910,43 +910,43 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="288"/>
+ <location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="289"/>
+ <location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="290"/>
+ <location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="291"/>
+ <location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="292"/>
+ <location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="293"/>
+ <location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqlitestudio.cpp" line="294"/>
+ <location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
<translation type="unfinished"></translation>
@@ -1008,7 +1008,7 @@ The view will remain as it is.</source>
<context>
<name>QueryExecutor</name>
<message>
- <location filename="../db/queryexecutor.cpp" line="132"/>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
<translation type="unfinished"></translation>
</message>
@@ -1083,199 +1083,199 @@ The view will remain as it is.</source>
<context>
<name>UpdateManager</name>
<message>
- <location filename="../services/updatemanager.cpp" line="129"/>
+ <location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="142"/>
+ <location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="173"/>
+ <location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="186"/>
+ <location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="193"/>
+ <location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="204"/>
+ <location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="239"/>
+ <location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="245"/>
+ <location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="253"/>
+ <location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="274"/>
+ <location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="285"/>
+ <location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="338"/>
+ <location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="346"/>
+ <location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="350"/>
+ <location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="358"/>
+ <location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="363"/>
+ <location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="442"/>
+ <location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="553"/>
+ <location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="560"/>
+ <location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
- <location filename="../services/updatemanager.cpp" line="598"/>
- <location filename="../services/updatemanager.cpp" line="611"/>
- <location filename="../services/updatemanager.cpp" line="621"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="589"/>
+ <location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="598"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="631"/>
+ <location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="659"/>
+ <location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="671"/>
+ <location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="677"/>
+ <location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="694"/>
+ <location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="730"/>
+ <location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="815"/>
+ <location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="822"/>
+ <location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="831"/>
+ <location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="850"/>
+ <location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="857"/>
+ <location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="871"/>
+ <location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="921"/>
- <location filename="../services/updatemanager.cpp" line="930"/>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="943"/>
+ <location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="959"/>
+ <location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/updatemanager.cpp" line="1026"/>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
<translation type="unfinished"></translation>
</message>